String、StringBuffer、StringBuilder
区别对比:
String在进行 str = str+“123”时,会先给“123”创建一个存储空间,然后再创建一个存储空间来来存储str+“123”,最后再将str指向到新的字符串,所以无谓的浪费了空间,改变了指向的存储位置。
StringBuffer,相当于一个缓冲区,可以直接对里面的内容进行修改,而不是像String那样重新开辟空间进行操作。
StringBuilder与StringBuffer类似,是后者的简化版,在单线程中使用比StringBuffer要方便,但是基于多线程安全,最好用StringBuffer。
异常Exception
关键字 throws 和 throw
throws
throws 是说将当前的异常向上逐级递交抛出,最后顶级是JVM来处理
例如
public static void main(String args[]){ try{ tell(10,0); }catch(Exception e){ System.out.println(); } } public static void tell(int i ,int j) throws ArithmeticException { int temp = 0; temp = i/j; System.out.println(temp); }
这里就是将tell()中的异常抛给上面的main方法来处理,main中有try catch块来处理,若main也throws出异常,则异常则交给JVM来处理。
throw
一般与catch联用,需要进行实例化,如
try{ throw new MyException("error had happened"); }catch( MyException e){ System.out.println(e); }
一般在try中抛出异常后,需要在下面给出异常处理的catch块。
封装性
Static关键字
单继承 关键字extends
子类实例化
ps:子类在实例化对象时,都是先去调用父类的构造方法,然后再调用子类的构造方法。
重写 重载 super关键字
重写与重载的区别对照
java抽象类
java 接口
ps:接口是允许多实现的,也就是说一个类可以implements多个接口类,间接的弥补了java中单继承的不足。
第五点实例:
interface testabc { } interface testbcd { } interface abc extends testabc, testbcd { };
java多态应用
java多态的体现 一个是体现在重载和重写上,还有一个点是体现在向上转型和向下转型。
如:
public static void main(String[] args) tell(new B()); tell(new C()); } void tell(A a){ a.say1(); } } class A { void say1(){ System.out.println("i m a"); } } class B extends A{ void say2() { System.out.println("i m b"); } } class C extends A{ void say3() { System.out.println("i m c"); } }
这里调用了class A的say1方法,传入的是class B和classC的实例化对象,则会调用父类的say1 方法,这样调用say1方法不论传入B或者C都可以调用到父类的say1方法。