Java基础(一)

1. 九种基本数据类型的大小,以及他们的封装类。





Java基本数据类型,boolean, byte, char, short,  int, long, float, double, void. 相应的包装类Boolean, Byte, Character, Short, Integer, Long, Float, Double, Void。

既然提供了基本类型,为什么还要使用封装类呢?

某些情况下,数据必须作为对象出现,此时必须使用封装类来将简单类型封装成对象。

  • 比如,如果想使用List来保存数值,由于List中只能添加对象,因此我们需要将数据封装到封装类中再加入List。在JDK5.0以后可以自动封包,可以简写成list.add(1)的形式,但添加的数据依然是封装后的对象。
  • 另外,有些情况下,我们也会编写诸如func(Object o)的这种方法,它可以接受所有类型的对象数据,但对于简单数据类型,我们则必须使用封装类的对象。
  • 某些情况下,使用封装类使我们可以更加方便的操作数据。比如封装类具有一些基本类型不具备的方法,比如valueOf(), toString(), 以及方便的返回各种类型数据的方法,如Integer的shortValue(), longValue(), intValue()等。

基本数据类型与其对应的封装类由于本质的不同,具有一些区别:

  • 基本数据类型只能按值传递,而封装类按引用传递。
  • 基本类型在堆栈中创建;而对于对象类型,对象在堆中创建,对象的引用在堆栈中创建。基本类型由于在堆栈中,效率会比较高,但是可能会存在内存泄漏的问题。

2. Switch能否用string做参数?

      public static void main(String[] args) {
		String string = "BTW";
		switch (string) {
		case "BTW":
			System.out.println("By the way");
			break;
		case "WTF":
			System.out.println("What the fuck");
			break;
		default:
			System.out.println("default");
			break;
		}
	}
 	//Output:
	//By the way

(Code Talks)

JDK1.6的版本中,switch后面的括号里面只能放int类型的值,注意是只能放int类型,
于是byte,short,char类型的也可以。而不能放long型和String型。

问题来了,为什么switch叫的是int, 为什么byte,short,char类型也过来了?

首先,先来对基本数据类型的表示范围进行排序:
byte < short = char < int < long < float < double
聪明的你肯定看出来了些许端倪!
switch本来原则上来说应该接收一个int作为参数,由于 byte, short, char 都在int的表示范围之内,
可以隐式的转换为int类型,但是long远远超过了int的表示范围,不能进行隐式转换,所以long不能作为参数使用。
JDK1.7的版本中,switch中可以使用字串String,但仍不支持long型。


3. equals与==的区别。

简单来说, equals进行值比较,==进行的是内存比较。


4. Object有哪些公用方法?

http://docs.oracle.com/javase/8/docs/api/
这种事情还是看官方文档比较好,点个链接就到了。



5. Java的四种引用,强弱软虚,用到的场景。



你可能感兴趣的:(java,面试题)