Java第1课-数据类型
1. 八个基本数据类型
-
整数类型
byte num1 = 1;//byte占1个字节 short num2 = 2;//shot占2个字节 int num3 = 3;//int占4个字节 long num4 = 4L;//long占8个字节,数字后面要加L -
浮点类型
float num5 = 5F;//float占4个字节,数字后面要加F double num6 = 6;//double占8个字节 -
字符类型
char ch = 'A';//char占2个字节,定义的是字符,用''。 String str = "中国"; //String不是关键字而是类,定义的是字符串,用""。 -
布尔类型
boolean flag = true;//boolean占1位
2. 八进制、十进制、十六进制表示
int i1 = 010;//八进制
int i2 = 10;//十进制
int i3 = 0x10;//十六进制
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
输出结果:
8
10
16
3. 浮点数注意事项
避免浮点数进行比较!!!可用BigDecimal
double d = 0.1;
float f = 0.1f;
System.out.println( d == f );//输出结果为0,因为浮点数无法精确表示0.1
输出结果:
false
4. c++和java的字符类型占用内存不同
java字符编码是Unicode编码,2字节,可表示65536个字符
c语言字符编码是ASCII编码,1字节,可表示128个字符
char c1 = 'a';
char c2 = '国';
System.out.println( (int)c1 );
System.out.println( (int)c2 );
输出结果:
97
22269
5. 布尔值的判断语句
boolean FLAG = true;
if (FLAG == true){}
if (FLAG){}
//两个语句等价,但后者更简洁
6.类型转换
-
自动类型转换
(1) 自动类型转换的优先级
byte, short, char -> int -> long -> float -> double由低到高会触发自动类型转换,而由高到低必须人为地使用强制类型转换
int number1 = 1; double number2 = 1.0; System.out.println(number1); System.out.println(number1+number2);//int类型自动转换成了double类型输出结果:
1
2.0
char ch1 = 'a'; int g = 1; System.out.println(ch1); System.out.println(ch1+g);//char类型自动转换成了int类型输出结果:
a
98(2) 自动转换类型的时机
int money = 10_0000_0000;//运行时计算机会无视下划线_,它的存在意义是增加了程序的可读性 int year = 20; int total1 = money * year; long total2 = money * year; long total3 = money * (long) year; System.out.println(total1);//发生内存溢出 System.out.println(total2);//int类型*int类型,得到的还是int类型,然而此时已经发生了内存溢出。然后再把int类型的值赋给long类型的变量,得到的还是溢出的结果 System.out.println(total3);//int类型*long类型,得到的是long类型,因此不会发生内存溢出输出结果:
-1474836480
-1474836480
20000000000 -
强制类型转换
(1) 强制类型转换的使用
char ch1 = 'a'; int g = ch1 + 1; System.out.println(ch1 + 1); System.out.println((char)(ch1 + 1)); //char类型本来会自动转换成了int类型,但可通过强制类型转换来避免自动类型转换输出结果:
98
b(2) 强制类型转换可能导致内存溢出
int number3 = 128; byte number4 = (byte) number3; System.out.println(number3); System.out.println(number4);//出现了内存溢出输出结果:
128
-128(3) 强制类型转换可能导致精度损失
double number5 = 56.22; int number6 = (int)number5; System.out.println(number5); System.out.println(number6);//出现了精度损失输出结果:
56.22
56
7. 同时初始化多个变量
正确写法:
double a = 5.0, b = 7.0;//既声明和初始化了a,又声明和初始化了b
或
double a, b;//先声明a,b
a = b = 7;//在初始化a,b
错误写法:
double a = b = 7;//此为错误语句
此语句只声明了a但没有声明b,编译器从右到左扫描,要把7赋值给b,但b未被声明,所以错误

浙公网安备 33010602011771号