(五) Java变量与数据类型
Java变量
- 需要先声明,再赋值
int a; int b=10;
Java 数据类型
- Java数据类型分为两大类:基本数据类型, 引用类型
基本数据类型
- 基本数据类型有8种, 其中6种数值型[
byte,short,int,long,float,double],char,boolean
整数类型
byte[1个字节], 存放一个数, 范围-128~127short[2个字节], -(\(2^{15}\)~\(2^{15}-1\)), -32768~32767int[4个字节],-(\(2^{31}\)~\(2^{31}-1\))long[8个字节], -(\(2^{63}\)~\(2^{63}-1\))
浮点(小数)类型
float[4个字节]double[8个字节]
字符型
char[2个字节], 存放单个字符 'a', 汉字'李', 汉字是两个字节,字母一个boolean[1个字节], 存放 true, false
整型细节
- Java程序中变量常声明为int型, 默认也是int, 比如一个9,默认为int
long = 1l; // 使用long必须加上l或L - bit: 计算机中的最小存储单位. byte: 计算机中基本存储单元, 1 byte = 8 bit
浮点数细节
-
Java的浮点型常量默认为double型, 声明float型常量, 须后加
f或Ffloat num = 1.1; // 这是错误的, 因为默认是double类型 double n2 = 1.2f; // 这个也是可以的 -
科学技术法形式
5.12e2[\(5.12\times10^2\)],5.12E-2[\(5.12/10^2\)] -
除法的精度问题
double num1 = 2.7; double num2 = 8.1/3; // 实际上第二个是输出2.69999999之类, 因为计算机默认8.1后面还有小数位,尽量不要用运算后的小数进行大小判断 if (Math.abs(num1-num2)){ // 可以用两个数的差值在某个范围来计算相等 }
字符型细节
-
字符底层也是Unicode码
char c1 = 'a'; char c2 = 97; char c = 26446; # 对应的是李, 这是李的Unicode码 System.out.println((int)c1); System.out.println('a'+10); # 先把'a'转成Unicode码, 然后再加10 // 两者是相等的 -
单引号''代表的是字符,双引号""代表的是字符串String, 注意不要用错了 -
字符和码值的对应关系
- ACSll编码表, 一个字节表示, 有128个字符, 实际上一个字节可以表示256个字符, 只用了128个
- Unicode编码表, 使用2个字节来表示字符, 字母和汉字统一都是占用2个字节, 能表达\(2^{16}\) 个符号
- utf-8编码表(可以认为是Unicode的一个改进, 是互联网上使用最广的编码), 大小可变的编码, 字母使用1个字节, 汉字3个字节
- gbk, 可以表示汉字, 字母使用1个字节, 汉字2个字节, 说明gbk表示的汉字没有utf-8表示的汉字多
布尔类型: boolean
- boolean类型只允许true或false, 无null
- boolean类型占一个字节
- 不能用0或者非0的整数代替false和true, 这点和c语言不同
boolean pass = true;
引用类型
强制类型转换
-
自动类型转换的逆过程, 讲容量大的数据类型转换为容量小的数据类型. 使用时要加上强制转换符
()int i = (int)1.9; // 输出1 -
基本数据类型和String类型的转换
int n1 = 100; float n2 = 4.5f; String s1 = n1 + ""; String s2 = n2 + ""; # 自动转为字符串类型了- 基本数据类型转String只需
+""即可 - String类型转基本数据类型, 通过基本类型的包装类调用
parseXX方法即可, Java里每个基本类型都对应一个包装类
String s5 = "100"; int num1 = Interger.parseInt(s5); - 基本数据类型转String只需
++i和i++的区别
- 前++: ++i先自增再赋值
- 后++: i++先赋值后自增
int j = 8;
int k= ++j; //等价于j=j+1;k=j;
int k= j++; //等价于k=j;j=j+1;

介绍Java的变量分类,数据类型范围
浙公网安备 33010602011771号