Java重要知识点整理与汇总 part1

发布于 2021-1-19 21:18
浏览
0收藏

第一章:Java入门 

Java重要知识点整理与汇总 part1-开源基础软件社区
1.Java可以在计算机的操作系统之上再提供一个Java运行环境(Java Runtime Environment,JRE)。

 

2.JRE由Java虚拟机(Java Virtual Machine,JVM)、类库、以及一些核心文件组成。

 

3.Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0、1组成的序列代码。字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。

 

4.Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,Java提供的编译器不针对特定的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”。字节码是可以被Java虚拟机识别、执行的代码。

 

5.Java虚拟机负责解释运行字节码,其原理是:Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台(本地的操作系统)运行机器码。

 

6.名称:

  • Java SE(曾称J2SE):称为Java标准版或Java标准平台。Java SE提供了标准的Java Development Kit(JDK)。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序。

 

  • Java EE(曾称J2EE):称为Java企业版或Java企业平台。使用Java EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。


7.保存Java源文件时,如果源文件有多个类,那么只能由一个类是public类,如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名是.java,如果源文件没有public类,那么源文件的名字可任意(建议和某个类的名字相同),并且扩展名是.java。

 

8.一个Java应用程序必须有一个类含有一个public static void main(String[] args)方法,称这个类为此应用程序的主类

 

9.命令

  • 编译器:javac.exe,解释器:java.exe
  • 编译:javac 源文件名.java,可以只编译主类的源文件,Java系统会自动地先编译主类需要的其他源文件
  • 运行:java 主类名
  • 反编译:javap 类名(因为反编译的操作对象是.class字节码文件)
  • 压缩为jar包:使用jar.exe命令把一些类的字节码文件压缩成一个jar文件,然后将这个jar文件放到jre的扩展中,即将这个jar文件放到JDK安装目录的jre\lib\ext文件夹中。
  • 生成文档:使用javadoc.exe命令制作源文件类结构的html格式文档


10.当使用Java解释器运行应用程序时,Java虚拟机首先将程序需要的字节码文件加载到内存,然后解释执行字节码文件。当虚拟机将主类的字节码文件加载到内存时,就为主类中的main方法分配了入口地址,以便Java解释器调用main方法开始运行程序。

 

11.注意main方法不要写错,例如漏掉static、错写为mian等错误。

 

12.一个Java程序需经历的三个步骤:编写源文件、编译源文件生成字节码和加载运行字节码。

 
第二章:基本数据类型与数组


1.标识符:

  • 标识符由字母、下画线、美元符号和数字组成,长度不受限制
  • 标识符的第一个字符不能是数字字符
  • 标识符不能是关键字
  • 标识符不能是true、false和null(尽管它们不是Java的关键字)

 


2.Java语言使用Unicode标准字符集,最多可以识别65536个字符,Unicode字符集的前128个字符刚好是ASCII码。

 

3.基本数据类型:

  • 逻辑类型:
    (1)boolean型:常量:true,false
  • 整数类型:

(1)byte型:Java中不存在byte型常量的表示法,但可以把一定范围内的int型常量赋值给byte型变量。
(2)short型:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short变量。
(3)int型:常量:123(十进制),077(八进制),0x3ABC(十六进制)
(4)long型:常量:用后缀L来表示,123L(十进制),077L(八进制),0x3ABCL(十六进制)

  • 字符类型:
    (1)char型:常量:‘A’, ‘\t’,如char x = ‘a’;内存x中存储的是97,即字符a在Unicode表中的排序位置,因此也可以写成char x = 97;。
  • 浮点类型:
    (1)float型:常量后面必须要有后缀f或F。
    (2)double型:常量后缀可以有d或D,但允许省略。


4.基本数据类型精度从低到高排序:
byte short char int long float double
注:所占字节数分别为1,2,2,4,8,4,8

 
第三章:运算符、表示式和语句


5.位运算:

按位与运算:&
按位或运算:|
按位非运算:~
按位异或运算:^
(1)位相同为0,位不同为1
(2)例如:a ^ a = 0, a ^ 0 = a

6.for遍历:for(int i : array){}

 
第四章:类与对象


1.编程语言的几个发展阶段:

  • 面向机器语言:汇编语言 and so on…
  • 面向过程语言:C语言 and so on…
  • 面向对象语言:Java语言 and so on…


2.面向对象编程的三个特性:封装、继承和多态。

 

3.对象:类声明的变量被称为对象变量,简称对象。

 

4.类的结构:

