Java的数据类型
数据类型简称数据元( Data Element),也称为数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元
分为基本类型和引用类型两种
1.基本类型
整型
-
byte占1个字节
-
short占2个字节
-
int占4个字节
-
long占8个字节 创建这个对象时需要给值后面加个L long number=12345678765432345L;
浮点型
- float占4个字节 创建这个对象时需要给值后面加个F float number=12.234F;
- double占8个字节
字符
单字符
char name=‘国’ 只能有一个字符
字符串 String不是基本类型 是类 属于引用类型
String name=“中国”
char使用’’ String使用""
boolean类型
只有true和false两个值 占一个位
boolean result=true;
boolean result=false;
2.引用类型
类
接口
数组
什么是字节
字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符
数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位
字节(Byte)=8位(bit)
1KB( Kilobyte,千字节)=1024B
1MB( Megabyte,兆字节)=1024KB
1GB( Gigabyte,吉字节,千兆)=1024MB
1TB( Trillionbyte,万亿字节,太字节)=1024GB
基本类型拓展
public class Demo {
public static void main(String[] args) {
//整型拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);
System.out.println(i2); //八进制0
System.out.println(i3); //十六进制0x 0-9 A-F 16
System.out.println("==============================================================");
//浮点数拓展: 银行的钱怎么表示
//BigDecimal 数学工具类
//float 有限 离散 舍入误差 大约 接近但是不等于
//double
//最好完全不要使用浮点数进行比较
float f=0.1F;
double d=1.0/10;
System.out.println(f==d);
float f1=123456763212345678F;
float f2=f1+1;
System.out.println(f1==f2);
System.out.println("==============================================================");
//字符拓展
char c='a';
char c1='国';
System.out.println(c);
System.out.println(c1);
System.out.println((int)c);
System.out.println((int)c1);
//所以字符的本质还是数字
System.out.println("中\n国");
//\n 换行
System.out.println("中\t国");
//\t 空格符
}
}
类型转换
类型转换级别的低高
- byte,short,char–>int–>long–>float–>double 从高到低需要强转
int i=12;
byte b= (byte) i;
System.out.println(b);
- 从低到高可以自动转换,不需要强转
char c='a';
float f=c;
System.out.println(f);
注意点:
- 不能对布尔类型进行转换
- 不能把对象类型转成不相干的类型
- 转换可能遇到内存溢出(长度过长),或者精度(不能精确值)问题
System.out.println((int)123456784322345678765432345678765); //超出了int的最大设置长度
System.out.println((int)39.9);//值为39 不能精确值 精度丢(diu)失
- 当值过大时,jdk7增加了新特性,可以使用下划线
long number=1244_5794_9694L;
- 当需要计算的值太大,容易出现溢出问题
int money=1234566546;
int year=20;
long result=(long)money*year; //当不使用强转时,由于溢出问题,会出现任意值,所以可以在计算完结果是给他强转
System.out.println(result); //要么就在计算的时候给他强转long result=money*(long)year;