NO1.Java学习笔记
一、编译型和解释型
【编译】程序源代码=>目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率 较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。
【解释】程序源代码=>中间码(字节码)=>目标代码(机器语言)并立即执行。中间代码的解释是由软件(不同平台软件不同)支持的,不能直接使用硬件,软件解释器通常会导致执行效率较低。
Javac.exe将java源代码编译成字节码文件(.class文件)。
Java.exe将.字节码文件(class文件)解释成可执行的机器指令。
二、JVM(Java Virtual Machine)
【Java虚拟机】负责执行字节码文件(将字节码解释成机器码,从而提高执行效率),所有平台上的JVM向编译器提供相同的编程接口。
三、JDK和JRE
JDK(Java SE Development Kit),即Java标准版开发包,包括java编译器、java 运行环境,以及常用的java类库。
JRE(Java Runtime Environment),java运行时环境。
JRE包含JVM,JVM是运行Java程序的核心虚拟机,而运行java 程序不仅仅需要核心虚拟机,还需其他的类加载器、字节码校验器以及大量的基础类库【环境支持】。
四、安装JDK和JRE
【Windows操作系统】根据Path环境变量来查找命令。Windows系统不区分大小写,Linux系统区分大小写。
在环境变量Path后面追加:JDK的安装路径\bin;
【用户变量与系统变量】一者只针对当前用户,一者针对所有的用户。
设置classpath环境变量的目的,在于告诉java执行环境,在哪些目录下可以找到你所执行的java程序所需的类(源文件、字节码文件)
cmd -> set classpath (显示classpath环境变量)临时
Set classpath=.;c:/myclass;
.;是指当前路径
Set classpath=.;%classpath%
【Linux操作系统】进入当前用户的home路径下,ls -a 该命令列出当前路径下所有文件,包括隐藏文件,通过 .bash_profile文件来设置。在该文件的PATH变量后添加jdk安装路径/bin
PATH=.:$PATH:&HOME/bin:jdk安装路径/bin
多个路径用冒号:作为分隔符,$path则用于引用原来的PATH变量值。
并在.bash_profile文件最后添加导出PATH变量的语句:export PATH
重新登录Linux平台,或者执行如下命令:source .bash_profile
通过这两种方式运行该文件,让文件中设置的PATH变量值生效。
五、EditPlus配置JDK编译java 程序
六、Java程序的基本规则
Java 程序必须以类(class)的形式存在,类是java 程序的最小程序单位,java 程序不允许可执行语句、方法等成分独立存在,所有的程序布冯都是必须放在类定义里。
源文件的主文件名必须与该Public类的类名相同,并且一个Java源文件里最多只能定义一个public类。
//java程序的入口方法,程序将从这里开始执行
public static void main(String[] args)
{
// String[] args;字符串数组
//向控制台打印一条语句
System.out.println("My name is wuxiangdong");
System.out.println("Hello World!");
}
Main方法里放置程序员需要执行的可执行性语句。
七、垃圾回收机制
显示进行垃圾回收:程序忘记及时回收无用内存,从而导致内存泄漏,降低系统性能;程序错误地回收程序核心类库的内存,从而导致系统崩溃。
Java程序的内存分配和回收都是由JRE在后台自动回收不再使用的内存,这种机制称为垃圾回收机制。【一条超线程来检测和控制】
【垃圾回收】是一个动态存储管理技术,它自动地释放不再被程序引用对象,按照特定的垃圾回收算法来实现内存资源的自动回收功能。
创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存区,碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。
【优点】提高编程效率(花时间解决难懂的存储器问题);保护程序的完整性。
【特点】只能回收内存资源(无用对象的内存空间);通过将该对象的引用变量设置为Null,通过这种方式暗示垃圾回收机制可以回收该对象;不同JVM的垃圾回收机制和算法不同;