Java提供了两种变量类型:基本类型和引用类型:
- 基本数据类型:CPU可以直接进行运算的类型;
- 引用类型:除基本型外,都是引用类型,引用类型的变量类似于C语言的指针,它内部存储一个“地址”,指向某个对象在内存的位置。
一、Java定义的基本数据类型包括(8):
- 1. 整数类型(4):byte、short、int、long,Java只定义了带符号的整型,即最高位表示符号位(0为正,1为负);
- 2. 浮点数类型(2):float、double;
- 3. 字符类型(1):char;
- 4.布尔类型(1):boolean。
类型 | 长度 | 表示数据范围 | |
整数类型 | byte (1个计算机最小内存字节) | 8bit | -128~127 |
short | 2byte/16bit | -32768~32767 | |
int | 4byte/32bit | -2^31-1 ~ 2^31 (-2147483648 ~ 2147483647) | |
long | 8byte/64bit | -2^63-1 ~ 2^63 (-9223372036854775808 ~ 9223372036854775807) | |
浮点数类型 | float | 4byte/32bit | 最大为3.4*10^38 |
double | 8byte/64bit | 最大为1.79*10^308 | |
字符类型 | char | 2byte/16bit | 2个字节 |
布尔类型 | boolean | 没有规定,理论上仅需要1bit,但通常JVM会把boolean表示为4字节整数(byte) | true false |
二、整数类型
- Java仅定义了带符号整数类型,即:第一位为符号位!
- 关于long:long类型赋值在结尾处需添加“L”;
- 同一个数的不同进制的表示是完全相同的,例如:
15
=0xf
=0b1111
- 赋值可用下划线,以便识别、阅读。
举例:
public class testInt {
public static void main(String[] args){
int i = 2147483647;
int i2 = -2147483648;
int i3 = 2_000_000_000; //下划线写法,方便识别
int i4 = 0xff0000; //十六进制写法
int i5 = 0b1000000000; //二进制写法
long l = 9000000000000000000L; //long类型需要在结尾添加L
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
System.out.println(l);
}
}
输出:
三、浮点类型
- float类型赋值需在结尾处添加"l"(小写L),double类型不需要;
- 以科学计数法赋值,则输出也为科学计数法;
- 负数直接加“-”;
举例:
public class TestFloat {
public static void main(String[] args){
float f1 = 3.14f; //float类型数据结尾处需添加f
float f2 = 3.14e38f; //科学计数法输出
double d = 1.79e308; //科学计数法输出
double d2 = -1.79e308; //科学计数法输出
double d3 = 4.9e-324; //科学计数法输出
System.out.println(f1);
System.out.println(f2);
System.out.println(d);
System.out.println(d2);
System.out.println(d3);
}
}
输出:
四、布尔类型
- boolean:true/false。
举例:
public class TestBoolean {
public static void main(String[] args){
boolean b1 = true;
boolean b2 = false;
boolean isGreater = 5>3;
int age = 12;
boolean isAdult = age>=18;
System.out.println(b1);
System.out.println(b2);
System.out.println(isGreater);
System.out.println(isAdult);
}
}
输出:
五、字符类型
- char:表示一个字符,Java的char可表示ASCII字符也可表示Unicode字符;
- ★注意:char类型赋值用'单引号'!!!
举例:
public class TestChar {
public static void main(String[] args){
char a = 'A'; //ASCII字符
char zh = '中'; //Unicode字符
System.out.print(a);
System.out.print('\n');
System.out.print(zh);
}
}
输出: