从 c++ 到 java (二)

#编程语言 #编程语言/C #编程语言/Java

学习 JAVA 编程(二)

一、JAVA 特性和习惯用法

1. 指针
JAVA 中没有指针,用以下方法使用
** Test a = new Test(); a.t(); **

2. 地址传递和值传递
原始类型是值传递
对象(非原始)类型是地址传递

3. 手动回收资源
一般情况下,只要 new,系统会自动释放,但更严谨地做法是手动回收,如下: ** Employee e1 = new Employee("Susan", "Baker");
……
** ** e1 = null;
System.gc(); // garbage collection **
此时析构函数 protected void finalize() 会被调用

4. 内嵌类(一个类中声明另一个类)

  1. 内嵌类可以放在类中的任意一个位置,程序都可以找到它

  2. 内嵌类的好处
    内嵌类可以使用所属类的私有变量和方法
    内嵌类的作用域只在所属类内部,其它类是不可见的,从而减少混乱
    节约资源

5. 匿名内嵌类 (anonymouse inner class)

  1. 没有具体名字的内嵌类,因为只使用一次,所有一般不命名

  2. 写法
    ** fancyButton.addActionListener
    ( new ActionListener() // ActionListener ** ** 是一个 interface, 含一个方法
    {// anonymous inner class
    public void actionPerformed(ActionEvent event)
    {
    JOptionPane.showMessageDialog(null,
    "You pressed: " + event.getActionCommand());
    }
    }
    );
    ** 它返回的是一个实例,只处理从这个 handler 来的信息

  3. 运行时生成内嵌类的 class 文件,形如
    xxx$1.class

6. 事件处理

  1. 引入 java.awt:事件处理包

  2. 需要设置 listener 和 handler

  3. 任何一个对象都可以被监听(addListener), 当它 listen 的事件发生时就调 add 时指定的 handler

处理

7. 多线程

  1. 继承 Thead 类

  2. 关键的方法
    start(),sleep(),destroy(),resume(),stop(),getName()

  3. 线程执行优先级 1-10

  4. 在外部使用它
    PrintThread thread1 = new PrintThread("thread1");
    thread1.start(); // 此时进入 ready 状态,等待资源

8. 界面

  1. 引入 java.swing;JFC(用于在 java 中开发界面)

  2. 由于基类原因,控件即可以 draw 也可以做为 contrainer

二、JAVA 对应语法

1. 类的引入

  1. 在某一类(文件)中想使用其它类时(如同 C 语言中的包含头文件)

  2. 使用 import 关键字,形如
    ** import java.io.* **

2. 工具函数的写法
C++ 中有些工具函数,可能被多处调用,本身又不属于某个类,在 JAVA 中可以 专写一个 Utility.java,里边的函数都是

static 的,直接用里边的函数,不用实例化

3. 枚举

近似类的写法,形如: ** public enum FolderType {
HOLDS_FILDERS, HOLDS_MESSAGES
}
FolderType.HOLDS_FILDERS **

4. 宏定义
在 类中
** public static final int IOERROR = 1; **

5. ifdef
没有 ifdef 类似的功能可以使用,只能用常量或变量的判断来选择执行代码的不同部分