本文共 5749 字,大约阅读时间需要 19 分钟。
1991年,Sun公司的Green项目,Oak
1995年,推出Java测试版 1996年,JDK1.0 1997年,JDK1.1 1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,更名为Java2 1999 Java被分成J2SE、J2EE 和J2ME,JSP/Servlet技术诞生 2004年,J2SE 5.0 (1.5.0) Tiger老虎.为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。 2006年,J2SE 6.0 (1.6.0) Mustang野马.此时,Java的各种版本被更名,取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME 2009年4月20日甲骨文收购Sun公司,交易价格达74亿美元 2011年,JavaSE7.0 2014年 ,JavaSE8.02005 JavaOne大会召开,Sun公司公开Java SE6。此时,Java的各种版本被更名,取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME
1.C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译。
2.Java 源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。 字节码文件不面向任何具体平台,只面向虚拟机。
3.Java 虚拟机是可运行 Java 字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口。
4.Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有相应的 Java虚拟机。但是性能比C/C++要低。
5.Java的跨平台原理决定了其性能没有C/C++高
Java程序的运行分为两步:先编译再解释执行
通过“编译器”将Java源程序编译成Java 字节码文件(.class)(字节码文件采用结构中立的中间文件格式)
通过不同的“虚拟机”将Java字节码文件解释为对应机器语言并执行
字节码文件是 .class文件 二进制文件
格式中立、平台无关的二进制文件 是编译的产物,是解释的原料JVM是Java Virtual Machine(Java虚拟机)的缩写
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JVM就是一个虚拟的用于执行bytecodes字节码的计算机
Java虚拟机是Java最核心技术,也是跨平台的基础。
Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因
JDK
Java Development Kit
针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
JRE
Java Runtime Environment
是运行Java程序所必须的环境集合,包含JVM标准实现及Java核心类库。
JVM
Java Virtual Machine
解释运行Java字节码文件,跨平台的核心
联系:JDK 包含JRE,JRE包含JVM。
我们想要运行一个已有的Java程序,那么只需安装 JRE 即可。
我们想要开发一个全新的Java程序,那么必须安装 JDK
Java:一次编译,到处运行 C:多次编译,到处运行
在互联网情况下,平台各异,Java的跨平台更具有优势
Java可以跨所有平台吗:要看有没有提供并安装相应的虚拟机
Java的运行速度没有C语言快
Java需要将class文件解释成机器码再执行;C执行执行机器码
DIR(Directory): 显示目录
CD(Change Directory): 改变或显示当前目录
CLS(clear screen):清除屏幕
切换盘符::快速换盘符,例如: d: 就是切换到D盘
Tab :自动补齐键
↑ ↓ :查看历史语句
MD(Make Directory): 建立子目录
RD(Remove Directory): 删除子目录
Copy 复制文件
Del (delete)删除文件
Window中文件夹(子文件夹),在DOS称为目录(子目录),
查看某个文件夹下的子文件夹和文件 dir—directory file /p /w
新建文件夹 md make directory
删除文件夹 rd remove directory(目录必须是空的)
改变当前的文件夹 cd change directory cd…(Tab键的使用)
Copy 源文件 目的文件
copy d:\log.txt d:\myjava\log.txt
copy \log.txt log2.txt
Del log.txt
Del . 删除当前目录下所有文件(需要确认是否删除)
Java是严格区分大小写的语言。
代码编写: 程序员编辑代码并保存在磁盘上
.java 源程序 源代码
1.定义一个类 Test
2.定义一个方法 main 执行的入口
3.编写语句 输出一句话
注释:描述性文字,不参与编译
Java程序源文件的命名不是随意的,Java文件的命名必须满足如下规则。
由于Java程序源文件的文件名必须与public类的类名相同,因此,一个Java源文件里最多只能定义一个public类。
注意:
1.一个Java源文件可以包含多个类定义,但最多只能包含一个public类定义;
如果Java源文件里包含public类定义,则该源文件的文件名必须与这个public类的类名相同
2.虽然Java源文件里没有包含public类定义时,这个源文件的文件名可以是随意的,但推荐让Java源文件的主文件名与类名相同,这可以提供更好的可读性。
通常有如下建议:一个Java源文件只定义一个类,不同的类使用不同的源文件定义。让Java源文件的主文件名与该源文件中定义的public类同名。
常见错误和注意事项
编译器创建class字节码文件
进入java文件所在目录,执行命令:javac Welcome.java .编译时必须加上扩展名.java。
.java----.class 编译器 javac.exe compile 编译
错误1:‘javac’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
错误2:javac: 找不到文件: Test.java
错误3:找不到或无法加载主类 Test.class
错误4:找不到或无法加载主类 Test
进入java文件所在目录,执行命令:java Welcome
运行的是类而非class文件,所以类名后不能加扩展名.class
解释器或者虚拟机 (解释器是虚拟机的一部分)
错误: 找不到或无法加载主类 Test.class
解决:java Test 而不是 java Test.class
1.配置classpath
classpath .;d:\myjava
2.path的另外一种配置方式
JAVA_HOME D:\Java\jdk1.8.0_161
PATH %JAVA_HOME%\bin ==============>D:\Java\jdk1.8.0_161\bin
3.path和classpath区别
javac Test.java
java Test
path:javac、java在哪里
classpath:Test 字节码文件在哪里
4.Java_HOME
便于重用环境变量,利用后期修改
5.println和print的区别
换行否 line
6.转义字符
\n 换行
\t tab
7.一个文件可以有多个类class吗?可以
但是最多只能有一个类是public的
编译之后,会生成多个class文件
8.反编译
编译 .java----.class
反编译 .class----.java
注释不参与编译操作
9.注释
作用:说明性的文字,不参与编译;将某些代码注释,将不再执行,程序调试的常用方法;
类型:单行注释 多行注释 文档注释
编译 compile
源代码----->class
反编译 decompile
class---->源代码
反编译软件
jd-gui.exe
因为编译的时候不会对注释进行处理,所以反编译时不可能得到注释
转载地址:http://vojnn.baihongyu.com/