文章目录
传送门:
01 JAVA前瞻
1. 计算机语言的发展史
程序员要做到一门精多门通。
2. java语言的发展
2.1 JAVA语言为什么流行起来?
- 外部环境
- 互联网的爆发式发展
- 互联网上的电脑硬件不同,软件环境差异较大,需要一个跨平台语言
- Java平台核心优势
- 跨平台(不会随着硬件的改变而改变,实现一次编译到处运行)
2.2 Java各版本和体系结构
- JavaEE:定位在服务器端的应用
- JavaSE:定位在个人计算机上的应用
- JavaME:定位在消费性电子产品的应用上
2.3 一些名词介绍
- JDK:Java开发工具集
- JRE:Java运行环境
- JVM:就是一个虚拟的用于执行bytecodes字节码的计算机。
3. java跨平台原理(虚拟机、字节码文件)
3.1 JVM介绍
-
JVM(Java VIRTUAL MACHINE)是一种规范。就是一个虚拟的用于执行bytecodes字节码的计算机。
-
Java虚拟机是Java最核心技术,也是跨平台的基础。
-
可以使用软件来实现
SUN、BEA等,也可以自己写一个JVM
-
可以使用硬件来实现
3.2 JVM和Java的跨平台特性
-
通过“编译器”将Java源程序编译成Java字节码文件(.class)
字节码文件采用结构中立的中间文件格式
-
通过“解释器”将Java字节码文件解释为对应机器语言并运行
-
Java和C跨平台原理的比较
- Java:一次编译,到处运行
- C:多次编译,到处运行
3.3 Java的特点
- Java是跨平台的
Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。 - Java是简单的(去除了指针与内存管理)
- Java是安全的
- Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。
- Java提供了自动内存管理机制,由垃圾回收器在后台自动回收
- Java在字节码的传输过程中使用了公开密钥加密机制(PKC)
- 在运行环境提供了四级安全性保障机制:
字节码校验器——类装载器——运行时内存布局——文件访问限制
- Java是完全面向对象的(oop的编程思想)
- Java和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。
- 由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!
- Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。
- Java是健壮的
- Java的强制类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证
- 对指针的丢弃是Java的明智选择
- Java的安全检查机制使得Java更具健壮性
4. Java开发之前的准备
4.1 常用的DOS命令(文件夹/目录操作命令)
dir
:directory查看当前目录下的文件和子文件夹cd
: change directory改变当前文件夹md
:make directory创建当前文件夹rd
: remove directory删除当前文件夹cls
: clear screen清除屏幕- 切换盘符
d:
- Tab键帮助自动完成文件名或者文件夹
- 上下箭头键显示之前或者之后的命令
4.2 安装JDK
-
JDK官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html
-
选择:“Accept License Agreement”
-
下载的文件:jdk-12.0.2_windows-x64_bin.exe
-
点击 “jdk-12.0.2_windows-x64_bin.exe”弹出安装向导页面,点击“下一步”;
-
可自定义选择将JDK安装在目标文件夹(默认即可),选择“下一步”;然后,选择关闭
-
生成JRE:电脑安装JDK12后,发现新版的JDK12安装完成后没有JRE,运行一下命令,生成JRE:
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
命令手动生成jre。
C:\WINDOWS\system32>d: D:\>cd java\jdk-12.0.2 D:\java\jdk-12.0.2>dir 驱动器 D 中的卷是 软件D卷的序列号是 5C46-E073 D:\java\jdk-12.0.2 的目录 2021/12/30 15:05 <DIR> . 2021/12/30 15:05 <DIR> .. 2021/12/30 15:05 <DIR> bin 2021/12/30 15:05 <DIR> conf 2019/07/16 01:13 3,244 COPYRIGHT 2021/12/30 15:05 <DIR> include 2021/12/30 15:05 <DIR> jmods 2021/12/30 15:05 <DIR> legal 2021/12/30 15:05 <DIR> lib 2021/12/30 15:05 1,263 release 2 个文件 4,507 字节 8 个目录 61,881,311,232 可用字节 D:\java\jdk-12.0.2>bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
此时,java目录下为:
-
进入环境变量配置界面
- 方法1:右键点击计算机–>属性–>高级系统设置–>高级–>环境变量
- 方法2:win+ R –> 输入 sysdm.cpl 并回车 –> 高级 –> 环境变量
-
添加环境变量
通过设置不同的JAVA_HOME,可以实现不同版本的切换。JAVA_HOME配置的是哪一个就会使用哪一个,不会受到其他影响
变量名 变量值 JAVA_HOME C:\Program Files\Java\jdk-12 Path %JAVA_HOME%\bin Path %JAVA_HOME%\jre\bin -
在CMD中运行
java -version
C:\Users\admin>java -version java version "12.0.2" 2019-07-16 Java(TM) SE Runtime Environment (build 12.0.2+10) Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
以上步骤完成就成功搭建JDK的安装及环境变量了!
4.3 常用Java开发工具
-
文本编辑器:notepad++
-
集成开发环境:IDEA
-
反编译软件—jd-gui.exe或者luyten-0.5.4.exe
反编译指的是
class --> 源代码
,因为编译的时候不会对注释进行处理,所以反编译的时候不可能得到注释。
下面我们先学习用notepad++来编译执行代码
public class Welcome{
public static void main(String[] args){
System.out.println("Hello java!!!");
}
}
保存为:Welcome.java
编译阶段:(编译器创建class字节码文件)
- 进入java文件所在目录,执行命令:
javac Welcome.java
后生成Welcome.class - 编译时必须加上扩展名.java。
执行阶段:
- 进入java文件所在目录,执行命令:
java Welcome
- 运行的是类而非class文件,所以类名后不能加扩展名.class
注意:
-
使用命令行的方式执行的时候,cmd的默认方式是GBK,因此,在输入中文的时候需要设置文件的编码格式为ANSI,就不会出现乱码错误。
-
java文件的名称必须跟public class的名称保持一致
-
一个java文件中可以包含多个class,但是public class只能有一个
-
public static void main(String[] args)
是所有java程序的入口,如果想执行对应的java代码,则必须要添加如下方法,且格式是固定的。 -
main方法中参数列表可以支持多种写法:
String[] args
String [] args
String args[]
-
main方法中参数的名称无所谓,但是一般写成args
-
java代码在编写的时候,每行结尾需要使用
;
结束 -
java代码的代码块需要使用
{}
括起来,前后匹配 -
编程风格:
- 注意缩进
- 成对编程:括号、引号应该写完后再往里加内容
- 见名知意
-
java中的注释是程序员为读者做的说明,提高程序可读性的一种手段。注释不会出现在字节码文件中,即Java编辑器编译时会跳过注释语句。
分为三类:
-
单行注释:
//
-
多行注释:
/* */
-
文档注释:可以通过JDK提供的Javadoc命令生成程序的API文档
/** * */
-