1.作用域public、private、protected、以及不写时的区别
作用域 | 当前类 | 同一package | 子孙类 | 其他package |
---|---|---|---|---|
public | ||||
protected | x | |||
friendly | x | x | ||
private | x | x | x |
不写的时候默认为friendly
2.Static Nested Class 和 Inner Class 的不同
Nested Class
一般是C++
的说法,Inner Class
一般是Java
的说法。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class
)意味着:
- 创建一个static内部类的对象,不需要一个外部类对象
- 不能从一个static内部类的一个对象访问一个外部类对象
3.&和&&的区别
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
4.Collection和Collections的区别
Collection
是集合类的上级接口,继承它的接口主要有Set
和List
Collections
是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
5.什么时候会用到assert
assertion(断言)
是软件开发中一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion
就是在程序中的一条语句,它对一个boolean
表达式进行检查,一个正确程序必须保证这个boolean
表达式的值为true
;
如果该值为false
,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion
用于保证程序最基本、关键的正确性。assertion
检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion
检查通常是关闭的
6.String s=new String(“abc”)会创建几个String Object
两个,一个是字符串对象abc
,另一个是引用对象s
7.求数组的长度或字符串的长度如何做
数组中没有length()
这个方法,但有length
这个属性。而String
类中有length()
这个方法。
8.Overload和Override的区别,Overload的方法返回值类型的要求
- 方法的重写
Override
和重载Overload
均是Java
多态性的不同表现。 - 重写
Override
是父类与子类之间多态性的一种表现,重载Overload
是一个类中多态性的一种表现。 - 如果在子类中定义的方法与其父类的方法有相同的名称和参数,则程该方法被重写 (
Override
)。子类的对象使用这个方法时,将调用子类中的定义,对子类而言,父类中的定义被"屏蔽"。若在一个类中定义了多个同名的方法,它们或有不同的参数个数或参数类型甚至是参数顺序,这称为方法的重载(Overload
)。Overload
的方法的返回值类型不受限制,可以更改。
9.如何区分Set
里的元素是否重复呢,是用==
还是equals()
Set
中的元素是不能重复的,可以用iterator()
方法来区分重复与否。equals()
是判读两个Set
是否相等
equals()
和==
方法决定引用值是否指向同一对象equals()
在类中被覆盖,为的是当两个分离的对象的内容和类型匹配的话,返回真值
10常见的异常有哪些
常见的运行时异常如下:
ArithmeticException