学习材料声明
所有知识点都来自互联网,进行总结和梳理,侵权必删。
引用来源:互联网1;互联网2
时间分布
日期 | 内容 |
---|---|
2023年9月7日 | 复习至点击跳转 |
2023年9月8日 | 复习至点击跳转 |
Java的两大数据类型:内置数据类型和引用数据类型
内置数据类型
- 六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
- 数字类型:byte、short、int、long、double、float
- 字符类型:char
- 布尔类型:boolean
具体说明见
注意位数和表示范围。
引用数据类型
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如
Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。 对象、数组都是引用数据类型。 所有引用类型的默认值都是null。
一个引用变量可以用来引用任何与之兼容的类型。 例子:Site site = new Site(“Runoob”)。
----------------------------------------------------------------------------2023年9月7日----------------------------------------------------------
基本类型转换
- 除了布尔类型只能做逻辑运算,其他类型都可以做数值计算。
- 运算的最终结果 == 整个表达式中最高级的类型。
- 明确一点,表达始终出现 1 2 3这样的整数默认是int型。出现1.2 1.3这样的默认double类型。float 要用 f 或者 F;long要用 l或者L。
long l = 1 + 2L; // 与1L的类型一致
int i = 1 + 2L; // 编译不通过
float f = 1 + 2 + 1.2f; // 与1.2f的类型一致
double d = 1 + 2 + 1.2; // 与1.2的类型一致
- 自动类型转换:数字表示范围小的数据类型可以自动转换成范围大的数据类型 + 彼此兼容。
- 数值型数据的转换:byte→short→int→long→float→double。
- 字符型转换为整型:char→int。
// 编译不通过,编辑器报:Type mismatch: cannot convert from int to byte 。这里第一行和第二行是正确的,可以这样赋值。第三行,直接提到int做运算,导致无法转换。
byte s1 = 1;
byte s2 = 1;
byte s = s1 + s2;
// 编译不通过,编辑器报:Type mismatch: cannot convert from int to char 。
char s1 = 1;
char s2 = 1;
char s = s1 + s2;
// 编译不通过,编辑器报:Type mismatch: cannot convert from int to short 。
short s1 = 1;
short s2 = 1;
short s = s1 + s2;
这是因为Java中的数值运算最低要求是int类型,如果参与运算的变量类型都没有超过int类型,则它们都会被自动升级为int类型再进行运算,所以它们运算后的结果类型也是int类型。这种方式所得到结果是否超过了对应类型所表示的范围只能在运行时才能确定,在编译时是无法知晓的。而编译器会直接将byte s1 = 1 + 1编译成byte s1 = 2,这个表达式在编译器就可以确定是合法表达式,故可以通过编译。可以通过字节码来进行佐证。
- 大转小要强制。
----------------------------------------------------------------------------2023年9月8日----------------------------------------------------------