初识Java数据类型
什么是数据类型
不同的数据,内存空间不一样,为了节约内存及后续操作,JAVA对数据进行了分类
java中的两大数据类型:
基本数据类型: 8种,存的是数据值
引用数据类型: 存的是保存该数据的内存地址
1. 基本数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔类型
对于数值类型的基本类型的取值范围,无需强制记忆,因为它们的值都可以通过相应的类查询,超出范围报错时,改变定义的类型即可,需要注意默认类型和后缀.
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);//对应类.属性名查询
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
//MIN_VALUE属性常量,规范大写,提醒注意,不用更改,区别变量
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
byte:
- byte 数据类型是8位、有符号的,以二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默认值是 0;
- 例子:byte a = 100,byte b = -50
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- 默认值是 0;
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般整型变量,默认为 int 类型;
- 默认值是 0 ;
long:
-
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
-
最小值是 -9,223,372,036,854,775,808(-2^63);
-
最大值是 9,223,372,036,854,775,807(2^63 -1);
-
这种类型主要使用在需要比较大整数的系统上;
-
默认值是 0L;
l"容易与数字"1"混淆,不容易分辩。所以最好大写"L"。
例子:long a =6666666L
注意: 超出long范围的时候 ,java提供了处理超大数的类 BigInteger ,需新建对象 再赋值
float:
-
float 数据类型是单精度、32位;
-
float 在储存大型浮点数组的时候可节省内存空间;
-
默认值是 0.0f;
-
浮点数不能用来表示精确的值,如货币;
-
例子:float f1 = 3.14f;
1 / (0.0) = 无穷大; 0.0 代表无限接近0,不准确的数字
double:
- double 数据类型是双精度、64 位;
- 浮点数的默认类型,为double类型;
- 默认值是 0.0d;
boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 默认值是 false;
char:
- char类型是一个单一的 16 位 Unicode 字符;
- 最小值是 \u0000(即为0);
- 最大值是 \uffff(即为65,535);
- char 数据类型可以储存任何字符(含特殊字符);
- 例子:char c = ‘65’; //65 会自动调用ASCII码 进行转换,实际还是一个字符, 符号为单引号
1.1 数据类型的转换
数据类型转换必须满足如下规则:
总的来说 就是考虑存放空间 及 内容正负(如 short与char均16位,不能转)
1.不能对boolean类型(1位存放)进行类型转换
2.不能把对象类型转换成不相关类的对象
3.转换过程中可能导致溢出或损失精度
4.大转小类型时必须使用强制类型转换
5.浮点数转整数直接舍弃小数, int i = 7 / 3 ; 结果是2
自动类型转换
小转大: 做运算的时候 ,自动转为表达式中最高的类型进行计算 ,其接收结果必须是最大的类型,(隐式转换)
例 : float f1 = 1+ 3.14 + 5.2f; //会报错,右边结果为double型
char转高时,先转成ASCII码
强制类型转换
转换的类型之间,必须兼容
格式: float f1 = (float)(1+3.14) ;
2.引用数据类型
- java中,用new 关键字 声明的都是引用类型 ,变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。