尽量每日更新学习记录(大概) (๑•̀ㅂ•́)و✧
数据类型
-
Java中的变量具有严格的数据类型区分。(强类型语言)
-
在Java语言中,任何一个值,都有其对应类型的变量。
-
基本数据类型:
1. 整数
-
注意: 第一位为符号位,0为正,1为负
-
二进制 (1字节)byte == 8bit
-
0000 0000
-
-2^7 ~ 2^7-1
-
-128~127
- 例如 十进制1 二进制 0000 0001
-
-
十六进制 (2字节)short
- 0000 0000 0000 0000
- -2^15 ~ 2^15-1
- -32768~32767
-
三十二进制 (4字节) int
- -2^31 ~ 2^31-1
- -2147483648~2147483647
-
六十四进制 (8字节)long
-
-2^63 ~ 2^63-1
-
-9223372036854775808~9223372036854775807
-
//举例 public class TestType{ public static void main(String[] args){ byte b = 128;//超出最大值127,会有损失,出错 short s = 32767;//最大值32767,可以通过 int i = 2147483648;//超出最大值,出错(int最大值2147483647) long a = 21477483647;//通过 long l = 2147483648;//依旧出错,因为整数默认的数据类型是int //此时若要为long类型赋值,应将值后面加上L(不超过int范围内不需要加) long x = 2147483648L; } }
- 扩展:
- 程序运行过程中,瞬时空间(局部变量表 -Slot 槽)
- 可存储byte、short、int、float、char、boolean…reference(对象),此处不包含double和long,单槽数据过大会分开捆绑存储(最大32位)
- 平常用int即可
- 程序运行过程中,瞬时空间(局部变量表 -Slot 槽)
2. 小数(浮点数)
-
float (4字节)单精度(精度相对低一些)
-
double (8字节)双精度(精度相对高一些)
//举例 double d = 12.34; float e = -34.56F;//上下表达意思一样 此处后加 F,下面有说明 System.out.println(d);//输出结果为 12.34 System.out.println(e);//输出结果为 -34.56
-
浮点型数值采用科学计数法表示:
- 2E3 等价于 2*10^3 (结果: 2000.0)
- 3E5 等价于 3*10^5 (结果: 300000.0)
double d = 2E4; float e = 2E4F;//上下表达意思一样 System.out.println(d); //输出结果为 20000.0 System.out.println(e); //输出结果为 20000.0 相同 double e = 2E-1;//输出结果为 0.2 ( 10^-1 )(10的 (-1) 次方,也就是十分之一) System.out.println(Float.MAX_VALUE); //查看最大值(同理可替换整数)无负数 System.out.println(Byte.MIN_VALUE); //查看最小值(同理可替换)无负数
-
注意:double为浮点数的默认类型,如需为float类型赋值,需在值后面加 F(或 f )
-
额外知识储备:float 32bit 1bit 符号位 8bits 指数位 23bits 尾数位
double 64bit 1bit 符号位 11bits 指数位 52bits尾数位
-
布尔(boolean)
-
boolean (1字节)true/false 仅可描述“真”或“假”
-
可直接赋值 true / false
boolean answer = false; System.out.println(answer);//输出为 false
-
也可赋值一个结果为 true / false 的表达式
boolean result = 3 > 2; System.out.println(result);//输出为 true
-
注意,Java中的 boolean 不能参与算术运算
-
-
-
字符(char) 全称:character
-
char (2字节)表示一个字符
-
英文对应ASCII码表 中文或其他对应Unicode字符集(万国码)
char c1 = 'A'; char c2 = 'B'; char c3 = 65; char c4 = '好'; char c5 = '\u0041';//通过十六进制数41在字符集中所对应的字符赋值 System.out.println(c1);//输出为 A System.out.println(c2);//输出为 B System.out.println(c3);//输出为 A System.out.println(c4);//输出为 好 System.out.println((int)c4);//输出为22909,为 “好” 字的 Unicode码,用int查看 System.out.println(c5);//输出为 A
-
赋值:char c1 = ‘A’; 或者 char c2 = 65; 或者 char c3 = ‘\u0041’;
-
-
-
引用数据类型
- 字符串 String 任何 " " 之间的字面值 Unicode字符序列
String str1 = "你好"; String str2 = "Hello"; String str3 = "分布式架构师"; String str4 = "Java Engineer";
扩展:
public class Test{
public static void main(String[] args){
//short 2Byte 16bit 有符号数 -2^15 ~ 2^15-1 -32768 ~ 32767
//char 2Byte 16bit 无符号数 0 ~ 2^16-1 0 ~ 65535
short s = 65;
char c = s;//此条错误,编译不通过,怀疑 s 可能是负数
char c = (char)s;//此条通过
System.out.println(c);
}
}