java四类八种数据类型
八种基本数据类型分别是:int、short、float、double、long、boolean、byte、char;它们的封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。
Java的八种基本类型:(按字节来分)
boolean 布尔型 1个字节 8bit(8位)
byte 字节类型 1个字节
char 字符类型 2个字节
short 短整型 2个字节
int 整型 4个字节
float 浮点型(单精度)4个字节
long 长整型 8个字节
double 双精度类型 8个字节
Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
一个字节等于8位,1个字节等于256个数。2^8
一个英文字母或者阿拉伯数字占一个字节
一个汉字占2个字节
因为对基本数据类型封装之后,封装类有可以有方法和属性,然后就可以利用这些方法和属性来处理数据,比如Ingeter对象中有parseInt(String s),可以把字符串转换为int类型等。我们都知道有些类型的数据会有默认值,基本数据类型跟封装类型的默认值是不一样的,比如int i ,如果不赋值i默认为0;但是Integer j ,如果不赋值,则j 为null;因为封装类产生的是对象,而对象默认值为null。
tip:String 类型不是基本数据类型,它实际上是final修饰,所以也不可以继承。
String 类型的变量通常有两种赋值方式:一种直接赋值,例如String a = "hello world";另一种是用构造方法,例如 String b = new String ("hello world");那么这里的a 和b是否相等呢?他们又有什么不同 呢?
如果用=作比较,则它们不相等,因为“=”比较的是基本数据类型的值是否相等或者比较对象是否为同一个对象;而变量a和变量b指向的是两个不同的对象,为什么这么说呢?先来理解一下2个变量的赋值过程,对于表达式String a = "hello world",会先创建一个字符串对象“hello world”,而这个字符串实际上是放在字符串缓冲区中,然后把a指向这个对象;而对于String b = new String("hello world");则会创建两个对象一个是“hello world”这个放在字符串缓冲区中的,另一个是new 方法构造出来的对象new String() 这个对象,新对象中保存的是“hello world”对象罢了,这个对象是放在堆内存中,而b 指向这个new String ()对象,这显然是不同的两个对象,所以他们用 “=”比较的结果为false。
如果用equals()方法比较,这结果为true,因为equals()方法比较的是对象的内容,它们的内容都为“hello world”。