最近在准备春招,所以想把一些基础知识系统性的过一遍。因为没有Java的教材,所以参考菜鸟教程学习Java的基础知识并做整理。
Java主要特性
- 与C++区别,Java语言中不使用指针而是引用,并提供了自动分配和回收内存空间机制。
- 面向对象特性:继承、多态、封装。Java只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
- Java语言支持全面动态绑定,但C++语言只对虚函数使用动态绑定。(补充:动态绑定)
- Java语言是体系结构中立的,Java程序在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
- Java严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
- Java语言是解释性的。Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在link阶段被载入到运行环境中。
- Java是多线程的。在Java语言中,线程必须由Thread类或其子(孙)类来创建。通常有两种方法创建线程,其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
Java 基本教程
1. java文件名要与类名一致。
a) javac Hello.java (后面接的是文件名)该命令用于将java源文件编译为class字节码文件。运行后如果没出错,会出现一个HelloWorld.class文件。
b) java Hello(后面跟着的是java文件中的类名) 命令后面不要加 .class
2. 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。对象是类的实体,有状态和行为;类是一个模板,描述一类对象的行为和状态;方法就是行为,一个类可以有很多方法,所有动作都是在方法中完成的;每个对象都有独特的实例变量,对象的状态由实例变量的值确定。
public static void main ( String[] args)
访问修饰符 关键字 返回类型 方法名 String类数组 字符串数组
3. Java大小写敏感,标识符以字母、下划线或者 $ 开始,首字符之后可以是字母下划线 $ 或者数字。(不能以数字开头,不能是关键字)
4. Java用修饰符修饰类中的方法和属性,主要有
a) 访问控制修饰符:default,public,protected,private
b) 非访问控制修饰符“:final,abstract,static,synchronized
5. Java变量:
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
类变量(静态变量):成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量(非静态变量):类变量也声明在类中,方法体之外,但必须声明为 static 类型。
6. Java数组:是储存在堆上的对象,可以保存多个同类型变量。
7. Java枚举:枚举限制变量只能是预先设定好的值。
class Freshjuice{
enum freshsize{small, medium, large}
freshsize size;
}
8. 接口:在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
9. 解释性语言Java与编译型语言运行区别:

10. 构造方法:每个类都有,如果没有显式定义,Java编译器会为该类提供默认构造方法。构造方法必须与类同名,一个类可以有多个构造方法。
11. 创建对象:a. 声明 b. 实例化(new)c. 初始化(使用new创建时,会调用构造方法初始化对象)
12. 访问实例变量和方法:通过 . 访问类中变量;通过 .XX() 访问类中XX方法。
13. 源文件声明规则:
a) 一个源文件中只能有一个public类
b) 一个源文件可以有多个非public类
c) 源文件的名称和public类的类名保持一致
d) 如果一个类定义在某个包中,那么package语句应该在源文件的首行
e) 如果源文件有import语句,应该放在package语句和类定义之间
f) import语句和package语句对源文件中定义的所有类都有效,在同一源文件中,不能给不同的类不同的包声明
Java中还有一些特殊的类,如内部类、匿名类
14. Java包
a) 包主要用来对类和接口进行分类
b) import 语句:提供一个合理的路径使得编译器可以找到某个类