java笔记之三
2015-06-22 21:47
453 查看
10.List中判断元素是否相同依据的原理是调用元素的equals方法。自定义需重写equals方法。是即将存入的元素调用自己的equals即将已存入的元素当做参数传入一一比较知道找到相同的。
‚HashSet比较是先比较hashcode,如果hashcode相同,调用元素的equals比较,自定义需重写hashCode方法和equals方法
ƒTreeSet是a.调用元素的compareTo方法进行比较,返回int值,自然排序,元素自定义需实现Comparable接口,二叉树结构。b.TreeSet的构造方法可传入自定义的比较器,比较器可以重写compare方法自定义。
11.Abstract关键字和final、private、static不共存。
12.非抽象类也可被abstract修饰,但是被修饰后就不能创建实例了
13.多态:超类引用创建子类对象Animal p=new Cat()
总结:除了非静态方法,编译运行都看父类,非静态方法运行看右边。
子类对象会自动向上转型,会去掉子类中超类没有的方法,但如果子类重写了超类的方法并且方法中用到了超类中没有的成员变量是可行的。
‚静态方法没有多态性,因为静态方法是和类绑定的,不会存在不知道具体类型的情况(无论编译和运行都看等号左边)。如果父类中没有X静态方法,即使子类定义了X静态方法,也不能访问。
ƒ构造函数是不具有多态性的,因为构造方法本身是静态方法。
④成员变量访问是由编译器决定的,如果父类中没有X成员变量,即使子类定义了X,也不能访问。因此不会表现出多态(无论编译和运行都看等号左边)。
⑤调用方法是根据运行时对象类型延时绑定调用,会表现出多态(编译看等号左边,运行看等号右边)。方法运行时访问子父类同名的成员变量X,访问的是子类的X.单独访问父类引用的同名变量X,访问的是父类的X。
⑥可将超类引用强制转换成子类类型来访问子类特有方法。
14.直接创建内部类对象Outer.Inner Oi=new Outer().new Inner();如果内部类被static修饰, Outer.Inner Oi=new Outer.Inner();
局部内部类只能访问被final修饰的局部变量。
15.静态方法不能访问类的泛型。
16.父类中的私有成员,子类是没有继承的,但在开辟子类内存空间的时候是分配了空间的的,从另一个角度考虑,是继承了私有元素,但是没有权限访问。
17.final成员变量是赋值之后即被锁定,在没有赋值时,不会锁定默认值,构造方法能够一次赋值,一般方法不能。
18.接口没有构造方法,接口是可以多继承。是实现扩展功能,抽象类是向上提取的共有功能,抽象类是有构造方法的。(抽象类和接口区别)
19.Java.util包中的Arrays类的asList方法,返回的是List类型的集合,当数组中的元素是基本数据类型是,集合里的元素是基本数据类型的数组。当元素是引用数据类型是,是将对象存入List集合。
20.toArray (T[] a) 方法有重载形式,当指定形式的数组即a的长度小于集合的size()时,方法内部就会创建一个新的数组,长度为size(),当大于是就不会创建,并且null填充多余的位置。所以长度刚刚好的数组最优。
21.IO中Writer和OutputStream 的write方法参数都可以是int和数组,区别在于前者是char数组后者是byte数组,前者可以写字符串,后者不能,但是字符串可以通过字符串的getBytes放得到字节数组。
22.List可以存null,初始十个位置,扩容百分之五十;
HashMap允许null键和null值;
LinkedList的getFirst和getLast 为空抛出异常,peekFirst和peekLast
会返回null;removeFirst和removeLast为空抛出异常,pollFirst和
pollLast会返回null;
23.hashCode()协定,equals()返真,hashcode必须相同;
24.
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:
Final StringBuffera=newStringBuffer("immutable");
执行如下语句将报告编译期错误:
a=newStringBuffer("");
但是,执行如下语句则可以通过编译:
append(" broken!");
35.局部变量前不能放置任何访问修饰符 (private,public,和protected)
36.final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。
37.TreeSet的Comparator优先于Comparable,即使没有实现Comparable,只要有比较器也可以
‚HashSet比较是先比较hashcode,如果hashcode相同,调用元素的equals比较,自定义需重写hashCode方法和equals方法
ƒTreeSet是a.调用元素的compareTo方法进行比较,返回int值,自然排序,元素自定义需实现Comparable接口,二叉树结构。b.TreeSet的构造方法可传入自定义的比较器,比较器可以重写compare方法自定义。
11.Abstract关键字和final、private、static不共存。
12.非抽象类也可被abstract修饰,但是被修饰后就不能创建实例了
13.多态:超类引用创建子类对象Animal p=new Cat()
总结:除了非静态方法,编译运行都看父类,非静态方法运行看右边。
子类对象会自动向上转型,会去掉子类中超类没有的方法,但如果子类重写了超类的方法并且方法中用到了超类中没有的成员变量是可行的。
‚静态方法没有多态性,因为静态方法是和类绑定的,不会存在不知道具体类型的情况(无论编译和运行都看等号左边)。如果父类中没有X静态方法,即使子类定义了X静态方法,也不能访问。
ƒ构造函数是不具有多态性的,因为构造方法本身是静态方法。
④成员变量访问是由编译器决定的,如果父类中没有X成员变量,即使子类定义了X,也不能访问。因此不会表现出多态(无论编译和运行都看等号左边)。
⑤调用方法是根据运行时对象类型延时绑定调用,会表现出多态(编译看等号左边,运行看等号右边)。方法运行时访问子父类同名的成员变量X,访问的是子类的X.单独访问父类引用的同名变量X,访问的是父类的X。
⑥可将超类引用强制转换成子类类型来访问子类特有方法。
14.直接创建内部类对象Outer.Inner Oi=new Outer().new Inner();如果内部类被static修饰, Outer.Inner Oi=new Outer.Inner();
局部内部类只能访问被final修饰的局部变量。
15.静态方法不能访问类的泛型。
16.父类中的私有成员,子类是没有继承的,但在开辟子类内存空间的时候是分配了空间的的,从另一个角度考虑,是继承了私有元素,但是没有权限访问。
17.final成员变量是赋值之后即被锁定,在没有赋值时,不会锁定默认值,构造方法能够一次赋值,一般方法不能。
18.接口没有构造方法,接口是可以多继承。是实现扩展功能,抽象类是向上提取的共有功能,抽象类是有构造方法的。(抽象类和接口区别)
19.Java.util包中的Arrays类的asList方法,返回的是List类型的集合,当数组中的元素是基本数据类型是,集合里的元素是基本数据类型的数组。当元素是引用数据类型是,是将对象存入List集合。
20.toArray (T[] a) 方法有重载形式,当指定形式的数组即a的长度小于集合的size()时,方法内部就会创建一个新的数组,长度为size(),当大于是就不会创建,并且null填充多余的位置。所以长度刚刚好的数组最优。
21.IO中Writer和OutputStream 的write方法参数都可以是int和数组,区别在于前者是char数组后者是byte数组,前者可以写字符串,后者不能,但是字符串可以通过字符串的getBytes放得到字节数组。
22.List可以存null,初始十个位置,扩容百分之五十;
HashMap允许null键和null值;
LinkedList的getFirst和getLast 为空抛出异常,peekFirst和peekLast
会返回null;removeFirst和removeLast为空抛出异常,pollFirst和
pollLast会返回null;
23.hashCode()协定,equals()返真,hashcode必须相同;
24.
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:
Final StringBuffera=newStringBuffer("immutable");
执行如下语句将报告编译期错误:
a=newStringBuffer("");
但是,执行如下语句则可以通过编译:
append(" broken!");
35.局部变量前不能放置任何访问修饰符 (private,public,和protected)
36.final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。
37.TreeSet的Comparator优先于Comparable,即使没有实现Comparable,只要有比较器也可以
相关文章推荐
- java笔记之二
- JavaMail实现收发邮件——(四)各大主流邮件服务器地址
- java笔记之一
- java 实现生成excel表头
- Netbeans打开包含中文文件时提示错误
- java多态的静态实例
- Java集合7:LinkedList的实现原理
- Java集合5:LinkedHashMap与LRU cache
- Java集合6:ArrayList的实现原理
- Java集合3:LinkedHashMap的实现原理
- Java集合4:LinkedHashSet的实现原理
- Java中Unicode编码和汉字之间的转换
- Java:Double Brace Initialization
- Java集合2:HashSet的实现原理
- Java集合1:HashMap的实现原理
- java 与mysql的连接
- 【spring】1.spring ioc原理和demo
- 【Java加密解密】DES加密算法
- 【Spring】依赖注入三种方式
- Spring MVC ModelAndView