Java知识点小结
2014-10-05 10:18
218 查看
1. 不可以在函数内部定义enum 枚举类型,like
2. String 中的length方法将返回给定字符串所需要的代码单元数量。
调用s.charAt(n)将返回位置n的代码单元。
3. StringBuilder与StringBuffer
StringBuider的前身是StringBuffer。 StringBuffer的效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作。
如果所有字符串在一个单线程中编辑(通常都是这样),则应该用StringBuilder替代它。这两个类的API是相同的。
4. 不要编写返回引用可变对象的访问器方法。否则会破坏封装性。如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone).
5. Java总是采用按值调用。有人可能认为Java对对象采用的是引用调用,实际上这种理解是不对的。
首先,举个例子。
总结下,Java 应用程序按值传递参数(引用类型或基本类型),其实都是传递他们的一份拷贝.而不是数据本身.(不是像 C++ 中那样对原始值进行操作。)
6. Java在创建一个子类时,初始化顺序为:
父类静态代码块->子类静态代码块->父类非静态代码块->父类构造函数>子类非静态代码块->子类构造函数
7. 关于 equals() 与 hashcode():
如果要重写equals()方法,必须要重写hashcode()方法;
尽量保证使用对象的同一个属性来生成hashcode()和equals()两个方法;
任何时候只要a.equals(b), 那么a.hashcode()必须和b.hashcode()相等。
public void foo() { enum LocalEnum { A,B,C };原因主要是因为enum是静态嵌套类。 具体见:why cant enums be declared locally in a method
2. String 中的length方法将返回给定字符串所需要的代码单元数量。
调用s.charAt(n)将返回位置n的代码单元。
3. StringBuilder与StringBuffer
StringBuider的前身是StringBuffer。 StringBuffer的效率稍有些低,但允许采用多线程的方式执行添加或删除字符的操作。
如果所有字符串在一个单线程中编辑(通常都是这样),则应该用StringBuilder替代它。这两个类的API是相同的。
4. 不要编写返回引用可变对象的访问器方法。否则会破坏封装性。如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone).
5. Java总是采用按值调用。有人可能认为Java对对象采用的是引用调用,实际上这种理解是不对的。
首先,举个例子。
public static void swap(Employee x, Employee y) { Employee temp = x; x = y; y = temp; }如果Java对对象采用的是引用调用,那么这个方法就应该能够实现交换数据的效果:
Employee a = new Employee("Alice",...); Employee b = new Employee("Bob",...); swap(a,b);但是,方法并没有改变存储在变量a和变量b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝。
总结下,Java 应用程序按值传递参数(引用类型或基本类型),其实都是传递他们的一份拷贝.而不是数据本身.(不是像 C++ 中那样对原始值进行操作。)
6. Java在创建一个子类时,初始化顺序为:
父类静态代码块->子类静态代码块->父类非静态代码块->父类构造函数>子类非静态代码块->子类构造函数
public class mainjava {//父类 int a = test(); {//非静态代码块 System.out.println("父类的非静态代码块2"); } public int test() { System.out.println("父类的非静态代码块1"); return 1; } static { System.out.println("父类的静态代码块"); } public mainjava(){ System.out.println("父类的构造函数"); } } class Son extends mainjava { { System.out.println("子类的非静态代码块"); } static { System.out.println("子类的静态代码块"); } public Son(){ System.out.println("子类的构造方法"); } public static void main(String[] args){ Son a = new Son() ; } }
7. 关于 equals() 与 hashcode():
如果要重写equals()方法,必须要重写hashcode()方法;
尽量保证使用对象的同一个属性来生成hashcode()和equals()两个方法;
任何时候只要a.equals(b), 那么a.hashcode()必须和b.hashcode()相等。
相关文章推荐
- java知识点小结(2)
- 黑马程序员_Java编程基础知识点小结
- 008Java知识点小结--静态变量、代码块
- 013Java知识点小结--String类
- 012Java知识点小结-Eclipse
- Java知识点小结
- 017Java知识点小结--Map
- 阿里巴巴Java开发手册知识点小结(未完)
- Servlet知识点小结 -- JAVA后台
- 015Java知识点小结--集合
- Java集合知识点小结
- java小知识点小结
- java基础面试知识点小结
- Java知识点小结
- Java知识点练习小结(四)
- java学习笔记 反射reflection相关知识点小结
- Java多线程、并发编程知识点小结
- Java知识点练习小结(二)
- 010Java知识点小结--抽象类、接口
- 016Java知识点小结--Set