访问权限有哪些
public: 公开的,所有的都可以访问
protected: 包访问权限,同包可以访问,子类可访问
default: 默认,什么都没有写的时候的权限,同包不可访问,子类可访问
private: 私有,只有自身可以访问
assert是什么,什么时候使用
assert 断言,通常用于调试,assert判断两个参数是否相同,一般会用来校验结果。
java内部类有哪些,有什么区别
- 成员内部类
public class Outer{
public class Inner {
}
}
不允许存在静态字段和静态方法,但是可以存在常量(即不允许单独使用static修饰字段,必需同时加上final)
可以访问外部类字段,外部类可以访问内部类字段
外部要使用创建内部类对象需要使用外部内对象来创建:
new Outer().new Inner();
- 静态内部类
public class Outer{
public static class Inner {
}
}
不可访问外部类非静态方法
构造方法调用:外部类名.内部类名 实例名 = new 外部类名.内部类名(参数)。
外部类可以访问内部类的字段,但是需要使用实例引用。
- 局部内部类
定义在某个区域内的内部类
只能在此区域内使用
可以使用区域内的局部变量,但是局部变量要加final,原因可以参考https://www.cnblogs.com/xh0102/p/5729381.html
- 匿名内部类
可以定义常量和普通字段,不能定义静态字段
可以定义代码块,不可以定义静态代码块
不能定义构造方法
不能定义静态方法
可以访问外部类的字段
外部类无法通过内部类的对象访问到内部类的字段和方法
Java中的位运算符有哪些
& : 同为1则1
| : 有一个为1则为1
~:1变0,0变1
^:相同则为0,不同则为1
>>: 右移,a >> b 相当于 a / 2^b
<<: 左移,a << b 相当于 a * 2^b
>>>: 无符号右移,与右移的区别是:>>>高位补0,而>>高位补符号位
java中a = a+b 和 a+=b有什么区别
+=可以自动向下转精度,但是a+b不能自动转精度,需要手动强转
override和overload的区别,overloaded方法可以改变返回值类型吗
override:子类覆盖父类的方法
overload:方法重载,可以改变返回值类型
java方法签名包括哪些内容
java语言层面方法签名:方法名,方法参数,参数顺序及类型
jvm面层方法签名:返回值类型,方法参数,参数顺序及类型
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
都不行
构造器Constructor是否可被override
不可以,但是可以被overload
如果try语句中return了,finally中的语句还会执行吗?
会,并且在return语句之前执行
两个对象值相同(x.equals(y) == true),是否可以有不同的hashCode
可以,java推荐equals方法返回true的两个对象hashCode要相同,但是毕竟是推荐,没有硬性要求
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
不能在long,float,double上,可以在String上,但是这是个语法糖
HashMap和Hashtable的区别
HashMap: 线程不安全,效率较好,支持key和value为null
Hashtable:线程安全,效率较差,不支持key或value为null
有哪些解决hash冲突的算法
再散列法:
网友评论