Java 笔记

Posted by QingJun's Blog on April 1, 2021

本文适用于熟悉 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 是伪代码,表示重写