Java初学者必备:基础知识点梳理

发表时间: 2021-06-08 19:25

本文适合,有一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修饰)