Java基础——面试自我总结
1、String类中常用方法==和equals区别
答:对于==和equals这两个都是用来比较判断是否相等,其中==用来判断两个变量的值是否相等,变量的值的类型分为基本数据类型和引用数据类型。对于==,基本数据类型是直接进行值比较,而对于引用数据类型来说是比较引用指向的内存的首地址。equals方法只有引用数据类型才有对于引用数据类型,其作用是判断两个对象是否相等,可以分为两个情况讨论,首先是对类中没有覆盖equals这个方法而是选择继承父类的方法则直接进行,另一种情况是对类中重写了equals方法直接对类中的属性进行比较。
2、Object类中的方法有哪些
3、Java八种基本数据类型有哪些
4、integer缓冲区是什么
答:Integer的缓存机制:为了节省内存和提高性能,Integer类在内部通过使用相同的对象引用实现缓存和重用,Integer类默认在-128 ~ 127 之间
5、String、StringBuffrer和StringBuilder的区别
相同点:在java中提供三个类String StringBuillder StringBuffer来表示和操作字符串,String、StringBuilder、StringBuffer都是被final修饰的类,都不能被继承
不同点:对于String来说,String是内容不可变的字符串,String底层使用了一个不可变的字符数组。每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String对象;对于StringBuffer来说是内容可变的字符串,底层使用的可变的字符数组;对于StringBuilder来说,是线程安全的效率低
6、Java中创建对象有几种方式
1、用new语句创建对象
2、运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法
3、调用对象的clone方法
4、运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法
7、反射获得字节码对象的三种方式
1、调用某个对象的getClass方法
Person p=new Person();
Class clazz=p.getClass();
2、调用某个类的class属性来获取该类对应的Class对象
Class clazz=Person.class;
3、使用Class类中的forName()静态方法 注:最安全、性能最好
Class clazz=Class.forName("类的全路径");
8、反射使用步骤有哪些
1、获取想要操作的类的Class对象,他是反射的核心,通过Class对象我们可以任意调用类的方法
2、调用Class类中的方法,既就是反射的使用阶段
3、使用反射API来操作这些信息