**
记录某次面试自己碰到不会的问题,后续持续更新面试遇到的题目,加强学习记忆。
**
-
java中使用public、protected、private修饰,以及不写修饰符(default)时的区别?
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4、如果不写修饰符(即default)表示friendly。
四个作用域的可见范围如下:
-
Collection和Collections的区别
1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
2、Collections 是一个包装类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。此类不能实例化,就像一个工具类。 -
final、finally、finalize的区别
1、final修饰类,表明该类不能被继承
2、final修饰方法,(1) 把方法锁定,以防止继承类对其进行更改。(2) 效率,在早期的java版本中,会将final方法转为内嵌调用。但若方法过于庞大,可能在性能上不会有多大提升。因此在最近版本中,不需要final方法进行这些优化了。
3、final修饰变量,当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。 -
float i = 3.4是否正确
不正确,应该写成float i = 3.4f或float i = (float)3.4
因为在java中,没写小数点的默认为int,有写小数点的默认为double,而double精度高于float精度,低精度可以自动向高精度转换,如int可自动转成long,但是高精度转低精度需要进行强制转换。 -
匿名类
匿名内部类(匿名类)是一种特殊的类,这种类没有名字。匿名内部类有以下特点:
1.匿名内部类必须继承一个父类,或实现一个接口,但最多只能实现一个接口。
2.匿名类由于没有名字,因而无法定义构造方法,编译程序会自动生成它的构造方法,并在其中自动调用其父类的构造方法。
3.在匿名类中可以定义实例变量、若干个实例初始化代码块和新的实例方法。Java虚拟机首先调用其父类的构造方法,然后按照实例变量和实例初始化代码块定义的先后次序依次进行初始化。
4.被匿名类访问的局部变量必须是final变量,Java8会自动使用final修饰匿名类要访问的局部变量。
5.匿名类可以访问外部类的所有成员。