一. 数组
. 正确的定义: int num[]; num= new int[5] //只有用new关键字真正创建数组时才可以给定它的大小
错误的定义: int num[5];
. 常见的数组错误为 : ArrayIndexOutOfBoundsException (数组越界错误)
. 数组的维度用 .length; 字符串长度用 .length();
. 正确的初始化: int[] num={1,2,3}; 又或者: int num[]= new int[]{1,2,3}
错误的初始化: int[] num=new int[3]{1,2,3};
. 不能改变Java数组的大小.
二. 类
. Java只允许单继承,所以增加了接口特性.
. 所有Java类都是Object类的后代,如果一个类没有extend关键字,这个类将是基类Ojbect派生的.
. 一个文件只能有一个外部类可以声明为public, 如果你在一个文件中定义多于一个public外部类,将会发生编译错误
. Java严格区分大小写.
. 一个外部类只允许声明为public, abstact , final.
. System.out.print 是static方法, 不需要new创建.
. Static方法只能访问Static变量
. 一个方法变量将"屏蔽"类级别的变量
. Private : 创建它的类内部可见
Public : 所有类都可见
Protected : 在类自身, 子类, 同一个包内部可见
. Static : 可以应用于内部类,方法, 变量.
标志一个变量为static, 表示其只能有一个副本存在.
一个static方法,不能在一个子类中重写为非static方法. (此规则对方法的重载不起作用)
一个非static方法,不能在一个子类中重写为static方法. (此规则对方法的重载不起作用)
. native : 仅修饰方法, 指明代码体不是用java而是用c或以c++所写
以一个分号结尾,与不是一个代码块, 如: pubic native fastCal();
. abstract: 可以修饰方法和类
当修饰方法,表明方法只能在子类执行时运行,没有方法体.
如果一个类有 atstract 方法,则它需要声明为 abstract类.
任何从absract类继承来的类,都要实现基类的abstract方法, 或者声明自身为abstract类.
. final : 可修饰类,方法, 变量.
final类不能被继承.
任何final类中的方法自动成为final方法.
. Synchronize : 同步的
. transient : 瞬时的
. volatile : 不稳定的
三. 构造方法
. 构造方法是一种在类实例化时自动运行的特殊类型的方法, 通常被用来初始化类中的值.
. 构造器有和类同样的名字并且没有返回值(包括void).
. 一旦你为一个类创建了任何的构方法,你需要创建一个无参数的构造方法.
. 构造方法不能是 native, abstract, static, synchronize, final
. 构造方法不能被继承.
. 构造方法中,不能同时用 super() 和 this()
四. 重载与重写
. 重载: 如果一个类中的两个或者多个方法有同样的名字.
(通过参数的顺序和类型来区分两个重载的方法,返回类型对区重载没有帮助.)
. 重写: 在子类中的方法跟基类中被取代的原始方法有完全相同的方法名,包括返回值, 完全取代其功能.
(static方法不能被重写)
五. 流程控制和差错处理
. if 语句必须带一个 boolean 类型的值, 不能用非零的数值来表示 true;
. switch 语句的参数必须是 byte, char, short, int
六. 循环
. 死循环: for(;;) system.out.print("forever"); 或者 while(true){system.out.print("true")};
. break/continue 不能跳到另一个方法去.
七. Try/Catch/Finally
. 在子类中一个重写的方法可能只抛出父类中声明过的异常,或者异常的子类. (不适用于重载)
. 通常来说, 所有的I/O操作都需要外在的使用 try/catch来异常处理.
. 考试可能给你一个包括 return 语句来误导你认为代码不执行 finally语句就返回, 实际上 finally子句总是会执行的.
. 如果执行了 System.out.exit(0), 则不会执行 finally地代码.
八. 断言
.
九. 垃圾回收
. 只能建议垃圾回收器运行,但无法决定它在代码的哪一部分执行.
. 只有对象的实例才能成为垃圾回收对象, 原始数据类型不会.
十. 内部类
. 仅仅在相应的外部类上的上下文中可见.
十一. Collection类/接口
. Set : 一个不可包含重复元素的集合类接口.
. List : 有序的, 可以有重复元素的集合类接口.
. Map : 接口, 实现它的类不能重复的key.
. Vector : 可以将不同类的对象添加到一个Vector 里面.
. HashTables : 优越的地方在于快速的查找.
. BitSet : 存储的是一个序列比特.
十二. 接口
. 接口只允许使用 public final static 修饰
. 接口没有构造函数.
.实现接口就要实现接口里的所有方法.
-------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------
. 类级别的变量总是会被赋予一个缺省值, 而一个成员变量,将不会被赋予一个缺省值.
. 对象引用的缺省值是 null.
. instanceOf , 测试一个类的类型然后返回一个布尔值.
. 将一个对象引用赋值给另一个对象的一般规则是: 你可以对继承树向上赋值,但不能向下复制.
. 面向对象编程的三个特点: 封装, 继承, 多态.
. == 比较的是两个对象的地址,而不是值.