java面试题罗列

https://www.cnblogs.com/schiller-hu/p/10662429.html

1 --final------------------------------------------------------------------------------
final 成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误 
final 变量是只读的
final 申明的方法不可以被子类的方法重写
final 类通常功能是完整的,不能被继承
--------------------------------------------------------------------------------------
final、finally、finalize
try…catch…finally
finalize对象上的垃圾收集器调用 在 Object内中方法

2.--String、StringBuffer、StringBuilder------------------------------------
String 是 final 类,不能被继承
StringBuffer是线程安全的
StringBuilder 是非线程安全的,速度更快

3 --常见的异常--------------------------------------------------------------------
Exception、Error 是 Throwable 类的子类
OutOfMemoryError StackOverflowError ClassCastException IllegalArgumentException IndexOutOfBoundsException
NullPointerException NumberFormatExcepti on SecurityException UnsupportedOperationExcept ion

4 --HashMap 与 HashTable,HashSet比较--------------------------------
HashMap 非线程安全的可以接受为 null 的 key和value,速度更快
Hashtable 是线程安全的,比 HashMap 要慢
HashSet只保留值,并非键值对方式

5 ---volatile------------------------------------------------------------------------
变量是共享的,可以保证此变量对所有的线程的可见性

6---synchronized------------------------------------------------------------------
给一个方法或者一个代码块加锁的,同一时间最多只能一个线程访问它
synchronized(this|object) {}
synchronized(类.class) {}

7---Java基本数据类型----------------------------------------------------------
Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean

8---Math.round 四舍五入-------------------------------------------------------
Math.round(2.5f), ---print 3
Math.round(2.45f), ---print 2
Math.round(-2.40f),---print -2
Math.round(-2.50f),---print -2
Math.round(-2.51f),---print -3

9---用最有效率的方法计算2乘以8----------------------------------------------
2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。

10---重载(Overload)和重写(Override)的区别------------------------
重写:
发生在子类中,方法名字相同,参数相同,返回值相同
重载:
发生在同一个类中,方法名相同,参数不同,或返回值不同,

11---char能否存一个汉字-------------------------------------------------------
可以,char在java中占两个字节,而一个汉字也是两个字节,所以可以存汉字

12---修饰符 public,protected,default,private--------------------------------------------------------------------------


image.png

13---.String str=”aaa”,与String str=new String(“aaa”)一样吗?
第一种,创建的”aaa”是常量,jvm都将其分配在常量池中。
第二种创建的是一个对象,jvm将其值分配在堆内存中。

14.将下java中的math类有那些常用方法?
Pow():幂运算
Sqrt():平方根
Round():四舍五入
Abs():求绝对值
Random():生成一个0-1的随机数,包括0不包括1

15.如何将字符串反转?
stringbuffer 或者stringbuild 的reverse方法

16.异常的处理机制有几种?
异常捕捉:try…catch…finally,异常抛出:throws。

17..Try.catch.finally是必须要存在的吗?
Try块必须存在,catch和finally可以不存在,但不能同时不存在
try{}catch(Exception){}
try{}finally{}

18.Java中final、finally、finalize的区别

final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是对象销毁时调用的方法,相当于C++中的析构函数

19.Throw和Throws区别
Throw:

作用在方法内,表示抛出具体异常,由方法体内的语句处理。
具体向外抛出的动作,所以它抛出的是一个异常实体类。若执行了Throw一定是抛出了某种异常。
Throws:
作用在方法的声明上,表示如果抛出异常,则由该方法的调用者来进行异常处理。
主要的声明这个方法会抛出会抛出某种类型的异常,让它的使用者知道捕获异常的类型。
出现异常是一种可能性,但不一定会发生异常。
实例:

void testException(int a) throws IOException,{
try{
......
}catch(Exception1 e){
throw e;
}catch(Exception2 e){
System.out.println("出错了!");
}
if(a!=b)
throw new Exception3("自定义异常");
}

20.Error与Exception区别?
Exception表示的异常,异常可以通过app来捕捉,可以接受的。
Error表示的是系统错误,不能通过程序来进行错误处理。

21.除了使用new创建对象之外,还可以用什么方法创建对象?
Java反射 Class clz = Class.forName("com.entity.Book");//Book.java类名
new 对象效率会更高

22.JAVA 或与非运算符 与(&)、或(|)、异或(^)
a = 0000 1010
b = 0000 0110
&结果0000 0010

a = 0000 1010
b = 0000 0110
| 结果0000 1110

a = 0000 1010
b = 0000 0110
^结果0000 1100

23.JAVA中的几种基本数据类型是什么,各自占用多少字节?
浮点类型:float(4字节)、double(8个字)
整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
字符类型:char(2字节)
布尔类型:boolean(4字节)

24.泛型通配符extends与super的区别
T和T的父类都能接收
T或其子类型

25.Collection与Collections的区别是什么?

Collection是Java集合框架中的基本接口;

Collections是Java集合框架提供的一个工具类,其中包含了大量用于操作或返回集合的静态方法。

26.++i与i++的区别
++i:先赋值,后计算
i++:先计算,后赋值

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