java的数据类型包括:基本数据类型 和 引用类型。
java的8种基本类型:
char,byte,short,int,long,float,double,boolean.
与此对应的,java提供了8种包装类型:
Character,Byte,Short,Integer,Long,Float,Double,Boolean
char,byte,short,int,long,float,double,boolean.
与此对应的,java提供了8种包装类型:
Character,Byte,Short,Integer,Long,Float,Double,Boolean
引用类型:实际就是类,例如:String,NumberFormat等。
这里谈一谈基本类型的空间地址分配问题:
java常量池技术
java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中。
java的基本数据类型都实现了常量池技术(Double类型除外),但维护的常量值范围:-128——127
也就是说:
int a=2;
integer b=new integer(1);
out.print(a==b);//输出值是true
===========================
int a=200;
integer b=new integer(200);
out.print(a==b);//输出值是false
实例:
public class TestEquals { public static void main(String[] args) { Integer n1 = new Integer(30); Integer n2 = new Integer(30); Integer n3 = new Integer(31); System.out.println(n1 == n2);//结果是false 两个不同的Integer对象,故其地址不同, System.out.println(n1 == n3);//那么不管是new Integer(30)还是new Integer(31) 结果都显示false System.out.println(n1.equals(n2));//结果是true 根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30,故equals比较后结果是true System.out.println(n1.equals(n3));//结果是false 因对象内容不一样,一个是30一个是31 } }