1、在实际项目中,如果想要把数组中的内容打印出来,直接使用toString方法只会打印出数组的地址,因此需要使用Arrays的toString方法,可以从其内部实现中看出来,该方法支持入参可以是long,float,double,int,boolean,byte,object
型的数组。
2、StringBuilder是字符串缓冲区的意思
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 快,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
3、装箱:就是讲基本类型转换成包装类; 拆箱:包装类转换成基本类型。 //JDK1.5之后可以自动拆装箱
4、API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。 [1] 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
5.1)对于==,比较的是值是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
列题:String s1="hi"; String s2="hi";则 s1==s2为true,因为他们引用的是同一个人字符串,所用地址一样。若改为new String("hi");则为false;
6.Java中有八种基本类型,五种引用类型(类,接口,数组,枚举,标注)。 为什么要有基本类型和引用类型呢,是因为基本类型在栈里, 引用类型在堆里,栈空间小且连续,往往会被放在缓存。引用类型cache miss率高且要多一次解引用。对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高
7.字符串反转:可以使用StringBuffer或StringBuilder的reverse();
8、final和finally、finalize的区别:(1)final用于修饰属性、方法、类表示属性不可变,方法不可覆盖,类不能被继承
(2)finally用于作为异常处理的一部分,finally一定会被执行
(3)finalize是Object的一个方法,在垃圾收集器执行的时候回调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,需要注意的是回收动作一旦准备释放对象占用空间,首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才真正回收对象。
9、重载(Overload)和重写(Override)的区别
答:方法的重载和重写都是多态的方式,区别在于重载实现编译时的多态性,而重写是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型、个数或者两个都不同)则视为重载;重写发生在子类与父类之间,要求子类和父类有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类声明更多的异常(里氏代换原则)。重载对返回类型没有特殊要求,不能根据返回类型进行区分