本文适用于熟悉 C++ 但想快速上手 Java 的人,事实上我本人也是因为一些需求才看的 java 。
绪论
Java 技术体系:
-
Java 平台标准版 Java SE
- JDK
- JVM,有客户端(JRE)和服务器两种
-
Java 平台企业版 Java EE
面向企业
-
Java 平台微缩版 Java ME
针对消费类电子设备
Java 程序由编译器编译后,生成中间代码(Java 字节码),能够在 JVM 上运行,从而实现在不同计算平台上运行。
大多数程序设计语言,要么采用编译执行,如 C++;要么采用解释执行,如 Python。而 Java 同时采用了编译和解释,通过编译生成字节码,通过 JVM 进行解释。
Java 语法与 C++ 的一些区别:
- 类
- 接口
- 程序包(jar 包)
- 多线程
- 取消指针
Java api :
- java.lang
- java.io,标准输入输出库
- java.util
- java.net,提供网络应用所需
- java.awt
- java.awt.event
- java.applet
- java.sql,支持通过 JDBC 的数据库访问操作
Java 源程序结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
package <包名>; // 源程序中类所存放的包,至多有一个
import <类型>; // 引入类的声明语句
...
public class <类名>{ // public class 只能有一个,类名与文件名相同
public static void main(String args[]){ // 主函数
...
}
}
//class 定义
//interface 定义
JDK 的编译器:javac
JDK 的解释器:java
Java 语言基础
命名规范:
- 每个单词的首字母大写,变量名和方法名的第一个单词的首字母小写
- 常量名完全大写,用下划线 _ 作为单词的分隔符
Java 没有无符号整数类型
基本类型变量与引用类型变量:
1
2
3
4
5
6
7
8
9
10
11
// 基本类型变量
int a; // 声明变量 a 时,已为 a 分配数据空间
a = 12;
// 引用类型变量
// 变量值是指向内存空间的地址
Mydate today; // 在内存开辟引用空间
today.day = 14; // 这条语句是错误的,因为 today 对象没有被分配数据空间
today = new Date(); // 开辟数据空间(实例化)
// 引用类型变量的赋值是引用赋值,即传递地址
变量及其作用域:
- 局部变量(手动初始化)
- 类成员变量(自动初始化)
- static 变量
- 非 static 变量
- 方法参数
- 异常处理器参数
Java 没有全局变量
运算符:
与 C/C++ 不同,模运算的操作数可以是浮点数
Java 中任何类型的数据都可以用 == 和 != 比较
数组:
Java 中的数组在声明之后,需要通过 new 创建数据空间(同时,元素会被自动初始化)
用 length 属性可以返回数组长度
对象数组除了要对数组 new 之外,对每个对象还要再 new 一次
Java 面向对象特性
OOP 特性
- 封装,将对象的数据与操作数据的方法封装在一起,隐藏了对象的数据
- 继承,减少了类似代码的重复说明。类只支持单继承,多继承通过接口实现
- 多态,运行时多态(类的继承关系、方法重写和晚联编)和编译时多态(方法重载)
类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 类的声明
<public> <abstract | final> class <类名> <extends <要继承的类名>> <implements <要实现的接口>> {
// public 说明任何类都可以访问该类,否则只有同一个包中的类才可以访问该类
// abstract 说明是抽象类,含有抽象成员方法
// final 说明该类无法被继承
// 成员变量限定符:
// static 成员变量,类变量
// final 成员变量,常量,不可被修改值
// transient
// private | protected | public
// 成员方法限定符
// static 类方法
// final | abstract,final 说明方法不可被重写,abstrac 说明方法是抽象方法
// private | protected | public
}
类的一些特性和用法可以参考 C++
@Override 是伪代码,表示重写