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(继承)时才被容许。
5.可以再方法或者语句块内定义类,待遇与在外部类下定义相同
7.方法内的匿名内部类如果要操作方法传入的参数,不是以构造函数传入的话那么就要是final类型
局部变量的生命周期与局部内部类的对象的生命周期的不一致。
内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命,拷贝到内部类中,而拷贝会带来不一致性,从而需要使用final声明保证一致性。
8.一个内部类可以访问多层外部类里面的字段
9.继承内部类不能访问采用默认的构造函数,必须要在构造函数中传入外部类的参数,并调用其super方法
10.继承外部类覆盖其内部类不能仅仅重新定义,这样起不到覆盖的作用
11.Collection可以使用Collection将自身初始化,但是不能知道父类的父类,可以通过显示参数解决,但是Collection.addAll(Collection target,Collection source)的方法给已经建立的Collection赋值的效果更好,速度更快
12.可以用Arrays.asList()将数组变为List但是这个List本质上还是固定长度的列表
13.HashSet: 采用哈希算法,存取速度快,元素是无序的
TreeSet:元素按照字母顺序排列
LinkedSet:元素按照插入顺序排列
14.containsAll不在乎元素的顺序,顺序不同只要包含就返回true
15.
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.
相关文章推荐
- 集算器协助Java处理结构化文本之分组汇总
- eclipse 的常规设置
- Eclipse 插件开发 - The resource tree is locked for modifications
- java后台并发插入数据问题
- RocketMQ使用Avro序列化生产者消费者java示例
- Java [Leetcode 258]Add Digits
- Java [Leetcode 104]Maximum Depth of Binary Tree
- Java [Leetcode 283]Move Zeroes
- Java工程师成神之路~
- [springframework] - Spring MVC Implements RESTful
- 使用eclipse和maven生成java web程序war包
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 解决java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver问题
- java jdk1.7常量池移到哪去了?
- Caused by: java.lang.UnsatisfiedLinkError: Couldn't load zbar: findLibrary returned null
- Java 理论与实践: 正确使用 Volatile 变量
- spring xml namespace
- jdk1.7
- Ibator插件安装、配置及使用说明
- spring mvc default-servlet mvc:resources mvc:default-servlet-handler区别