本专题主要为观看韩顺平老师《零基础30天学会Java》课程笔记,同时也会阅读其他书籍、学习其他视频课程进行学习笔记总结。如有雷同,不是巧合!
⚠️注意事项:
- 变量相当于内存中一个数据存储空间的表示
- 当
+
左右两边有一方为字符串(而非字符),则进行拼接运算,例如:”hello”+3
结果为”hello3”
String
并非基本数据类型,而是类
一、数据类型
每种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(用字节进行衡量)。
整数类型
- 各整数类型有固定的范围和字段长度,不受具体OS的影响,以确保java程序的可移植性。
- 整型常量默认为
int
类型,声明long
型常量需要在其后加l
或L
,例如long a = 1L
。
浮点类型
-
浮点数在机器中的存放形式:浮点数=符号位+指数位+尾数位。
-
尾数部分可能丢失,造成精度损失。
-
Java的浮点型常量默认为
double
型,声明float
常量,需要在其后加f
或F
。double num = 1.1f
正确。 -
浮点型常量的两种表示形式:①十进制数形式:0.512,512.0f,.512;②科学计数法:5.12e2【=5.12*10^2】,5.12E-2。
-
通常情况下应该使用double类型(BigDecimal更好),因为精度更高。
-
浮点数除法陷阱,由于计算机认为浮点数8.1的精度可能为8.10000000…:
不要比较两个运算后的浮点数!应该用两个数差值的绝对值在某个范围内进行判断。
字符类型
-
字符常量用单引号引用,如果用双引号则表示字符串。
-
在Java中,
char
类型数据的本质是一个整数(存储字符对应的码值的二进制形式),在输出时输出Unicode码对应的字符。 -
char
类型可以进行运算。 -
字符和码值的对应关系由字符编码表决定。
-
常用的字符编码表:
观察方法:在java文件中以utf-8编码形式保存
abc张
,观察属性,文件大小为6字节。
布尔类型boolean
- 只允许取值
true
和false
。 - ⚠不可以使用0或非0的整数代替false和true!
二、基本数据类型转换
(1)自动类型转换
⭐当java程序进行赋值或者运算时,精度小的类型自动转化为精度大的类型。
数据类型按照精度大小排序(从小到大)👇
例如:int a = ‘c’; double b = 80;
- 当多种类型的数据进行混合运算时,系统首先自动将所有的数据转换为容量最大的数据类型再进行计算。
byte
,short
和char
类型之间不会进行自动转换。byte
,short
和char
类型数据之间可以进行计算,在计算时首先转换为int类型。例如:byte a1 = 1; byte a2 = 2;
a1+a2
结果为int
类型!boolean
不参与转换。
(2)强制类型转换
自动类型转换的逆过程,将精度大的数据类型转换为精度小的数据类型,使用时要加强制转换符()
,但可能造成精度降低或数据溢出。
- 强转符号只对最近的操作数有效。
- char类型可以保存int类型常量值,但不能保存变量值,需要强制类型转换。
三、基本数据类型和String类型的转换
-
基本数据类型→String:将基本数据类型的值
+ ””
-
String→基本数据类型:通过基本数据类型的包装类调用
parseXX
方法将字符串转换为字符的含义是获取字符串的第一个字符!使用字符串索引获得!
String s = “abc”; char c = s.charAt(0); // a
-
需要确保
String
类型转为有效的数据,例如不能将”hello”
转换成整数,编译不报错,会在执行时抛出异常:
-
练习题: