从c++到java(二)
从 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. 内嵌类(一个类中声明另一个类)
内嵌类可以放在类中的任意一个位置,程序都可以找到它
内嵌类的好处
内嵌类可以使用所属类的私有变量和方法
内嵌类的作用域只在所属类内部,其它类是不可见的,从而减少混乱
节约资源
5. 匿名内嵌类 (anonymouse inner class)
没有具体名字的内嵌类,因为只使用一次,所有一般不命名
写法
** fancyButton.addActionListener
( new ActionListener() // ActionListener ** ** 是一个 interface, 含一个方法
{// anonymous inner class
public void actionPerformed(ActionEvent event)
{
JOptionPane.showMessageDialog(null,
"You pressed: " + event.getActionCommand());
}
}
);
** 它返回的是一个实例,只处理从这个 handler 来的信息运行时生成内嵌类的 class 文件,形如
xxx$1.class
6. 事件处理
引入 java.awt:事件处理包
需要设置 listener 和 handler
任何一个对象都可以被监听(addListener), 当它 listen 的事件发生时就调 add 时指定的 handler
处理
7. 多线程
继承 Thead 类
关键的方法
start(),sleep(),destroy(),resume(),stop(),getName()线程执行优先级 1-10
在外部使用它
PrintThread thread1 = new PrintThread("thread1");
thread1.start(); // 此时进入 ready 状态,等待资源
8. 界面
引入 java.swing;JFC(用于在 java 中开发界面)
由于基类原因,控件即可以 draw 也可以做为 contrainer
二、JAVA 对应语法
1. 类的引入
在某一类(文件)中想使用其它类时(如同 C 语言中的包含头文件)
使用 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
类似的功能可以使用,只能用常量或变量的判断来选择执行代码的不同部分