1, Java是一种静态类型、动态绑定的语言。具体来说,每一个对象都是编译时确定的良好类型。同时,可以在运行时检查一个对象究竟是什么。
2, Java中除了基本数字类型之外,Java中所有的对象都是通过引用来访问。
3, 跟C++相同,不同的类实例的数据是不同的,但是方法都是相同的。
4,所有实例变量均被设置为默认值0、false或者NULL。如果使用尚未初始化的对象,将会导致一个运行时错误。
5,命令行运行java/javac时,需要在项目classpath。何为项目classpath,如果代码中没有package语句,则classpath为当前目录。如果有package语句,则根目录为根据package上移目录。如果通过java -d指定了别的output目录,则运行java class的时候也需要指定classpath到对应目录。
比如javac self\equal.java, java self.equal
6, jar -cvf abc.jar abc 将abc目录里的内容打包为abc.jar
-xvf abc.jar 将abc.jar的内容解压
-tvf abc.jar 查看abc.jar的内容
-cvmf mypairvalue.mf abc.jar abc 将abc的内容打包,同时设置mypairvalue中的属性。可以指定Main-Class 为abc.classname,jar包就可以通过java -jar abc.jar 运行
7, 一场包括受查异常(throw声明的)和非受查异常(RuntimeException和Error的子类),可以通过printStackTrace看到异常的栈轨迹
8, Java的构造函数不能用abstract, synchronized, final修饰
9, 显示的调用System.gc()方法可以提示垃圾回收器进行一次清扫。在一个对象被垃圾回收器删除之前,其finalize方法会被调用
10, 接口取代了在C++中使用的多重继承
11, 可以用this在构造函数入口处调用另一个构造函数,也可以通过super在构造函数入口处调用基类的构造函数。因为默认情况下基类的默认构造函数会被隐式调用,super的调用仅用来调用基类带参数的构造函数。
12, Java的interface中函数默认为public,abstract的,implements该interface的类必须实现所有的函数,否则必须为abstract
13, 可以在任何大括号间声明一个类.
p190, 内部类的一个重要用途是建立适配器类。适配器类的作用是绑定至一个类,同时不破坏其封装性。方法的内部类引用的任何方法的局部变量都必须为final,因为在一次方法的调用中,所建立的所有的内部类实例必须看到相同的局部变量。
p199, ==检查同一性,只有指向同一个对象时猜想等,equals检查相等性,值相等,就像等