java数据类型
一. 数据类型
1.1 强类型语言
需要变量的使用严格符合个规定,所有的变量必须先定义后使用,
强类型语言包括Java、.net 、Python、C++等语言。
1.2 弱类型语言
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换
弱类型语言包括vb 、PHP、javascript等语言。
1.3 java数据类型分为两大类
1.3.1 基本数据类型
1.3.1.1 boolean类型(占一位其值只有true和false两个)
1.3.1.2 数值类型->整数类型,浮点类型,字符类型
整数类型->
byte(1字节,-128-127,-27-27-1),
short(2字节,-32768-32767,-215-215-1),
int(4字节,-2,147,483,648-2,147,483,647,-231-231-1),
long(8字节,-9,223,372,036,854,775,808-9,223,372,036,854,775,807,-263-263-1)
浮点类型->float(4字节),double(8字节)
字符类型->char(2字节)
1.3.2 引用数据类型
包括类,接口,数组
提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。
我们可以把类的类型为两种:
-
第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。
-
第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。
1.4 扩展问题
1.4.1 进制问题
int i = 10;
int i2 = 010;//8进制
int i3 = 0x10;//16进制
System.out.println(i);//10
System.out.println(i2);//8
System.out.println(i3);//16
1.4.2 浮点数问题
float f = 0.1f;//0.1
double d = 1.0 / 10; //0.1
System.out.println(f == d); //false
float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1 == d2);//true
1.4.3 字符问题
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int) c1);
System.out.println(c2);
System.out.println((int) c2);
//所有的字符本质还是数字
1.4.4 unicode编码
//编码unicode:97=a 65=A 2字节 66535 Excel 2^16=66536
char c3 = '\u0061';
System.out.println(c3);//a
1.4.5 字符转义
//转义字符
/**
* \' 单引号字符
* \\ 反斜杠字符
* \r 回车
* \n 换行
* \f 走纸换页
* \t 横向跳格
* \b 退格
*/
System.out.println("Hello\nWorld");
1.5 类型转换
java为强类型语言,所以要进行有些运算的时候需要用到类型转换
低---------------->高
byte,short,char-> int -> long-> float -> double
运算中不同的类型书序先化为同一类型,然后进行运算
- 不能对布尔值进行转换
- 不能把对象类型转换成不相干的类型
- 把高容量转换为低容量,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
1.5.1 强制类型转换
int i = 128;
byte b = (byte) i; //内存溢出
//强制转换(类型)变量名 高->低
System.out.println(i);//128
System.out.println(b);//-128
1.5.2 自动类型转换
int i2 = 128;
double b2 = i;
//自动转换 低->高
System.out.println(i2);//128
System.out.println(b2);//128.0
System.out.println("================");
char c = 'a';
int d = c + 1;
System.out.println(d);//98
System.out.println((char) d);//b
1.5.3 操作大数溢出问题
int money = 10_0000_0000;
int years = 20;
int total = money * years;//-1474836480 计算的时候溢出了
System.out.println(total);//-1474836480
long total2 = money * years; //默认是int,转换之前已经存在问题了?
long total3 = money * ((long) years); //先把一个数转换为Long
System.out.println(total3);//20000000000
浙公网安备 33010602011771号