Demo05.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * @author WanJl
  3. * @version 1.0
  4. * @title Demo05
  5. * @description 基本数据类型的转换
  6. * @create 2026/7/13
  7. */
  8. public class Demo05 {
  9. public static void main(String[] args) {
  10. /*
  11. 自动转换
  12. 可以把表示范围小的类型的变量直接转换为表示范围大类型的变量,可以自动转换
  13. byte -> short -> int -> long -> float ->double
  14. */
  15. byte a=120;
  16. short b=a; //byte -> short
  17. int c=b; //short -> int
  18. long d=c; //int -> long
  19. float f=d; //long -> float
  20. double dd=f; //float ->double
  21. // 以上都可以自动转换,比如有一瓶 500ml 的水,倒进 1L的瓶子里,是完全可以装得下。
  22. /*
  23. 强制转换
  24. 表示范围大的类型的值,转换给表示范围小的类型的变量,就需要强制转换。
  25. 因为 转换的时候,可能会出现两种情况:
  26. |-1、能装得下:1L瓶 里面有300ml水,倒进 500ml的瓶子里。
  27. |-2、装不下:1L瓶 里面有600ml水,倒进 500ml的瓶子里。就会丢失数据
  28. 所以,强制类型转换的时候,有可能会丢失精度。
  29. 强制转换运算符
  30. 目标类型 变量名2=(目标类型)变量1;
  31. */
  32. double pi=3.94;
  33. int n=(int)pi; // double -> int 小数转整数,直接截断小数
  34. System.out.println(n); // n是3,会丢失精度,直接截断小数,不是四舍五入
  35. int n2=128;
  36. byte b2=(byte)n2; // int -> byte byte类型的最大值 127
  37. System.out.println(b2);
  38. /*
  39. 转换过程:
  40. 1、int 的 128(十进制) 转换为 32位二进制的128-->
  41. 0000 0000 0000 0000 0000 0000 1000 0000
  42. 2、转换成byte类型(8位)的二进制数,直接砍掉高位,从左边砍掉24位
  43. 1000 0000
  44. 注意:二进制数中,最左边的是最高位,也叫符号位,符号位为0,那么这个二进制数就是正数,如果是1,就是负数
  45. 3、把 8位二进制数 1000 0000 转换为十进制数 就是 -128
  46. */
  47. }
  48. }