java基本数据类型:四类八种
数值型:整型 byte short int long 非数值:字符型 char
浮点型 float double 布尔 boolean
基本数据类型 | byte(字节型) | short(短整型)) | int(整型) | long(长整型) | float(浮点型) | double(双精度) | char(字符型) | boolean(布尔型) |
占用字节 | 1 | 2 | 4 | 8 | 4 | 8 | 2 | 系统没有提供size方法 |
默认值 | 0 | 0 | 0 | 0.0l | 0.0f | 0.0 | /u0000(空格) | false |
封装器类 | Byte | Short | Integer | Long | Float | Double | Character | Boolean |
public class Calcsizof {
/**
* @param args
*/
private static void calSize() {
System.out.println(Integer: + Integer.SIZE/8); // 4
System.out.println(Short: + Short.SIZE/8); // 2
System.out.println(Long: + Long.SIZE/8); // 8
System.out.println(Byte: + Byte.SIZE/8); // 1
System.out.println(Character: + Character.SIZE/8); // 2
System.out.println(Float: + Float.SIZE/8); // 4
System.out.println(Double: + Double.SIZE/8); // 8
System.out.println(Boolean: + Boolean.toString(false)); //false
}
public static void main(String[] args) {
Calcsizof calcsizof= new Calcsizof();
Calcsizof.calSize();
}
}
一、整数型(byte、short、int、long)
其中byte、short、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可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。
在通常情况下,如果 Java 中出现了一个整数数字比如35,那么这个数字就是int型的;如果我们希望它是byte型的,可以在数据后加上大写的B:35B,表示它是byte型的;同样的35S表示short型,35L表示long型的;
表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”;
二、浮点型 float double
float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同。
单精度:float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)
双精度:double 1.797693e+308~ 4.9000000e-324
double型比float型存储范围更大,精度更高;
所以通常的浮点型的数据在不声明的情况下都是double型的;如果要表示一个数据是float型的,可以在数据后面加上“F”。
浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。
三、 字符型 char
char就有以下的初始化方式:
char c='c'; //字符,可以是汉字,因为是Unicode编码
char c=十进制数,八进制数,十六进制数等等; //可以用整数赋值
char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。
java是用unicode来表示字符,"中"这个中文字符的unicode就是2个字节。
String.getBytes(encoding)方法是获取指定编码的byte数组表示
通常gbk/gb2312是2个字节,utf-8是3个字节。
如果不指定encoding则取系统默认的encoding。
四、boolean(布尔型):取值为true、false
注意事项:
①String不是基本数据类型,是引用数据类型,它是java提供的一个类
②Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java5.0(1.5)开始,JAVA虚拟机(Java Virtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外,所有基本类型的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。
③基本类型的优势:数据存储相对简单,运算效率比较高
包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想
boolean(布尔型) |