1.Java数据类型四类八种,与C有部分区别。
四类:整型、浮点型、字符型、布尔型
八种:
| 数据类型 | 关键字 | 内存占用 | 范围 |
| 字节型 | byte | 1字节 | -128~127 |
| 短整型 | short | 2字节 | -32768~32767 |
| 整型 | int | 4字节 | -~-1 |
| 长整型 | long | 8字节 | -~-1 |
| 单精度浮点型 | fioat | 4字节 | ~ |
| 双精度浮点型 | double | 8字节 | ~ |
| 字符型 | char | 2字节 | 0~65535 |
| 布尔型 | boolean | 不确定 | ture & false |
注:C中无字节型byte,C中字符型char占1字节,而java占2字节,java的布尔类型只有ture和false,与数字无关。不论在16位系统上还是32位上,java的int都是4个字节,long都占8字节,且整型和浮点型都是带符号的。
2.变量
变量在使用前必须得设置初值,否则编译报错,不像C语言会输出随机值。
//定义时给初值 int a = 1; System.Out.println(a); //定义后,使用前给初值 int a; a = 1; System.Out.println(a); //所给变量的初值也不能超过其范围
定义长整型变量时,最好在变量赋值后加上L,以区别Int
int a = 10; long b = 12L; short c = 10; byte d = 10; //int的包装类型为Integer //long的包装类型为Long //short的包装类型为Short //字节的包装类型为Byte
在Java中,当参与运算的数据类型不一致时,会发生类型转换。类型转换分为两类:一是自动类型转换(隐式),二是强制类型转换(显式)。强制类型转换不一定成功,不相干的类型无法强转。
int a = 10; long b = 20L; b = a; //a,b都为整型,a的存储范围小,b大,把a赋给b时,编译器会自动将a提升为long,然后进行赋值。 a = b; //a小,b大,b赋值给a时编译器会报错,容易数据丢失。 //可以将b强制类型转换,但可能会精度丢失。 a = (int)b;
最后,数据在运算中,不同类型的数据会发生类型提升,由类型小的提升成大的,对于short,byte这类比4字节小的,会提升成4字节的int,值得注意,否则赋值时容易报错。



