本文适合,有一sousou基础的小白,好好学习,然后心怀天下呀。
1 Java有几种基本类型的数据?分别占用多少字节?
2 Error和Exception的区别
Error表示系统级别的错误,与程序无关,我们无法通过修改代码而解决。
Exception表示需要捕捉或者需要程序进行处理的异常,它表示如果程序运行正常,就不会出现任何错误,可以通过BUGFIX进行处理。
3 Java中final关键字的用法
1.修饰类:表示不能被继承
2.修饰方法:表示不能被重写
3.修饰变量:表示变量只能一次赋值,不能被修改(常量)
4 Java中final、finally、finalize的区别
final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
finally表示try-catch异常处理语句结构中,表示总是执行的部分。
finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。允许回收此前未回收的内存垃圾。所有object都继承了 finalize()方法。
5 关键字 throws、throw、try、catch、finally 分别如何使用?
一般情况下是用 try 来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try 用来指定一块预防所有异常的程序;catch 子句紧跟在 try 块后面,用来指定你想要捕获的异常的类型;
throw 语句用来明确地抛出一个异常
throws 用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟)
finally 为确保一段代码不管发生什么异常状况都要被执行
阻断finally的唯一方法是System.exit();
6 hashCode()和equals()之间的关系
hashCode():获取哈希码,也称为散列码;实际上返回的是一个int整形。这个哈希码的作用是 确定该对象在哈希表中索引的位置。
equals():判断两个对象是否相等。
原则:
1.同一个对象(没有发生过修改)无论何时调用hashCode()得到的返回值必须一样。
2.hashCode()的返回值相等的对象不一定相等,通过hashCode()和equals()必须能唯一确定一个对象。
3.一旦重写了equals()函数(重写equals的时候还要注意要满足自反性、对称性、传递性、一致性),就必须重写hashCode()函数
综上所述:
如果两个对象的的hashCode()相等,那么他们的equals()不一定相等。
如果两个对象的equals()相等,那么他们的hashCode()必定相等。
7 Java的多态表现在哪里?
主要有两种表现形式:重载和重写
重载:是发生在同一个类中,具有相同的方法名,但是入参和返回值可以不同 (编译时的多态)
重写:发生在子类和父类中,具有相同的方法名、返回值和入参 (运行时的多态)
静态方法、final修饰的方法、本地方法 (native) 都不可以被重写
静态变量,也被称为类变量,它属于类,不属于类的任意一个对象
8 String str = new String("abc");new了几个对象。
两个或者一个
一个:如果常量池里已经有了"abc"这个字符串,那虚拟机就只会在堆内存中new一个String,并将常量池中的"abc"的地址指向你刚刚new的Sting对象。
两个:如果常量池里面没有“abc”这个字符串,那虚拟机就会在堆内存中new出一个String对象,还会在常量池中new一个abc字符串对象;
9 String类能否被继承?为什么?
不能,因为String类是被final修饰的类。final修饰的类不能被继承,final修饰的变量不能被修改。
10 String、StringBuffer、StringBuilder区别?
三者在执行速度上面的比较
StringBulider > StringBuffer > String
原因:
String:字符串常量(final修饰)
StringBuffer:字符串变量 (线程安全)
StringBulider:字符串变量 (线程不安全)
StringBuffer和StringBulider的比较
StringBuffer:线程安全
StringBulider:线程不安全(底层采用了synchronized修饰)