数据类型
数据类型用于定义变量,然后约束变量只能存储什么类型的数据
Java是一种强类型语言 定义后才能使用
数据类型分类:
- 基本数据类型(primitive type)
- 引用数据类型(reference type)
基本数据类型
基本数据类型:在jdk中已经定义好的一些类型,这些类型无法增加,描述的都是一些简单的数据。四类八种
- 整数类型:
byte 1个字节 -128~127
short 2个字节 -2^15 ~ 2^15-1
int 4个字节 -2^31 ~ 2^31-1
long 8个字节 -2^63 ~ 2^63-1 - 小数类型:
float 4个字节 >8个字节的long类型
double 8个字节 >4个字节的float类型 - 字符类型:
char 2个字节 0-65535 - 布尔类型:
boolean 未知大小 true\false
public class Demo {
public static void main(String[] args){
//八大基本数据类型
//整数
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //long类型要在数字后面加一个L
//小数
float num5 = 50.1F;//float类型要在数字后面加一个F
double num6 = 3.1415925;
//字符
char name = '中';
//字符串,String不是关键字
String namea = "中国";
//布尔值
boolean flag = true;
boolean flag1 = false;
}
}
public class Demo {
public static void main(String[] args){
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;//八进制0
int i3 = 0x10;//十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}
输出结果如下:

public class Demo {
public static void main(String[] args){
//float 有限 离散 舍入误差 大约 接近但不等于
//最好避免完全使用浮点数进行比较
//BigDecimal 数学工具类
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
float d1 = 123123123123123f;
float d2 = d1 + 1;
System.out.println(d1 == d2);
}
}
输出结果如下:

引用数据类型
引用数据类型:数据描述的不是数据本身,而是在描述真正数据的“地址”。一般都是使用一些自定义的类去描述,相当于各种基本类型的组合,形成一个复杂的类型
类型转换
存在不同类型的变量赋值给其他类型变量
隐式类型转换
- 当小范围的数据类型和大范围的数据类型在运算时,会先将小范围的数据类型的数据,提升为大范围的数据类型,再进行运算。运算的结果还是大范围的数据类型。
- 数据类型表示范围比较
byte<short=char<int<long<float<double - 注意事项:
byte、short、char、int在互相运算时,会直接统统提升为int类型,而非较大类型
int以及int以上的类型,在互相运算时,会提升为较大类型
强制类型转换
- 大范围的数据类型的数据,要转换成小范围的数据类型,就需要进行强制类型转换
- 转换格式:
(要转成的数据类型)需要转换的数据 - 注意事项:
boolean类型不能转换
转换的时候可能存在内存溢出,或者精度问题
操作比较大的数时注意溢出问题
public class Demo {
public static void main(String[] args){
//JDK7新特性,数字之间可以用下划线分隔
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
//操作较大数字的时候,注意溢出问题
long total = money * years;//-1474836480,计算的时候溢出了
long total2 = money * ((long)years);//先把一个数转换为Long,那么另一个数字也会隐式转换变成long类型
System.out.println(total);
System.out.println(total2);
}
}
输出结果如下:


浙公网安备 33010602011771号