您的位置:首页 > 编程语言 > Java开发

java学习笔记

2015-12-22 09:56 651 查看
一边学习一边总结<Think in java>也就是<java编程思想>中一些有用的知识点,每天更新自己所学到的东西

1.interface中也可以有属性,不过必须是public static final的类型

2.interface中函数作用域不声明的话默认是public而不是package

3.协变返回类型

在Java1.4及以前,子类方法如果要覆盖超类的某个方法,必须具有完全相同的方法签名,包括返回值也必须完全一样。

Java5.0放宽了这一限制,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。

注意:"协变返回(covariant return)",仅在subclass(子类)的返回类型是superclass(父类)返回类型的extension(继承)时才被容许。

class Processor{
Object process(Object input){return input;}
}

class MyProcess {
String process(Object input){return input.toString();}
}
4.当一个类实现的多个接口中有相似的方法名,如果这二个方法名只有返回值不同那么会出错
5.可以再方法或者语句块内定义类,待遇与在外部类下定义相同

package cn.edu.nankai.innerclasstest.main;

public class OuterClass {

private int myField = 0;
public void myFunction(){
class InnerClass {
InnerClass(){
myField = 5;
}
}
if(false){
class InnerClassInIf{
public InnerClassInIf() {
myField = 6;
}
}
}
}

public int getMyField(){
return myField;
}
}
6.匿名内部类只能实现一个接口

7.方法内的匿名内部类如果要操作方法传入的参数,不是以构造函数传入的话那么就要是final类型

局部变量的生命周期与局部内部类的对象的生命周期的不一致。

内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。

8.一个内部类可以访问多层外部类里面的字段

9.继承内部类不能访问采用默认的构造函数,必须要在构造函数中传入外部类的参数,并调用其super方法

10.继承外部类覆盖其内部类不能仅仅重新定义,这样起不到覆盖的作用

11.Collection可以使用Collection将自身初始化,但是不能知道父类的父类,可以通过显示参数解决,但是Collection.addAll(Collection target,Collection source)的方法给已经建立的Collection赋值的效果更好,速度更快

class Snow{}
class Powder extends Snow{}
class Light extends Powder{}
class Heavy extends Powder{}
class Crusty extends Snow{}
class Slush extends Snow{}

public class AsListInference{
List<Snow> snow1 = Arrays.asList(
new Crusty(),new Slush(),new Powder()
);
//
// List<Snow> snow2 = Arrays.asList(
//   new Light(),new Heavy()
//);
Collections.assAll(
snow2,new Light(),new Heavy()
);

List<Snow> snow4 = Arrays.<Snow>asLi    st(
new Light(),new Heavy()
);

}


12.可以用Arrays.asList()将数组变为List但是这个List本质上还是固定长度的列表

13.HashSet: 采用哈希算法,存取速度快,元素是无序的

TreeSet:元素按照字母顺序排列

LinkedSet:元素按照插入顺序排列

14.containsAll不在乎元素的顺序,顺序不同只要包含就返回true

15.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: