Java中数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型。
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)
基本数据类型
基本数据类型还可以分为四类八种(整数型、浮点型、字符型、布尔型)
整数型
故名思意,整数型就是用来存储整数的。整数型不光可以存储十进制数还可以存储二进制数、八进制数、十六进制数。
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
整数型可以分为字节类型(byte)、短整型(shot)、整形(int)、长整型(long)。不同类型的整型取值范围也不同。
- byte 的取值范围:-128~127(-2的7次方到2的7次方-1)
- short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)
- int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)
- long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
由上可以看出 byte、short 的取值范围比较小,而long的取值范围最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以也是我们使用的最多的一个整型类型。
public class Test{
public static void main(String[] args){
//定义整数类型的变量:
//给变量赋值的时候,值可以为不同进制的:
int num1 = 12 ;//默认情况下赋值就是十进制的情况
int num2 = 012;//前面加上0,这个值就是八进制的
int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
int num4 = 0b10;//前面加上0b或者0B,这个值就是二进制的
//定义byte类型的变量:
byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
//注意:超范围的赋值会报错。
short s = 30000;
int i = 1234;
//整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
//要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
long num5 = 12345678910L;
//注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
long num6 = 12;
}
}
浮点型
浮点型可以分为单精度(float)、双精度(double)。
单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
- double 类型比float 类型存储范围更大,精度更高。
- float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。
public class Test{
public static void main(String[] args){
float f2 = 0.3F;
double d2 = 0.3;
}
}
字符型
字符类型为(char)。Java中使用单引号来表示字符常量,字符型在内存中占2个字节。
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
public class Test{
public static void main(String[] args){
//定义字符类型的变量:
char ch1 = 'a';
System.out.println(ch1);
char ch2 = 'A';
System.out.println(ch2);
char ch3 = '4';
System.out.println(ch3);
char ch4 = '中';
System.out.println(ch4);
char ch5 = '?';
System.out.println(ch5);
//java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节。
char ch6 = ' ';
System.out.println(ch6);
}
}
布尔类型
布尔类型为(boolean)。布尔类型有两个常量值,true和false,在内存中占一位(不是一个字节)。
- boolean 类型用来判断逻辑条件,一般用于程序流程控制,不可以使用 0 或非 0 的整数替代 true 和 false
public class Test{
public static void main(String[] args){
//创建一个布尔类型的变量:
boolean flag1 = true;
System.out.println(flag1);
boolean flag2 = false;
System.out.println(flag2);
boolean flag3 = 5==9;
System.out.println(flag3);
boolean flag4 = 5<9;
System.out.println(flag4);
}
}
基本数据类型的类型转换
自动类型转换由低到高
byte,short,char—> int —> long—> float —> double
- 不能对boolean类型进行类型转换。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度,
引用数据类型
Java引用类型的变量类似于C/C++的指针,引用类型指向一个对象,指向对象的变量是引用变量。
一个引用变量可以用来引用任何与之兼容的类型。
Java中的String是一个类,在String类中,定义了一个不可变的字符数组。String类型可以存一长串的字符(字符串)。
public class Test{
public static void main(String[] args){
//创建字符串(字符串可以存连续的字符)
String s1 = "aa123bb";
}
}