Overload 是重载,Override 是重写。很基础的知识点必会。
Overloaded 的方法的参数列表不一样,它们的返回类型不一定
不一样。
如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload? 这是不行的。
set元素是不能重复的,可以用equals()
来判断!
第二个问题:主要看你对==
和equals
的了解。
这种题就需要背了,没啥可理解的。常写代码谁能记住,我反正是记不住。就跟你手写代码一样,不是一般人那。
空指针异常 NullPointerException
数组越界异常 IndexOutOfBoundsException
类转换异常 ClassCaseException
向数组中存放与声明类型不兼容对象异常 ArrayStoreException
Io操作异常 BufferOverFlowException
Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型得实例才可以被抛出 throw 捕获 try-catch 。
Exception 是程序中正常运行中,可以预料的异常情况,可以被捕获,进行处理的异常。
Error 程序导致程序处于非正常的不可恢复状态。不便于捕获。
List 与 Set 继承 Collection 接口;Map 没有继承自 Collection 接口;
abstract class 和 interface 都不能实例化。
abstract class 拥有自己的成员变量,interface 默认 static final 修饰
abstract class 方法可以私有化,非抽象方法,必须实现;interface 不能有私有的,默认是 public abstract
实现方式不同:abstract class 需要 extends,interface 要用 implement
abstract 的方法可以同时是 static !
abstract 的方法不能同时是native的!
native本身就和abstract冲突,他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于既把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢!
abstract 的 方法可同时是 synchronized
接口: 接口是一种约束形式,其中只包括成员定义,不包含成员的实现内容。
接口可以继承(extends)接口。
抽象类可以实现(implements)接口。
抽象类可继承(extends)实体类,(但前提是实体类必须有明确的构造函数)。
构造器Constructor不能被继承,因此不能被重写(Override),在本类当中可以被重载(Overload)
如果父类自定义了有参构造函数,则子类无论定义无参,有参构造函数,都会报错。正确的做法是在子类的构造方法中添上super(参数),以表明子类构造之前先构造父类,而这句话必须放在第一句,否则报"Constructor call must be the first statement in a constructor"的错误。
不能继承 String 类
原因是 String 类 被 final 修饰的
Try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会执行的。
finally 语句总会执行,除非遇到一些特殊情况,如System.exit(0)
return语句并不一定就是结束一段程序,当它和finally一起使用但finally语句中无return时会先等finally语句执行完成后再返回值。
当finally语句中有return语句时会直接返回finally中return的语句
2 <<3
System.out.println(2 << 3); //16 2*2^3 System.out.println(1 << 2); //4 1*2^2
不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同。
我先不思考题,首先 java 就属于值传递
switch和case语句的参数是int、short、char或者byte。
注意,对于精度比int大的类型,比如long、float、double,不会自动转换为int,如果想使用,就必须强转为int,如(int)float。
jdk1.7后,整型,枚举类型,boolean,字符串都可以。jdk1.7并没有新的指令俩处理switch String,而是通过调用switch中的String.hashCode,将String转为int从而进行判断。