Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
-
数值类型
-
整数类型
- byte:1个字节(-128~127)2^7
- short:2个字节(-32768~32767)2^15
- int:4个字节(-2147483648~2147483647)2^31 21亿
- long :8个字节(-9223372036854775808~9223372036854775807)2^63
-
浮点类型
- float :4个字节
- double :8个字节
-
字符类型
- char:2个字节
-
-
boolean类型
1个位bit(只有true和false两个值)
//整数
byte num1=10;
short num2=20;
int num3=30;
long num4=30L;//long类型要在数字后加个 L
//小数(浮点数)
float num5=50.1F;//float类型要在数字后面加个F
double num6=3.141592653589793238462643
//字符
char name='中';
//字符串:String不是关键字,是一个类
String name="Hello World"
//布尔值:
boolean flag=true;
基础:
- 位(bit):计算机内部数据存储的最小单位,如11001100:每一个二进制数字(0或1)占1位
- 字节(byte):计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B(byte,字节)=8 bit(位)
- 字符:是指计算机中使用的字母、数字、和符号
1 bit表示1位
1 byte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
拓展:
//整数拓展: 二进制0b 八进制0 十六进制0x 十进制
int i=10;
int i=0b10;
int i2=010; //八进制0
int i3=0x10;//十六进制0x
System.out.println(i);//10
System.out.println(i1);//2
System.out.println(i2);//8
System.out.println(i3);//16
//浮点数拓展
float f=0.1f; //0.1
double d=1.0/10;//0.1
System.out.println(f);
System.out.println(d);
System.out.println(f==d);
float f1=22222222222222f;
float f2=f1+1;
System.out.println(f1==f2); //输出true
char c1='a';
char c2='中';
System.out.println(c1 +" " + (int)c1); //强制转换 a 97
System.out.println(c2 +" " + (int)c2); //强制转换 中 20013
//所有字符本质还是数字
//Unicode编码表 2字节 0--65536
//Unicode编码 从 U0000--UFFFF
char c3='u0061';
System.out.println(c3);//输出: a
boolean flag=true;
if(flag==true){ } //新手
if(flag){ } //老手
//Less is More! 代码要精简易读
转义字符:
引用数据类型- 类
- 接口
- 数组
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
强制转换==强制转换==是由低到高
byte,short,cahr-->int-->long-->float-->double
(小数的优先级大于整数)
运算中,不同的数据类型先转化为同一类型,然后进行运算。
int i=128;
byte b=(byte)i; //内存溢出
System.out.println(i);//128 129 130
System.out.println(b);//-128 -127 -126
自动转换
自动转换是由高到底(会自动转换)
int i1=128;
double d=i1;
System.out.println(i1); //128
System.out.println(d); //128.0
char c='a';
int i2=c+1;
System.out.println((int)c);//97
System.out.println(i2);//98
System.out.println((char)i2);//b
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题!
//精度问题(直接省略小数点后的)
System.out.println((int)23.8); //23
System.out.println((int)-15.78f); //-15
溢出问题
//操作比较大的数的时候,注意溢出问题
//(jdk7新特性,数字之间可以用下划线分割
int money =10_0000_0000;
int year=20;
int total=money*year;//-1474836480,计算的时候溢出了
long total2=money*year;//默认是int,转换之前已经存在问题了?
long total3=(long)money*year;//先把一个树转换为long,表达式就会在计算前,把类型全部转为最高的类型,再去计算
System.out.println("========================");
System.out.println(total);//-1474836480
System.out.println(total2);
System.out.println(total3);
PS:
(本文为根据狂神视频学习,所做笔记。手敲出来方便日后复习)



