Java面试之数据类型
Java中类型大体分为两类,一类是原始类型,一类是引用类型。另外,java为每个原始类型提供了封装类。它们之间有很多的不同。
如下:
1.声明时存储的内容不同。
声明一个原始类型时,就为类型本身声明了存储。而声明一个引用变量时,在堆栈中存放不是对象本身,而是对对象的引用。也就是存储的是指向对象存储所在的堆的某个区域的指针。
2.实例化数据时缺省值不同。
对象引用实例变量缺省值为null; 而原始类型的缺省值是与具体类型相关的“似零值”
3.调用方式不同。
原始数据类型不需要调用new,也不要创建对象。而引用类型需要调用new创建对象。
当然为了,程序员操作方便,java中为所有的原始数据类型提供了相对应的封装类。这些封装类使得这些我们可以像一般对象那样使用原始类型。
下面延伸几个知识点:
1.Int 和 integer的区别
2.==与equals的区别
这两个都都是用于判断是否相等用的。
判断是否相等在java中分为原始数据类型的比较,和引用类型的比较。
原始数据类型比较使用==就是直接比较他的值。这个没有多大问题。
问题在于,引用对象之间的比较。==和object对象中equals都是比较两个对象的引用对象是否相等。而不是对象本身。不同的是,equals方法可以覆盖,其他类继承object类时可以覆盖equals方法。使他比较的是对象本身。
(可以结合看看jdk的源代码!)
public class Test{ public static void main(String[] args){ //s1,s2分别位于堆中不同空间 String s1=new String("hello"); String s2=new String("hello"); System.out.println(s1==s2)//输出false//s3,s4位于池中同一空间 String s3="hello"; String s4="hello"; System.out.println(s3==s4);//输出true } }