1. 概念入门
概念: Java是印度尼西亚爪洼岛的英文名称,这个岛因为盛产咖啡而闻名于世。
- 概念总结:
- 名字由来:Green - OAK(橡树) - Java(爪洼岛)
- 诞生年份:1995年
- 所在公司:Sun -> Oracle
- 历史发展:
- 90年:Sun公司为了一个叫Green的项目,基于C++,开发了一种新型语言,叫Oak,但被SGI打败,从此一蹶不振。
- 95年:Oak改名为Java,涉及web领域,并正式发布Java和HotJava浏览器,同年,很多公司获得了Java许可证。
- 96年:Sun公司成立JavaSoft部门,以开发、销售Java技术产品,并推出第一款开发工具包—JDK1.0。
- 98年:java的下载量超过二百万。
- 04年:Java历史上的又一里程碑,为了表示该版本的重要性,将J2SE1.5更名为JavaSE5.0。
- 05年:Java各版本均被更名,如J2ME改为JavaME。
- 09年:Oracle公司收购Sun,并获得Java版权。
- 10年:Oracle发布java7.0正式版。
- 语言特色:
- 简单高效潜力无限:简单高效,Java是基于C++起来的,但是去除了很多C++的难点。
- 平易近人粉丝泛滥:面向对象(更接近人类的思维),强大类库(各种拓展包)。
- 身体健壮安全可靠:不容易使系统崩溃,不容易中毒(不支持指针)。
- 走哪都是掌声一片:跨平台,平台可移植性,平台无关性。
- 跨平台特性:
- 源码与机器码:我们能看懂源代码,但是机器看不懂,机器只能看懂二进制的机器码。
- 编译过程:编译的过程就是将我们能看懂的代码,翻译成机器能看懂的代码。
- C语言不能跨平台:C语言的源代码,经过不同的系统平台的编译之后,产生的机器码是不同的,无法跨平台。
- java语言可以跨平台:java语言拥有自己的虚拟系统平台,叫做JVM,java源代码其实是在JVM上进行的编译,编译的结果也并不是机器码,而是一种叫做字节码的中间码。
- 字节码:字节码跟底层操作系统无关,可以跨平台,字节码在运行的时候,会根据不同的底层操作系统,转换为对应的机器码,然后再执行。
C语言运行图
java语言运行图
2. 环境搭建
概念: 本教程推荐使用JDK8版本JDK:
Java Development Kits:java开发工具箱,包括了JRE和一些EXE可执行程序。Java Runtime Environment:java运行时环境,包括了JVM和一些类库。
JDK安装的默认路径中有空格,建议换一个合适的路径,路径中不要有中文和特殊符号,然后一直下一步到完成即可。
2.1 命令行检查
概念: JDK中常用的两个可执行程序:
javac.exe:负责java程序的编译。java.exe:负责java程序的运行。
流程: win + r - cmd:开启命令行窗口:
- cmd:
java -version:查看jdk版本。 - cmd:
java -help:可以查看更多java命令。
cmd常用命令如盘符切换,路径切换,展示当前目录结构,清屏等,需要自行百度并掌握。
2.2 配置path变量
概念:
- CMD在执行命令的时候,会自动去path中配置的所有路径下寻找,所以配置path意义就是让CMD快速找到java的可执行程序。
- 计算机右键 > 属性 > 高级系统设置 > 高级 > 环境变量 > 用户变量下新建Path > 填入你的命令的所在目录(bin文件夹的绝对路径)。
- path变量是你系统中本身就存在的变量,我们的操作是将变量值添加到原值串的最前面,并且用英文分号隔开,千万不要将path的原值删除。
- 配置完任何操作,都需要重启CMD使其生效。
- JDK在安装过程中会自动生成一个Path值,该值下面也有个
java.exe,如果你不配置path,默认执行的java使用的是这个可执行程序:C:\Program Files (x86)\Common Files\Oracle\Java\javapath
- 在cmd命令行中使用javac命令进行测试。
2.3 配置JAVA_HOME
概念: JAVA_HOME 的作用有两点:
- 归一原则。
- 其他软件可能会用到
JAVA_HOME。
流程:
- 计算机右键 - 属性 - 高级系统设置。
- 高级 - 环境变量 - 用户变量下新建
JAVA_HOME- 填入你的JDK的根目录。 - 重新找到Path变量,并将之前的值修改为
%JAVA_HOME%\bin;
3. Java的运行三部曲
概念:
- 编写: 我们写代码文件,叫做源文件,后缀是
.java。 - 编译: 就是把我们能看懂的
.java文件编译成JVM能看懂的.class文件。 - 运行: 在JVM上运行
.class文件中的代码。
运行三部曲流程图
3.1 HelloWorld小程序
流程:
- 在桌面新建
.txt文件,键入如下方HelloWorld.java码段: - 将
.txt文件的后缀改为.java。 - 启动cmd命令行,键入
cd desktop切换到桌面,注意不要使用管理员方式进入cmd。 - 使用
javac HelloWorld.java命令,对java文件进行编译。 - 使用
java HelloWorld命令,来运行程序。 - 所以如果你使用
java HelloWorld.class的方式来运行程序,JVM会默认去HelloWorld包下寻找class这个类,当然会报错。
源码: desktop/HelloWorld.java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
3.2 java命令为何不能加后缀?
概念: JVM有一个特殊的规定,它规定java运行命令后面的格式是:包名.类名。
流程:
- 将HelloWorld.java文件放入一个文件夹ok中(java中包,相当于系统中的文件夹)。
- 在代码第一行添加
package ok;声明这个包的存在。 - 进入cmd命令行,重新编译:
javac ok/HelloWorld.java。 - 重新运行:
java ok.HelloWorld,得出正确的结果,说明java运行命令后的格式,确实是包名.类名。
4. 类与方法
概念:
- 类的三要素是class关键字、类名和类体。
- public是修饰符,一个.java文件中,只能有一个被public修饰的类。
- class是关键字,一个.java文件中,是可以同时存在有多个类的。
- main方法是必须写在被public修饰的类中。
- 方法的四要素是返回值、方法名、形参列表和方法体。
- 方法名:方法的一种标识,必须有。
- 返回值:方法返回给调用者的东西,必须存在,即使没有返回值也要标记为
void。 - 参数列表:调用者支付给方法的东西,不必须有。
- 方法体:方法做的事情,对于普通方法来说,必须有。
伪代码: 班长.java
public class 班长{
void 唱歌(){
张嘴闭眼, 开始唱!
}
void 唱歌( 交5块钱 ){
张嘴闭眼, 开始唱!
}
唱片 唱歌( 交500块钱 ){
张嘴闭眼, 开始唱!
边唱边录制!
将录成的唱片返回!
}
}
5. 详解HelloWorld代码
概念:
- 编码三大规矩:
- java代码(不是文本中)中不会出现任何中文符号。
- java代码中的括号(包括小括号,中括号,大括号)都是成对儿出现的,还有单引号双引号也是一样。
- java代码中,遇到左大括号,下一行必须缩格。
public class HelloWorld{}- 一个java文件中可以编写多个class,但是只能有一个public class,此时一个java文件将会产生多个.class文件。
- main方法只能写在public class中才可以被调用。
- class是关键字,用来标识HelloWorld是一个类。
- {} 叫做类体,成对出现,顾名思义,就是一个类的身体。
- HelloWorld是类的名字,要和文件名一致,首字母大写驼峰制,尽量英文名词,类名不能重复。
public static void main(String[] args){}- 为什么是public的?为了保证JVM在任何情况下都可以访问到这个入口。
- 为什么是static的?静态,共享且唯一,为了让JVM调用起来更方便。
- 为什么返回void?因为main方法结束了,程序就结束了,方法的返回值没有任何意义,所以设计为void。
- 为什么非叫main?因为JVM只认main为入口的名字
- 必须要String[] args吗?可以变化,但是意义不大,可以使用
java HelloWorld aa bb,来测试传入的数组。
System.out.println("Hello World!");- Java程序中的输出语句,括号中的内容就是输出的内容。
- 每条语句后,都要以分号结尾。
6. 代码编辑器和IDEA
概念:
- 代码编辑器
Code Editor:一种可以将记事本的功能进行增强的软件。 - 集成开发环境
Integrated Development Environment:简称IDE,就是集成了代码编写功能、分析功能、编译功能、调试功能等等的功能的一款一体化软件。- Eclipse:它是一个开源的、基于Java的软件。
- MyEclipse:是基于eclipse之上,丰富了更多的插件和功能的软件。
- NetBeans:Sun公司自己家研发的IDE。
- IDEA:全称IntelliJ IDEA,业界被公认为最好的java开发工具。
7. 使用IDEA创建父子工程
流程:
- 开启IDEA软件,在启动界面,点击
Create New Project创建项目。 - 在创建工程界面左侧,点击
Empty Project,它将作为我们所有工程的父工程。 - 指定项目名
Project name和项目位置Project location,这里要注意,项目内容会直接在你指定的目录中铺开,所以建议多创建一层文件夹。 - 点击
Finish完成创建。 - 为父工程添加一个java模块(modules)。
- 在创建工程界面左侧,点击
Java,这个是我们父工程的第一个子模块。 - 在右侧界面中选择自己的JDK版本,当然也可以使用IDEA自带的JDK11。
- 指定项目名
Project name,其余的内容会自动生成。 - 点击
Finish完成创建。 - 创建项目结构
- 项目:全小写,破折现风格,如
my-java-project。 - 包:java中的包(package)和系统中的文件夹是一个作用,就是为了分类,需要遵循域名倒置原则,如
com.joezhou.start。 - 类:包括main方法和输出代码的java最小封装单元,首字母大写驼峰,名词,如
App,Person等。
- 项目:全小写,破折现风格,如
- 在main方法左侧点击运行按钮,选择以debug方式运行HelloWorld,然后再控制台(console)查看运行结果。
源码: /javase-start/
- src:
c.y.start.HelloWorld
/**
* @author yap
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
8. Junit单元测试
概念: Junit是Java中的一个单元测试的技术。
- Junit方法可以单独进行运行,互相之间独立。
- Junit方法一般返回值为void,没有参数。
- Junit方法必须挂载
@Test注解,否则就是一个普通方法。 - Junit测试类的建议命名后缀为
Test。 - 默认IDEA中没有Junit库,自行添加
Junit4的类库到环境中。 @Before修饰的方法会在每个Junit方法执行前执行一次,方法名随意。@After修饰的方法会在每个Junit方法执行后执行一次,方法名随意。
源码: /javase-start/
- src:
c.y.start.JunitTest
/**
* @author yap
*/
public class JunitTest {
@Before
public void before() {
System.out.println("junit-before");
}
@Test
public void methodA() {
System.out.println("methodA!");
}
@Test
public void methodB() {
System.out.println("methodB!");
}
@After
public void after() {
System.out.println("junit-after");
}
}