1. 什么是程序
为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。
比如:微信app、QQ等
2. Java 的历史与特点
2.1 Java 的历史
Sun Microsystems
于1995
年推出的面向对象的程序设计语言,共同创始人的詹姆斯.高斯林(James Gosling)
被誉为“Java之父”。1996
年发布JDK 1.0
1998
年发布JDK 1.2
- 平台名称:
J2SE(Stadard Edition)
、J2EE(Enterprise Edition)
、J2ME(Jicro Edition)
- 平台名称:
2004
年发布JDK 1.5 版本更名:Java 5.0
- 平台名称:
Java SE、Java EE、Java ME
- 平台名称:
2006
年发布Java 6.0
2009
年被Oracle收购2011
年由Oracle发布Java 7.0
2014
年由Oracle发布Java 8.0
2017
年由Oracle发布Java 9.0
2018
年由Oracle发布Java 10.0
2018
年由Oracle发布Java 11.0
2.2 Java 的语言特点
- 面向对象(贴近人类思维模式,模拟现实世界,解决现实问题)
- 简单性(自动内存管理机制、不易造成内存溢出;简化流程处理、语义清晰)
- 跨平台(操作系统、服务器、数据库)
3. Java 的运行机制
3.1 计算机的执行机制
-
编译执行:
-
将源文件编译成平台相关的机器码文件,一次编译,多次执行
-
执行效率高、不可跨平台
-
-
解释执行:
-
将源文件交给不同的平台独有的解释器(现编译现执行)
-
执行效率低,可以跨平台
-
3.2 Java的执行机制
-
先编译、再解释:
-
将源文件编译成字节码文件(平台中立文件.class),再将字节码文件进行解释执行。
-
Java的设计理念:Wirte Once Run Anywhere
JVM:java的虚拟机,在不同的硬件操作系统中模拟相同的环境。
不同平台的JVM都可以识别
*.class
文件
-
3.3 名词解释
- JVM(Java Virtual Machine)虚拟机:
- 使用软件在不同操作系统中,模拟相同的环境
- JRE(Java Runtime Environment)运行环境:
- 包含JVM和解释器,完整的Java运行环境
- JDK(Java Development Kit)开发环境:
- 包含JRE + 类库 + 开发工具包(编译器 + 调式工具)
4. Java 的环境搭建
4.1 配置环境变量
我的电脑(此电脑) >> 右键点击属性 >> 高级系统设置
1.新建系统变量,变量名输入JAVA_HOME;变量值输入jdk本地安装路径
2.新建系统变量,变量名输入CLASSPATH;变量值输入.(代表当前路径)
3.注意:系统变量下,查找已存在的path变量,追加%JAVA_HOME%\bin
4.2 Dos命令操作
-
windows + R
快捷键呼出运行窗口 -
再输入
cmd
并回车打开DOS
命令窗口 -
输入
javac
回车
4.3 常用DOS命令
- 更换盘符:d:
- 查看当前目录下的文件及文件夹:dir
- 进入文件夹:cd 文件夹的名称
- 返回上一级目录:cd …
- 清空屏幕:cls
- 删除文件:del 文件名
- 删除文件夹:rd 文件夹名称
- 退出:exit
5. 第一个应用程序
-
创建一个
chapter_01
目录 -
新建以
.java
结尾的源文件:First.java
-
编写第一个程序
class HelloWorld { public static void main(String[] args) { System.out.print("Hello Everyone"); } } # class:类(代码的容器) # HelloWorld:类的名字(自定义) # public:公共的或者公开的意思 # static:静态的含义 # void:无法回的、空的 # main:主要的 # String:字符串 + [] + args:arguments的缩写,指代对象,参数或者字符串 # main:主方法(程序的入口) # System:程序 + out:输出 + print:打印 # System.out.print("");控制台输出语句:(""之间的为控制台输出的具体文本内容) # ;:英文的分号(代表一行代码的结束)
main(String[] args
:String[] args
是main
函数的形式参数,表示字符串参数(也就是动态参数、可以传多个string参数给方法,可以理解成无限参数);其中args
作为参数,形式是String
数组; -
编译:
-
javac + 空格 + 源文件名称.java
-
-
运行:
-
java + 空格 + 类名
-
6. 类的阐述与定义规范
类与类是并列的关系,不能嵌套;
比如:
class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello Everyone");
}
}
class GoodByeWorld{
public static void main(String[] args){
System.out.print("GoodBye");
}
}
当我们对其进行编译时,会在当前目录下生成多个字节码文件,如下图:
目录结构如下:
-
同一个源文件中可以定义多个类
-
编译后,每个类都会生成独立的
.class
文件 -
一个类中,只能有一个主方法,每个类都可以有自己的主方法
-
public
修饰的类称为公开类,要求类名必须与文件名称完全相同,包括大小写;比如class HelloWorld { public static void main(String[] args) { System.out.print("Hello Everyone"); } } >>> 使用public修饰了之后就会变成个一个公开类,此时它会有一个要求:类名必须与文件名称完全相同,包括大小写,否则会报错; public class HelloWorld { public static void main(String[] args) { System.out.print("Hello Everyone"); } }
此时就必须要将文件名
First.java
修改成HelloWorld.java
,内容如下:然后再进行编译:
那么如果一个文件有多个公开类可不可以呢?
那肯定是不行的,因为我们之前说了文件名必须要与公开类的名称保持一致,而文件只能有一个文件名;
接下来我们来讲一下,公开类与非公开类的区别:
public
:我们成为访问修饰符,实际上是限定了我们的程序在之后的书写时目标文件/目标类所访问的范围,而在
java
是有4种访问修饰符; -
一个源文件中,只能有一个公开类;
7. Package(包)
7.1 Package 的作用与基本应用
-
作用:类似于文件夹,用于管理字节码(.class)文件;
-
语法:package 包名;
-
位置:必须写在源文件的第一行
- 创建一个文件夹
Demo01
,并新建一个HelloWorld.java
文件,内容如下:
package p1; public class HelloWorld { public static void main(String[] args) { System.out.print("Hello Everyone"); } }
-
编译:
-
如果直接使用:
java HelloWorld
运行的话,会报错 -
此时必须要加上包名来进行访问才可以,所以需要新建一个文件夹
p1
,然后将字节码文件放在p1
文件夹中,然后在Demo01
目录下执行java p1.HelloWorld
,如下图:目录结构如下:
那么如果是这样的话,每次运行字节码文件的时候,都要手动创建一个文件夹,会显得很麻烦,那么有没有什么办法呢?
可以带包进行编译;
- 创建一个文件夹
7.2 带包编译、运行
-
带包编译:
javac -d . 源文件名称.java
(自动生成目录结构)-
我们先将之前创建的
p1
文件夹给删掉 -
然后执行命令
javac -d . HelloWorld.java
,如下图:编译完成后,要怎么带包运行呢?
-
带包运行:
java 包名.类名
(包名+类名又称全限定名)
如上所述,我们在源文件编写的
package
后面的包名是自定义的;而我们定义的包名可以是多层的;
我们先将之前生成的
p1
文件夹给删除掉;源文件内容如下:
package p1.p2.p3; public class HelloWorld { public static void main(String[] args) { System.out.print("Hello Everyone"); } }
然后继续带包名编译:
生成的目录结构:
带包运行,还是在
Demo01
目录下执行:java p1.p2.p3.HelloWorld
上面介绍了包里面的字节码文件怎么去访问;
那么我们的包名到底有几级才合适呢?以及如何命名?代表的具体含义有哪些呢?
-
7.3 Package 的命名规范
-
采用域名倒置的规则:
www.baidu.com.cn --> cn.com.baidu.xxx
-
例如:
cn.com.company.department.group.project.module.XxxClass
公司域名 >> 公司部门 >> 组名 >> 项目 >> 模块 >> 类
如果这个公司很简单的话,只有一个部门,那么就不需要进行分组了;
cn.com.company.department.project.module.XxxClass
或者
cn.com.company.project.module.XxxClass
如果公司还分地域,也可以加上地域,如下是加上北京:
公司域名 >> 公司部门 >> 地域 >> 组名 >> 项目 >> 模块 >> 类
cn.com.company.beijing.department.project.module.XxxClass
或者
cn.com.company.bj.department.project.module.XxxClass
一般控制在
4-5
级左右即可;
8. Java 的语言规范
8.1 编码规范:书写格式
-
层级之间必须缩进(Tab:一个制表符)
-
一行只写一句代码
package demo; public class HelloWorld { public static viod main(String[] args) { System.out.println("Hello"); System.out.println("World"); } } //System.out.println("Hello"); //System.out.print("Hello"); //两者的区别: //前者输出后自动换行,后者则不会
8.2 编码规范:代码注释
注:注释不参与编译
-
单行注释
// 单行注释(不参与编译/编码,且在源代码层面)
public class TestAnnotation{ public static void main(String[] args){ // 以下代码代表控制台输出一句文本 System.out.print("HelloWorld"); // 注释下一行 System.out.print("Hello Everyone"); } }
-
多行注释
/* 多行注释 */
public class TestAnnotation{ public static void main(String[] args){ // 以下代码代表控制台输出一句文本 System.out.print("HelloWorld"); /* 多行注释的开始 ... ... 多行注释的结束 */ System.out.print("Hello Everyone"); } }
建议在学习过程中养成注释习惯!
-
文档注释
可生成外部文档:
javadoc -d . HelloWorld.java
为什么要做文档注释呢?
因为在单行注释或者多行注释的时候,只有在拿到源代码的时候才可以查看,而如果生成外部文档的话,即使没有源代码也可以查看文件具体有哪些内容以及功能
/** 文档注释 */
- 修饰类
- 修饰方法函数
/** 修饰类,对这个类做一个简单的描述 文档注释 这个类旨在介绍java中的注释方式有哪些 */ public class TestAnnotation{ /** 这个方法代表程序的入口,即为书写逻辑代码的位置 */ public static void main(String[] args){ // 以下代码代表控制台输出一句文本 System.out.print("HelloWorld"); /* 多行注释的开始 ... ... 多行注释的结束 */ System.out.print("Hello Everyone"); } }
保存,打开
CMD
:如上图抛出一个警告,书写不够规范,并不会影响内容;
以及生成多个文件,其中有一个
index.html
文件,双击打开后如下图:
8.3 编码规范:标识符命名
- 语法规定:
- 可以由:字母、数字、_、$ 组成,但不能以数字开头;
- 不能与关键字、保留字重名;
- 约定俗成:
- 望文生义、见名知义
- 类名由一个或多个单词组成,每个单词首字母大写(pascal - 帕斯卡:
HelloWorld、GetElementById
); - 函数名、变量名由一个或多个单词组成,首单词首字母小写,拼接词首字母大写(camel - 驼峰:
helloWorld、getElementById
); - 包名全小写,只可以使用特殊字符
.
,并且不以.
开头或结尾 - 常量全大写,多个单词用
_
连接;
9. 总结
-
Java
的由来- 1995年推出的面向对象的编程语言。三个平台
Java SE、Java EE、Java ME
,2014年发布的JDK8是商用主流版本。
- 1995年推出的面向对象的编程语言。三个平台
-
Java
语言的特点- 面向对象、简单性、跨平台性
-
Java
的运行机制- 先编译、再解释
-
第一个应用程序
- 定义
.java
结尾的源文件,书写源代码,javac
编译,java
运行
- 定义
-
package
包- 定义在源文件的首行,用于管理
.class
文件
- 定义在源文件的首行,用于管理
-
Java
的语言规范- 书写格式、代码规范、三种注释、标识符命名