疯狂java讲义第一章——语言概述与开发环境

一、java程序运行机制

它既想吸收编译型语言的速度快的优点,又想吸收解释型语言“跨平台”的优点。

它变成了一个“既需【编译】(平台无关的字节码文件)、又需要JVM的【解释】”的语言。

编译
是指将编写的java源代码(.java文件)转换成*.class文件,这是一种与操作系统平台无关的字节码文件,复制到哪一个平台都是通用的,也就实现了Java可移植性。
通过javac指令实现。
解释
是指将.class通用字节码文件通过Java虚拟机(JVM)解释成对应操作系统可识别的机器码,从而完成运行。
通过java指令实现。
JVM
是Java虚拟计算机(Java Virtual Machine)。同样的文件想要在不同的操作平台上运行着显然是不能的。所以需要一个转换器把同样的文件转换成对应操作平台上的可读机器码,JVM就充当这个中间转换器。
这样一来所有的编译器只负责将代码转换成JVM可读的文件(.class)就可以了,而不用关心是什么操作平台,也就是只面向虚拟机。
而不同平台的JVM都会对编译器提供相同的接口来接收读取编译后的通用文件(.class),并将接受到的.class文件解释称平台可识别的机器码。所以不同的操作平台只是JVM不同而已。

二、配置Java环境
JDK
Java SE Developent Kit,Java标准版开发包,包含编译、运行Java程序的各种工具和资源,包括Java编译器、Java运行时环境(JRE)、常用Java类库等。JDK下载地址
JRE
Java Runtime Environment,Java运行时环境。JRE包含JVM。JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心虚拟机,也需要其他类加载器、字节码校验器以及大量基础类库。JRE除包含JVM,还包含其他运行Java程序的环境支持。
如果只是运行Java程序可以只下载JRE不下载JDK
安装JDK
跟着安装提示安装就可以了。
在选择工具界面有三个工具提供选择,分别是**“开发工具、源代码、公共JRE”**,可以只需要选择前两个就可以了。因为开发工具是jdk核心工具,里面已经包含JRE了。当然选择了也没有关系。
需要注意的是安装路径最好更换一下,因为默认系统路径中带有空格,这样会在之后的使用中造成很多不必要的麻烦。另外自己选择安装路径也方便查找。路径中不要带有空格、中文字符和特殊符号。
JDK目录
bin :存放JDK各种工具命令,常用的javac、java等命令就在这个路径。
conf:相关配置文件。
include:存放平台特定头文件。
jmods:存放JDK各种各种模块。
legal:存放各个模块授权文档。
lib:JDK工具的一些补充JAR包。
设置PATH环境变量
这一步操作是为了让机器知道去哪里找javac命令和java命令。
windows平台配置方法:“计算机”右击,点”属性“,选择左侧“高级系统设置”,点击”环境变量“,可以在上面的用户环境变量中Path中添加,也可以在系统环境变量中Path中添加,区别是系统环境变量是针对使用这台电脑的所有用户。双击点开Path,点击新建把刚才安装的jdk目录下bin文件夹的路径复制到这里,点击确定就可以了。也就是告诉了计算机应该去哪里找javac、java命令。
测试环境变量配置是否成功
打开cmd界面,分别输入javac和java会出现许多提示,输入java -verssion会出现你安装的Java版本信息。
第一个Java程序
在记事本写
class HelloWorld{ public static void main(String[] args){ System.out.println("HelloWorld!"); } }
保存成**.java
在cmd中通过d:或c:可以打开磁盘,通过cd 文件名可以打开文件,找到**.java文件保存的位置输入javac **.java。如果没有报错提示继续输入说明编译成功,可以到该目录下看到生成.class文件。
继续输入java 类名,就可以执行程序了。

常用命令
cd: 进入指定目录,win.linux通用。
dir/ls:列出当前目录下所有文件和子目录。
mkdir/md:创建文件夹

windows和linux通用特殊目录
.   :当前目录。
..   :上一级目录
/  :根目录

三、Java基本规则

组织形式

java要求一个类(并不要求是punlic类)必须有main方法才可以运行,否则不能被解释器解释执行

main方法就是程序的入口。
public static void main(String[]  args)  

源文件命名规则

.通常情况下,java源程序文件名是可以任意的,但是有一种情况例外,如果java程序定义了一个public类,则该源文件的文件名必须与该public类名相同。由于java程序源文件名必须与public类的类名相同,所以一个java源文件中只能定义一个public类

.java9的GI垃圾回收器

.java的堆内存是一个运行时数据区,它保存着类的实例(对象),java虚拟机中储存着正在运行时的应用程序所有建立的对象,这些对象都是由垃圾回收器自动释放,
.垃圾回收器一般都是在jvm后台自动进行,可能是在cup空闲或者内存不足是自动进行,程序员是无法做得到精确控制垃圾回收的时间和顺序等;
.在java中,当没有引用变量指向原先分配给某个对象的内存时,该内存便成为垃圾;垃圾回收器会回收该内存,之后重新分配给新的对象。除释放没用的对象外,垃圾回收器也会清理内存记录碎片。它是由于创建对象和垃圾回收器释放丢弃对象所占的内存,内存中会出现碎片。碎片是分配给对象的内存块之间的空闲内存区,碎片整理将所占用的堆内存移到堆的一端,jvm将整理出的内存分配给新的对象
.垃圾回收器有如下几个特点:
a.垃圾回收器是回收无用对象的内存空间,这个内存空间是jvm的内存空间,它只能回收内存中的资源,对于其他物流资料,如数据库连接、磁盘I/O等就行不通。
b.可以通过将对象设置为null来暗示垃圾回收器可以回收该对象。
c.垃圾回收的发生是不可预知性的。
d.垃圾回收有2个精确性:一是垃圾回收机制能够精确标记活着的对象;二是垃圾回收器能够精确定位对象之间的引用关系。前者是完全回收垃圾对象的前提,否则就可能造成内存泄漏,而后者是实现并归和复制等算法的必要条件。
e.现在的jvm有多种不同的垃圾回收实现,每种回收机制因为算法不同而表现各不相同。
所以编写java程序时,一个基本的原则是:对于不再需要的对象,不要引用他们。如果保持对这些对象的应用,则垃圾回收器则暂时不会回收他们。则会导致系统可用内存越来越少;当系统的可用内存越来越少时,垃圾回收器的执行频率会越来越高,则程序的性能则会不断下降。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值