本文笔记来自硅谷柴林燕老师的笔记 只为自己看笔记方便使用 不做他用
目录
第1章 Java概述
1.1 Java语言发展历史(记关键点)
1.2 Java语言特点(后面需要关注和体会)
1.3 Java语言跨平台原理(理解)
1、Java语言跨平台原理
2、JVM、JRE、JDK的关系
1.4 Java语言开发环境(会操作)
1、JDK的下载
2、JDK的安装
3、配置环境变量
1.5 HelloWorld(动手实现)
1.5.1 开发说明
1.5.2 常见错误(会解决错误)
第1章 Java概述
1.1 Java语言发展历史(记关键点)
Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。
Java之父是詹姆斯.高斯林(James Gosling)。
1996年发布JDK1.0版。大约26年。
1.2 Java语言特点(后面需要关注和体会)
(1)优点
-
面向对象:Java语言支持封装、继承、多态,面向对象编程,让程序更好达到
高内聚
,低耦合
的标准。 -
支持分布式:Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
-
健壮型:Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
-
安全性高:Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
-
跨平台性:Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
(2)缺点
-
语法过于复杂,严谨,对程序员的约束比较多,与python和php等相比入门相对较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升。
-
一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用Java语言开发网站或应用系统的需要一定的经济实力。
1.3 Java语言跨平台原理(理解)
1、Java语言跨平台原理
很多时候,我们写的程序可能要在多个操作系统运行,这个时候就要求我们的程序需要在尽可能不改动的情况下完实现这个目标。不同的语言实现跨平台的方式不同。Java语言实现跨平台是建立在“虚拟机”基础之上的。
在Java出现之前,最为流行的编程语言是C和C++。如果我们想要在一台使用x86_64指令集的CPU的机器(如个人PC)上运行一个C语言程序,就需要编写一个将C语言翻译成x86_64汇编语言的编译器。如果想要在一台使用arm指令集的CPU的机器(如苹果手机)上,运行一个C语言程序,同样需要编写一个将C语言翻译成arm汇编语言的编译器。这样严重影响了C程序的跨平台性,因为针对特定的指令集开发编译器是一个难度非常大的工作。
那么Java是如何解决这个问题的呢?Java设计了一套简洁的虚拟指令集,也就是字节码。如果我们想要在一台机器上运行Java程序,只需要将Java程序编译成字节码就可以了。编写一个将Java程序翻译成Java字节码的编译器,比起编写一个将Java程序翻译成x86_64指令集的编译器来说,要简单得多。可是这里产生了一个问题,难道我们的机器可以直接执行字节码这样的虚拟指令集吗?当然是不能的。我们需要针对不同的指令集,开发对应的字节码解释器。这个工作同样比较简单。
Java虚拟机(JVM,Java Virtual Machine)是由软件技术模拟出计算机运行的一个虚拟的计算机,它负责解释执行字节码指令集。也就是说,只要一台机器可以运行Java的虚拟机,那么就能运行Java语言编写的程序。而不同的平台,需要安装不同的Java虚拟机程序。那么我们编写完Java程序之后,需要先将.java的源文件编译为.class的字节码文件,然后在Java虚拟机中来执行这些字节码文件。
Java虚拟机的设计不仅仅解决了Java程序跨平台的问题,同时解决了很多语言的跨平台问题。
-
.NET(C#,VB等语言)也有虚拟机,也能实现跨平台,但是只能在Windows操作系统下安装.NET环境。
-
C++不受虚拟机的限制,但是需要用不同平台的编译器重新编译一次。需要编写n个版本的编译器。
-
Java虚拟机可以配置在MacOS,Windows(PC操作系统),Linux等上,但是不能配置在WP(Windows Phone),IOS(移动操作系统)上,只能配置在android(移动操作系统)。Java程序可以实现一次编译处处运行。
2、JVM、JRE、JDK的关系
-
JVM(Java Virtual Machine ):Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在JVM 之上。
-
JRE (Java Runtime Environment) :是Java程序的运行时环境,包含
JVM
和运行时所需要的核心类库
。 -
JDK (Java Development's Kit):是Java程序开发工具包,包含
JRE
和开发人员使用的工具。
我们想要运行一个已有的Java程序,那么只需安装JRE
即可。
我们想要开发一个全新的Java程序,那么必须安装JDK
,其内部包含JRE
。
1.4 Java语言开发环境(会操作)
1、JDK的下载
-
下载网址:www.oracle.com
-
下载步骤:
-
登录Oracle公司官网,www.oracle.com,如图所示:在底部选择Developers开发者
-
在Developers页面中间的技术分类部分,选择Java
,单击进入,如图所示:
展示的是最新Java版本,例如Java17。单击Download Java,然后选择具体的版本下载。
选择Download Java按钮后
选择Accept License Agreement,
注册或登录后下载
2、JDK的安装
-
安装步骤:
-
双击
jdk-8u202-windows-x64.exe
文件,并单击下一步
,如图所示:
-
取消独立JRE的安装,单击公共JRE前的下拉列表
,选择此功能将不可用
如图所示:
修改安装路径,单击更改,如图所示
将安装路径修改为D:\develop\Java\jdk1.8.0_202\
,并单击确定,如图所示:
单击下一步,如图所示:
稍后几秒,安装完成,如图所示:
目录结构,如图所示:
3、配置环境变量
为什么配置path?
希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。
例如:我们在C:\Users\Irene目录下使用java命令,结果如下:
我们在JDK的安装目录的bin目录下使用java命令,结果如下:
我们不可能每次使用java.exe,javac.exe等工具的时候都进入到JDK的安装目录下,太麻烦了。我们希望在任意目录下都可以使用JDK的bin目录的开发工具,因此我们需要告诉操作系统去哪里找这些开发工具,这就需要配置path环境变量。
方案一:只配置path
-
步骤:
-
打开桌面上的计算机,进入后在左侧找到
计算机
,单击鼠标右键
,选择属性
,如图所示:
-
选择高级系统设置
,如图所示:
在高级
选项卡,单击环境变量
,如图所示:
在系统变量
中,选中Path
环境变量,双击
或者点击编辑
,如图所示:
在变量值的最前面,键入D:\develop\Java\jdk1.8.0_202\bin;
分号必须要写,而且还要是英文符号。如图所示:
环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac
命令,运行成功。
方案二:配置JAVA_HOME+path
-
步骤:
-
打开桌面上的计算机,进入后在左侧找到
计算机
,单击鼠标右键
,选择属性
,如图所示:
-
选择高级系统设置
,如图所示:
在高级
选项卡,单击环境变量
,如图所示:
在系统变量
中,单击新建
,创建新的环境变量,如图所示:
变量名输入JAVA_HOME
,变量值输入 D:\develop\Java\jdk1.8.0_202
,并单击确定
,如图所示:
选中Path
环境变量,双击
或者点击编辑
,如图所示:
在变量值的最前面,键入%JAVA_HOME%\bin;
分号必须要写,而且还要是英文符号。如图所示:
环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac
命令,运行成功。
1.5 HelloWorld(动手实现)
1.5.1 开发说明
1、程序开发步骤说明
JDK安装完毕,可以开发我们第一个Java程序了。
Java程序开发三步骤:编写、编译、运行。
2、编写Java源程序保存.java源文件
-
在
D:\atguigu\javaee\JavaSE20190624\code\day01_code
目录下新建文本文件,完整的文件名修改为HelloWorld.java
,其中文件名为HelloWorld
,后缀名必须为==.java==。 -
用notepad++等文本编辑器打开(虽然是记事本也可以,但是不够没有关键字颜色标识,不利于初学者学习)
-
在文件中输入如下代码,并且==保存==
public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } }
友情提示:
每个字母和符号必须与示例代码一模一样。
第一个
HelloWord
源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件
编译成JVM可以看懂的字节码文件
,也就是.class文件。 -
3、编译Java源文件生成.class字节码文件
在DOS命令行中,进入
D:\atguigu\javaee\JavaSE20190624\code\day01_code
目录,使用javac
命令进行编译。方式一:使用文件资源管理器打开
D:\atguigu\javaee\JavaSE20190624\code\day01_code
目录,然后在地址栏输入cmd。方式二:在notepad++软件的文件菜单-->打开所在文件夹-->命令行(要求notepad++软件必须是用管理员权限启动的,否则会出现已经正确配置了环境变量,却仍然找不到javac命令的问题)
命令:
javac Java源文件名.后缀名
举例:
javac HelloWorld.java
编译成功后,命令行没有任何提示。打开
D:\atguigu\javaee\JavaSE20190624\code\day01_code
目录,发现产生了一个新的文件HelloWorld.class
,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。Java源文件的编译工具
javac.exe
4、运行Java程序
在DOS命令行中,在字节码文件目录下,使用
java
命令进行运行。
命令:
java 主类名
主类是指包含main方法的类,main方法是Java程序的入口:
public static void main(String[] args){
}
举例:
java HelloWorld
友情提示:
java HelloWord 不要写 不要写 不要写 .class
Java字节码文件的运行工具:java.exe
1.5.2 常见错误(会解决错误)
1、书写错误
-
单词拼写问题
-
正确:class 错误:Class
-
正确:String 错误:string
-
正确:System 错误:system
-
正确:main 错误:mian
-
-
Java语言是一门严格区分大小写的语言
-
标点符号使用问题
-
不能用中文符号,英文半角的标点符号(正确)
-
括号问题,成对出现
-
2、Java程序的结构与格式
结构:
类{
方法{
语句;
}
}
格式:
(1)每一级缩进一个Tab键
(2){}的左半部分在行尾,右半部分单独一行,与和它成对的"{"的行首对齐
3、字符编码问题
当cmd命令行窗口的字符编码与.java源文件的字符编码不一致,如何解决?
解决方案一:
在Notepad++等编辑器中,修改源文件的字符编码
解决方案二:
在使用javac命令式,可以指定源文件的字符编码
javac -encoding utf-8 Review01.java
4、大小写问题
(1)源文件名:
在Windows操作系统中.java的源文件名不区分大小写,我们建议大家养成区分大小写的习惯。
(2)字节码文件名与类名
严格区分大小写
(3)代码中
严格区分大小写
5、源文件名与类名一致问题?
(1)源文件名是否必须与类名一致?public呢?
如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
(2)一个源文件中是否可以有多个类?public呢?
一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
但是一个源文件只能有一个public的类。
(3)main方法必须在public的类中吗?
不是。
但是后面写代码时,基本上main方法(主方法)习惯上都在public类中。