类:类包括类声明和类体
类体:类声明之后的一对大括号"{","}"以及它们之间的内容(大括号之间的内容称为类体的内容)。
类体的内容由两部分组成:变量的声明和方法的定义。
变量的声明:所声明的变量称为成员变量或域变量,成员变量又分为实例变量和类变量。
方法的定义:分为方法头和方法体。方法头由方法的类型、名称和名称之后的小括号以及其中的参数列表所构成,无参数方法定义的方法头中没有参数列表,方法体由一对大括号"{","}"以及它们之间的内容组成,方法体的内容包括局部变量的声明和Java语句。方法分为构造方法、实例方法和类方法。


5.UML图:

关联关系:A类中的成员变量是用B类声明的对象。A——>B
依赖关系:A类中的某个方法的参数含有用B类声明的对象。A------>B
继承关系:
(1)A类是B类的父类。B——I>A
(2)A类(抽象类)是B类的父类。B------I>A
接口关系:A接口的一个实现是B类。B------I>A


6.对象的内存模型:

声明对象后,如Point p,p的内存中还没有任何数据,称这时的p是一个空对象,空对象不能使用,因为它还没有任何“实体”,必须再进行为对象分配变量的操作,即为对象分配实体,如p = new Point(),为各变量(实例变量和局部变量)分配内存,为类中的实例方法分配入口地址(当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,只有该类创建对象后,类中的实例方法才被分配入口地址,需要注意的是,当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,从而实例方法可以被类创建的任何对象调用执行,也就是说实例方法的入口地址被所有对象共享,当所有的对象都不再存在时,方法的入口地址才被取消; 而类中的类方法,在该类被加载到内存时,就分配了入口地址,从而类方法可以被类创建的任何对象调用执行,也可以直接通过类型调用,类方法的入口地址直到程序退出时才被取消),并计算出一个称作引用的值(该值包括代表这些变量和方法的内存地址及相关重要信息。

 

7.对象的引用存在栈中,对象的实体存在堆中。Java自动管理堆和栈,程序员不能直接设置堆和栈。栈的优势是,存取速度比堆快,缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性;堆的优势是,可以动态地分配内存大小,生成期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据(两个对象如果引用相同,则二者具有完全相同的实体,所谓的“垃圾收集”机制,就是周期性的简称某个实体是否已不再被任何对象所拥有,如果发现这样的实体,就释放实体占有的内存),但缺点是,由于要在运行时动态分配内存,存取速度较慢。

 

8.分配给对象的变量被习惯性的称作对象的实体,没有实体的对象称作空对象,空对象不能使用,加入程序中使用了空对象,程序在运行时会出现异常NullPointerException,由于对象可以动态地被分配实体,所有Java编译器对空对象不做检查,因此,在编写程序时要避免使用空对象。

 

9.可变参数:
public void f(double a, int … x),可变参数列表x可看作数组对待。

 

10.重写与重载:
首先需要清楚方法头和方法体的概念,其概念如下:
方法头: 修饰符+返回类型 +方法名(形参列表) 例如:public static void main(String []args)
方法体: { }的内容(包括这两个大括号和内部所有语法)
重写:与其父类方法方法名、形参列表完全相同;修饰符可以相同,可以不同(但不能降低访问权限);返回类型可以相同,也可以是父类方法的子类型;方法体的内容不一样;所以可以理解成外壳相似,内部不一样。
例如:假设A类有如下方法:

 

public void speak(int a){
System.out.println(“A”);
}


B继承于A,如果B中定义一个方法如下:

 

public void speak(int b){//(也可以(public void speak(int a))
System.out.println(“B”);
}

 


则对此个例子来说,称B类的speak方法重写了A类中的speak方法

重载:两个或多个方法的方法头中除方法名相同外,其他都可以不相同,方法体也不相同。
例如:有一个方法定义为float add(float a, float b),然后,再定义一个方法long add(long a, long b)

 

11.包:
例如package tome.jiafei;

  • 编译:
    (1)进入tom\jiafei的上一层目录1000编译,字节码默认保存在C:\1000\tom\jiafei中。
    C:\1000> javac tom\jiafei\Student.java
    C:\1000> javac tom\jiafei\Example.java
    (2)使用通配符*,编译全部源文件
    C:\1000\tom\jiafei> javac *.java
  • 运行:
    必须到tom\jiafei的上一层目录1000中来运行
    C:\1000> java tom.jiafei.Example


12.访问权限:Java重要知识点整理与汇总 part1-开源基础软件社区

已于2021-1-19 21:31:29修改
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