1.java8种基本数据类型和字节空间(一个字节占8位)
整数类型:byte (1字节),short(2字节),int(4个字节),long(8个字节)
浮点类型:float(4个字节),double(8个字节)
字符:char(2个字节)
布尔:boolean(1个字节)
2.各个类型的特点
int:
(1) 一个int类型的变量占4个字节(32位)最大表示范围为:-2^31~2^31-1,即
-2147483648~2147483647,如果在赋值时int类型不在这个范围内,则编译报错(通常用10进制整数,以0x/0X开头的表示16进制整数,以0开头的表示8进制整数)
(2) 两个整数相除时取整数部分,其余舍去。如 5/3 = 1
(3) 两个整数运算时,结果可能会超出整数的范围而溢出。
例:
int a = 2147483647;
int b = -10;
System.out.println(a-b);运行结果会报错,因为结果超过int的范围
long:
(1) 在表示整数时,如果int类型的范围不够用,可以使用long类型。一个long类型的变量占8个字节(64位)。最大表示范围为:-2^63~2^63-1,即:-9223372036854775808~9223372036854775807
(2) 如果要表示long直接量,需要以L或l结尾。
例:
long a = 2147483649; //编译报错
long b = 2147483647l; //正确
(3) 对于大整数的运算可以使用long类型。运算结果可能会超过int的范围
(4) long类型通过时间毫秒数储存日期和时间。例:JDK提供的System.currentTimeMills()方法,返回1970年1月1日零点到此时此刻所经历的毫秒数,其数据类型为long
long time = System.currentTimeMills();
double:
(1) 浮点类型就是小数类型。包括 float和double。
(2) double类型的精度时float类型的两倍。
(3) java中小数默认为double类型,如果要表示float类型的直接量,需要在后面加F或f.例
float a = 3.14;//编译报错 应为3.14f
(4) 浮点数的写法有两种:
通常写法,如:3.14,0.1
科学计数法,如:1.25E2,3.4e-2.其中1.25E2表示1.25乘以10的2次方
boolean:
boolean类型适用于逻辑运算,表示某个条件是否成立。只允许取值为true或false,true表示条件成立,false表示条件不成立。
char:
(1) 字符类型实事上是一个16位无符号整数,这个值是对应字符的编码。
(2) java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有字符都是16位。
(3) 字符直接量可以用类似 ‘国’的形式,也可以用16进制的形式 如: ‘u56fd’
char a = '国'; //a中存储的是‘国’的编码
char b = '\u56fd'; // '\u'表示Unicode编码,56fd为汉字‘国’
的16进制表示形式
(4) 对char类型变量赋值,可以采用三种方式
- 字符直接量:如,'A',变量中实际存储的是该字符的Unicode编码,一个char类型的变量只能存储一个字符。
- 整数直接量:范围在0~65535之间的整数。变量中实际储存的即该整数值,但表示的是该整数值对应的Unicode字符。
- Unicode形式:如 'u0041',Unicode字符的16进制形式
3.转义字符
转义字符 | 含义 |
---|---|
'n' | 换行符 |
'r' | 回车符 |
'\' | 表示斜杠() |
''' | 表示单引号(') |
'"' | 表示双引号(") |
char a = '\"';
System.out.println(a); // 结果为 "
4.基本类型间的转换
- 不同的基本类型可以相互转换,隐式类型转换:从小类型到大类型可以自动转换。类型的大小关系如下图
double>float>long>int>short>byte
int>char - 强制类型转换:从大类型到小类型需要强制转换符,(需要转换成的类型)变量,这样的转换可能造成精度损失或者溢出
int a = 10;
long b = a;//自动完成转换,将int转换为long
long c = 10000L*1000*1000*5;
int d = (int) c; //强转会产生溢出
double e = 3.141592653589;
float f = (float) e;//会造成精度损失
System.out.println(f); //3.1415927
- 多种基本类型参与的运算表达式中,运算结果会自动像较大类型进行转换
`
double a = 500-400.9;//整个表达式结果为double
double b = 80/90; //结果为0.0,左边都为int类型,只取整数部分0,将0赋值给double类型,转换为0.0
` - byte,short,char和int之间的转换
byte,short,char实际存储的都是整数,int直接量可以直接赋值给这三种类型,只要不超过其表示范围。
byte,short,char三种类型参与运算时,先一律转换为int再进行运算
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。