数据类型、自动转换和强制转换

1 变量

  1. 变量表示内存中的一个存储区域

  2. 变量=变量名+值+数据类型

 

2 数据类型

image-20211207213525962

2.1整数

public static void main(String[] args) {
   int numFirst = 10;
   int numSecond = 010; // 八进制 0 (逢八进一)
   int numThird = 0x10; // 十六进制0x 0~9 A~F (逢十六进一)
   System.out.println(numFirst); //10
   System.out.println(numSecond); //8
   System.out.println(numThird); //16
}

2.2浮点数

不要用浮点数进行比较

public static void main(String[] args) {
   float f = 0.1f;
   double d = 1.0 / 10;
   System.out.println(f == d); //false

   float ff = 2312421421421421421421f;
   float ff2 = ff + 1;
   System.out.println(ff == ff2); // true
}

2.3字符

所有字符本质还是数字!!! 编码 Unicode 2字节 0 ~ 65536 U0000~UFFFF

public static void main(String[] args) {
   char c = '\u0061';
   System.out.println(c);  // 输出a
}

 

3 自动类型转换

image-20211202170125146

public static void main(String args[]){
   char b = 65;
   System.out.println(b);  //a
   System.out.println(b+1);  //66
   char c = 'c' + 1;
   //char c = b + 1;会报错,b是char类型变量,b+1是int型,'b'+1是char型
   System.out.println(c);  //d
   char d = '1';
   System.out.println(d);  //1
   char c1 = '男';
   char c2 = '女';
   //char c3 = c1 + c2;会报错,因为c1 + c2是int类型(两个字符相加后变为int),不能自动转换为int,需要强制转换
   char c3 = (char) (c1 + c2);
   System.out.println(c1+c2);  //52906
   System.out.println(c3);  //캪
}

运行结果:
A
66
d
1
52906

总结:

  • 输出char类型的变量,输出结果为字符

  • 含有char类型的变量相加结果为int,但是char字符直接加数字,还是char

    比如char b;

    b+1是int类型,而'b'+1是char类型

     

4 强制类型转换

将容量大的转换为容量小的数据类型,使用时在大容量数据类型前加(容量小的数据类型),可能溢出

 

posted @ 2021-12-14 15:28  codeSpiderMan  阅读(127)  评论(0)    收藏  举报