Java基础 1. Java开发环境搭建
文章目录
1.1. 常用的DOS命令
1.1.1. 常用的Windows组合键:
- win+D
- 回到桌面
- win+E
- 打开文件资源管理器
- win+R
- 打开运行窗口
- win+L
- 锁屏
- alt+tab
- 应用之间的切换
1.1.2. 常用的DOS命令:
-
打开DOS命令窗口
- win+R
- 输入cmd(command)
-
在DOS命令窗口完成复制和粘贴
- 在DOS中, 用鼠标左键拖动选中想要复制的内容, 然后点击右键, 就复制好了, 如果想要粘贴在DOS中, 再点击右键或者在键盘上按下ctrl+v即可粘贴
-
在DOS命令窗口删除未执行的命令
- ctrl+backspace
-
什么是当前路径? 假设进入DOS命令窗口时显示的是: C:\Users\lenovo>, 那么当前的路径就是C:\Users\lenovo
-
dir
- 列出当前路径下的所有目录和文件
-
cls
- 清屏
-
exit
- 退出
-
切换盘符
- c:
- d:
- e:
-
del [文件名]
-
删除一个文件
-
del *.java
- 删除多个.java文件
-
-
ipconfig
-
查看电脑的IP地址
-
ipconfig /all
- 查看详细信息
-
-
ping IP地址
- ping 192.168.1.1
- ping www.baidu.com
- 测试两台计算机是否能够通信
- ping www.baidu.com -t
- 一直ping
-
ctrl+c
- 强制终止命令的执行
-
上下箭头可以翻出历史命令
-
help
- 查看命令帮助信息
-
cd [路径]
- 切换目录, change directory
- 路径包括
- 绝对路径: 在Windows当中, 路径开始的时候, 是以盼复开始的, 都是绝对路径, 例如: cd C:\Users\lenovo/a/b/c
- 相对路径: 相对于当前所在的位置开始的路径, 例如: C:\Users\lenovo> cd a/b/c
- cd …
- 回到上级目录, …代表上级目录, .代表当前目录
- cd /
- 回到根目录, \和/都行
- 注意, 路径自动补全, 使用tab键
-
直接进入某个位置的小妙招
- 在文件资源管理器当中的路径当中输入cmd, 回车之后, 直接进入当前位置的DOS命令窗口
-
mkdir [目录名]
- 创建目录
-
rd [目录名]
- 删除名录
-
ren a b
- 将a目录重命名为b
-
copy con [文件名]
- 新建并编辑文件
- ctrl+z
- 保存
-
type [文件名]
- 查看文件内容
-
shutdown -s
- 关机
1.1.3. 批处理文件
-
批处理文件: 可以批量执行DOS命令的文件
-
是以**.bat**为后缀名的文件
-
新建my.bat文件, 并编写大量的DOS命令
-
双击my.bat文件来完成批处理
-
my.bat, 删除文件下的所有.java文件
-
cd C:\Users\lenovo\test del *.java
-
新建
-
鼠标右击编辑
-
编辑并保存
-
双击, 会一闪而过, 说明执行完毕了
-
1.2. 通用文本编辑快捷键
1.2.1. Sublime Text文本编辑器的安装与使用
-
记事本也是文本编辑器, 但是它的功能太弱
-
Sublime Text则是一款功能强大且轻量的文本编辑器
安装
中英文
打开方式
- 设置好之后, 以后的.java文件都是用SublimeText来打开的, 这个是可以改的.
调整字体大小
文件扩展名
1.2.2. 文本快捷键
快捷键 | 作用 |
---|---|
ctrl+c | 复制 |
ctrl+v | 粘贴 |
ctrl+x | 剪切 |
ctrl+s | 保存 |
ctrl+a | 全选 |
ctrl+z | 撤销 |
ctrl+y | 重做, 和撤销相对应 |
home ( 笔记本上的home是fn + 向右箭头 ) | 光标回到行首 |
end ( end是fn + 向左 ) | 光标回到行尾 |
ctrl+home ( 注意: 笔记本上的应该为ctrl+fn+向右箭头 ) | 回到文章开头 |
ctrl+end ( 同理 ) | 回到文章末尾 |
鼠标三击shift+home或end | 选中一行 |
鼠标双击或shift+ctrl+向左或向右 | 选中一个单词 |
shift+向左或向右 | 选中一个字母 |
ctrl+f | 查找 |
ctrl+h | 替换 |
backspace | 向左删除 |
delete | 向右删除 |
1.3. 计算机概述
1.3.1. 计算机组成
-
硬件
-
中央处理器(CPU) : 计算机的核心部件, 决定着计算机的计算能力
-
内存 : 计算机的临时存储器, 断电后数据会消失
-
硬盘 : 计算机的永久存储器, 但是硬盘当中的数据不会消失
-
显卡 : 计算机的图形处理器, 负责显示
-
主板 : 安装上面的这些东西的一块板子, 板子上面有凹槽
-
…
-
-
软件
- 系统软件
- 操作系统, 驱动程序, 系统工具等
- Windows, MacOS, Linux, HarmonyOS…Android, iOS…
- 应用软件
- 各种办公软件, 微信, qq, 支付宝…
- 应用软件要想和计算机硬件交互, 必须通过操作系统.
- 系统软件
1.4. 计算机语言概述
1.4.1. 计算机语言发展史
- 机器语言
- 20世纪50年代初期, 计算机只能使用二进制代码进行操作, 这被称为机器语言, 机器语言非常难以理解和编写, 因为它们是由0和1组成的
- 汇编语言
- 为了简化编写机器语言的过程, 汇编语言被发明出来了, 它使用助记符号来代替二进制代码, 这使得编写程序变得更加容易
- 高级语言
- 20世纪60年代, 高级语言开始出现, 高级语言使用更接近自然语言的语法和结构, 使得编写程序变得更加容易, 比如Fortran, C语言( 面向过程 )
- 面向对象编程语言
- 20世纪80年代, 面向对象编程语言开始流行, 这些语言允许程序员创建对象, 这些对象可以封装数据和方法, 并与其他对象进行交互, 比如Java, C++, Python.
- C语言是面向过程的, C++一半是面向过程一半面向对象, Java全部面向对象
- Java是由C++写出来的, C++是C语言的发展
1.5. Java语言概述
1.5.1. Java语言概述
- Java是一种面向对象的编程语言, 它的底层是C++实现的, 由Sun Microsystems( 太阳微电子公司 )公司于1995年推出, 它是一种通用的, 高级的, 并发性强的, 安全的, 可移植的, 解释性的, 动态的, 编译性的, 跨平台的编程语言. Sun公司于2010年1月被甲骨文( Oracle )公司以74亿美元的价格收购, Oracle成为了Java语言的主要维护者和开发者之一.
1.5.2. Java之父
- 詹姆斯 高斯林( James Goslig ), 外号高司令, 在20世纪80年代末和90年代初, 与Sun公司的一些工程师一起开发了Java语言
1.5.3. Java名字来历和logo
- 在1990年代初, Sun公司的研发团队正在开发一种新的软件平台, 该平台可以在各种不同的计算机系统上运行, 并且能够处理各种多媒体文件, 这种平台最初被称为"Oak", 以纪念Sun公司的高司令喜欢的一棵橡树.
- 然而, 在1995年, Sun公司发现该名称已经被一家电视机制造商使用了.
- Java这个名字来源于印度尼西亚的爪哇岛, 因为该岛是印尼咖啡的主产区, Sun公司的营销团队认为这个名字可以带来一些特殊的品牌价值, 并且可以与咖啡文化关联, 因此它们决定将这个名字用于新的软件平台.
- Java的logo是一个冒着热气的咖啡
1.5.4. Java发展史
-
1995 年初,Sun 公司发布 Java 语言,Sun 公司直接把 Java 放到互联网上,免费给大家使用,甚至连源代码也不保密,也放在互联网公开。几个月后,Java 成了互联网上最热门的宝贝。各种各样的小程序层出不穷,Java 终于扬眉吐气,成为了一种广为人知的编程语言。
-
1996年 : JDK1.0诞生.
- 什么是JDK?
- Java Development Kit
- Java开发工具箱【Java开发必备】
- 可以从Oracle的官网上下载。http://www.oracle.com
- 目前2016-08-30最高版本Java8【Java SE 8u101 / 8u102】
- 下载JDK的时候需要注意:JDK的版本,不同的操作系统需要安装不同版本的JDK。
- 什么是JDK?
-
1996 年底,Flash 问世了,这是一种更加简单的动画设计软件:使用 Flash 几乎无须任何编程语言知识,就可以做出丰富多彩的动画。Flash 逐渐蚕食了 Java 在网页上的应用。
-
1997 年 2 月 18 日,Sun 公司发布了 JDK1.1,增加了即时编译器 JIT。
-
1995 年 Java 诞生到 1998 年底,Java 语言虽然成为了互联网上广泛使用的编程语言,但它没有找到一个准确的定位。
-
1998 年 12 月,Sun 发布了 Java 历史上最重要的 JDK 版本:JDK1.2。并将 Java 分成了 J2EE(提供了企业应用开发相关的完整解决方案)、J2SE(整个 Java 技术的核心和基础, 基础,无论是以后走EE还是ME,SE是必须要精通的)、J2ME(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。
-
2002 年 2 月,Sun 发布了 JDK 历史上最为成熟的版本,JDK1.4。
-
2004 年 10 月,Sun 发布了万众期待的 JDK1.5。JDK1.5 增加了诸如泛型、增强的 for 语句、可变数量的形参、注释、自动拆箱和装箱等。
-
2005年,java诞生十周年的时候,以上的三大模块改名了:
- JavaSE : 标准
- JavaEE : 企业
- JavaME : 微型
-
2006 年 12 月,Sun 发布了 JDK1.6。
-
2009 年 4 月 20 日,Oracle 甲骨文公司宣布将以每股 9.5 美元的价格收购 Sun。Oracle 通过
收购 Sun 获得了两项资产:Java 和 Solaris。 -
2007 年 11 月,Google 宣布推出一款基于 Linux 平台的开源手机操作系统:Android。Android使用 Java 语言来开发应用程序。Android 平台的流行,让 Java 语言获得了在客户端程序上大展拳脚的机会。
-
2011 年 7 月 28 日,Oracle 发布了 Java SE7,这次版本升级耗时将近 5 年时间。引入二进制整数、支持字符串的 switch 语句等。
-
2014 年 3 月 18 日,Oracle 发布了 Java SE8 LTS ( Long-Term Support, 长期支持 )。
-
2017 年 7 月,Oracle 发布了 JavaSE 9。
-
2018 年 3 月 20 日,Oracle 发布了正式版 JavaSE 10。同一年 9 月 25 日发布了 Java11 LTS。
-
2019 年 3 月 19 日,Oracle 发布了 Java12。
-
2019年在9月17日,JDK 13 发布,这个版本主要通过改善Java SE平台和JDK的性能,稳定性和安全性来提高开发人员的生产力。
-
2020年3月17日,JDK 14发布,这个版本主要是对JDK历史版本的一些增强,也引入了一些新增的功能.
-
2020年9月15日,JDK 15发布,按照规划路线,JDK 14也停止更新,JDK 15虽然不是LTS版本,但也引入了一些开创性的功能和对早期版本功能的一些优化。
-
2021年3月16日,JDK 16发布,这部分依旧是一些功能的优化升级。
-
2021年9月14日,JDK17 LTS 发布,这也是在JDK 11之后的下一个LTS版本,JDK 17也是Java六个月发布节奏下的最新的长期支持(LTS)发布,主打安全、性能、稳定为特性,并且官方计划支持到2029年9月。
-
2023年9月, JDK21 LTS 发布.
1.5.5. Java的三大分支
- JavaSE( Java Standard Edition ) : 标准版, 不管以后学EE还是ME, SE都是必学的, 这里面包含了Java的核心部分
- JavaEE( Java Enterprise Edition ) : 企业版, 以后大部分都是走的是这个方向
- JavaME( Java Micro Edition ) : 微型版, 做嵌入式开发
1.5.6. Java特点
-
关键术语:
- JDK【Java开发工具箱】
- JRE【Java的运行时环境】
- JVM【Java虚拟机】
- 三者之间的关系:JDK 中包含JRE,JRE中包含JVM。
-
跨平台/可移植
- java程序可以做到一次编译, 到处运行 ( 可以在windows和linux系统上运行, 但是这两个系统的内核不同, 执行程序的方式也不同, 所以java程序是不能直接和操作系统打交道的. 于是, SUN团队想了一个办法, 他们让java程序运行在一台虚拟的计算机上, 也就是所谓的java虚拟机, 简称JVM, java程序运行在JVM上, JVM再和底层操作系统进行交互).
- 有一种特殊的机制:JVM, C++模拟的一个虚拟的计算机
- 但是有一个前提:不同的操作系统中必须安装不同版本的JVM。
- 在可移植性方面表现非常好,一次编译,到处运行。
- 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。【JVM不能单独安装】
- java程序可以做到一次编译, 到处运行 ( 可以在windows和linux系统上运行, 但是这两个系统的内核不同, 执行程序的方式也不同, 所以java程序是不能直接和操作系统打交道的. 于是, SUN团队想了一个办法, 他们让java程序运行在一台虚拟的计算机上, 也就是所谓的java虚拟机, 简称JVM, java程序运行在JVM上, JVM再和底层操作系统进行交互).
-
Java号称:开源、免费、跨平台、纯面向对象。
-
开源:开发源代码,SUN公司编写的java类库的源代码普通程序员能看到。众人拾柴火焰高。这样java程序会很健壮。很少的BUG
-
免费
-
跨平台:依靠JVM机制【java程序不和操作系统交互,java程序运行在JVM中,JVM和操作系统交互。】不同的操作系统有不同版本的JVM。
-
面向对象:人类在认识现实世界的时候多数是以面向对象的方式认知的。
-
-
简单性:
- 这里的简单说的是相对于C语言来说的。
- 例如:C语言当中有指针,C++中多继承
- java取消了指针的概念,取消了多继承,只支持单继承。
-
java支持多线程
- 一个线路上可以执行多个任务, 效率高.
-
健壮性 :
- java中还有一种特殊的机制:自动垃圾回收机制. GC机制.【java运行过程当中有一个“垃圾回收器”一直在守护着。】不需要手动释放内存空间, 防止内存泄漏.
1.6. Java的加载与运行
1.6.1. 编译阶段
-
检查Java源文件 ( .java ) 是否符合java语法, 符合的则生成正常的字节码文件 ( .class ) , 否则无法生成.
-
程序员需要使用JDK当中自带的javac.exe ( 是一个java编译工具/命令 ) 进行java程序的编译.
-
javac语法 : javac + java源文件路径
- 在DOS命令窗口中使用
- 比如: javac C:\Users\lenovo\a.java
-
一个java源文件可以编译生成多个.class文件.
-
class文件是最终要运行的文件, 所以说class文件生成后, java源文件删除不会影响java程序的运行 ( 但是不建议删除 ).
-
编译结束后, 可以将.class文件拷贝到其它操作系统上运行.( 跨平台 )
1.6.2. 运行阶段
-
JDK安装后, 自带javac.exe ( 编译 ), 还有一个java.exe ( 运行 ).
-
java.exe语法 : java + 类名
-
也是在DOS窗口中使用
-
例如 : 硬盘上有一个A.class, 使用 : java A
-
-
所以Java既是一种编译型语言也是解释型语言, 是一种混合型语言
1.7. 第一个Java程序
1.7.1. JDK的下载与安装
- Oracle官网
- 下载安装
1.7.3. JDK的重点目录介绍
-
bin (binary)
-
存放命令
-
-
lib (library)
- 存放类库
-
lib/src.zip
- JDK源码文件
-
使用之前, 得先确保javac和java命令可以使用
- 但是现在这两个命令是不能用的, 所以接下来就要提到环境变量PATH
1.7.2. 环境变量PATH的配置
-
PATH环境变量不是java的, 它是隶属于Windows操作系统的
-
PATH环境变量的作用
- 在PATH中有很多路径, 路径和路径之间采用分号隔开
- 在DOS命令窗口中输入一个DOS命令之后, Windows会先从当前路径下找到这个命令, 如果没找到, 则会去PATH当中找, 找到则执行, 找不到则报错
- PATH实际上就是给Windows指路的
-
配置PATH
- 然后要把每一个页面的确定键都点上, 然后把cmd窗口关闭并重新开启, 这样javac和java命令就可以使用了
1.7.4. 第一个Java程序的编写
- 在硬盘的任何位置, 新建一个java源文件, 起名HelloWorld.java
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
1.7.5. 第一个Java程序的编译
- 使用javac 命令来编译, 首先确保javac命令能用
- javac命令怎么用, 语法是什么
- javac java源文件的路径( 绝对和相对路径都可以 )
1.7.6. 第一个Java程序的运行
- 使用java命令来运行, 首先确保java命令能用
- java语法格式
- java 类名
- 注意: java命令后面跟的不是文件路径, 而是类名
- 类名
- A.class, 类名是A
- HelloWorld.class, 类名是HelloWorld
- 要使用java命令, 首先DOS命令窗口中的当前路径必须切换到.class文件所在的位置
1.7.7. 环境变量classPATH
- classPATH环境变量是隶属于Java的, 不是Windows, 这和PATH环境变量是完全不同的
- classPATH是给ClassLoader( 类加载器 )指路的
- java A, 执行后, 先执行JVM, JVM启动ClassLoader, ClassLoader去硬盘上通过classPATH找A.class文件, 找到则执行, 找不到则报错
- 如果classPATH没有配置的话, 默认从当前路径下找.class字节码文件. 如果classPATH配置了, 比如配置到了桌面上, 那么ClassLoader以后就只会去桌面上( classPATH )找字节码文件, 不再从当前路径下找了
- 注意, 如果classPATH配置为: classPATH = .;C:\Users\lenovo\Desktop是什么意思
- 先让ClassLoader从当前路径下找, 如果找不到的话, 去C:\Users\lenovo\Desktop找
- 但是对于目前来说, 我们还没有必要这样配置, 所以先可以不配置
1.7.8. 关于编译时的乱码问题
- 当java源文件中有中文时, 采用某种文本编辑器写代码, 最后会出现中文乱码问题
- JDK21的javac编译器采用的是UTF-8的编码方式进行编译, 而JDK17是采用的GBK
- Sublime Text4编码方式是UTF-8
- 编码不一致, 所以乱码了, 所以可以下载最新的LTS版本的JDK21
- 解决
- 第一种方案
- javac -encoding UTF-8 HelloWorld.java
- 第二种方案
- 下载最新的LTS版本的JDK21, 最好选择这个, 要不然每次都得敲上面多出来的命令
- 不管是哪一种解决方案, 都是为了让两边的字符编码方式一致
- 第一种方案
- 编码方式
-
GBK
- 只支持简体中文
-
UTF-8
- 支持全球国家所有的语言
-
1.8. 注释
-
注释用于解释说明, 帮助程序员快速解读程序
-
注意: 注释只会在源文件当中, 编译之后.class文件里面是没有注释的
-
三种注释方式
-
单行注释
-
多行注释
-
javadoc注释
- javadoc命令的位置
-
-
写法
- 不是越多越多好
- 应该在合适的位置写注释, 简单明了, 起到点睛之笔
- 注释能力的提升需要在开发过程中不断地训练来加以提升
-
javadoc命令的简单使用
- javadoc的标记: 作者@author, 版本号@version, 方法参数@param
- javadoc -d docs -author -version -encoding UTF-8 HelloWorld.java
//单行注释
/*
多行注释
多行注释
多行注释
*/
/**
* javadoc注释
* javadoc注释
* javadoc注释
* 编写在这里的注释信息, 可以被javadoc命令解析提取并生成到帮助文档当中.
*/
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}
/**
* HelloWorld程序是一个问世程序, 这个程序中演示了中文乱码问题
* @author 区区一散修
* @version 1.0
* @since 1.0
*/
public class HelloWorld{
/**
* 这是main方法, 程序的入口, 程序就是从这里进来开始执行的
* @param args 这个是main方法的参数
*/
public static void main(String[] args){
System.out.println("区区一散修!");
}
}
- 解释HelloWorld程序
// public表示公开的
// class表示一个类
// HelloWorld是给这个类起个名
public class HelloWorld{
// 类体
// 1.这是main方法, 也叫做主方法
// 2.main方法是JVM规定的, 固定写法, 照抄就行了, 程序就是从这个位置进来执行的, 这是程序的入口
// 3.对于main方法来说能修改的就是args这个变量名, 但是一般就这样写, 因为args是arguments(参数)
// 4.static表示静态的
// 5.void表示main方法执行结束之后不返回任何数据
public static void main(String[] args){
// 方法体
// 方法体当中由一行一行的java语句组成
// 任何一条java语句必须以";"结尾, 且每一条java语句当中的标点符号都是英文半角标点
// 方法体当中的代码是有执行顺序的, 遵循自上而下的顺序依次逐行执行
// 这行代码的作用: 将字符串"区区一散修!"打印输出到控制台, 并且输出之后还会换行
System.out.println("区区一散修!");
// 没有ln是不换行的
System.out.print("区区一散修!");
}
// 类体
// 编译报错, 类体当中不能直接编写java语句
System.out.println("这里能写这样的Java语句吗");
}
1.9. public class和class的区别
- 一个java源文件中可以定义多个class
- 一个class会编译生成一个class文件
- public的类可以没有, 有的话, 只能有一个, 并且public的类名要和源文件名保持一致
- 任何一个class中都可以有main方法
- 但在实际开发中, 对于一个软件来说, 一般入口只有一个
public class a{
public static void main(String[] args){
System.out.println("a");
}
}
class X{
public static void main(String[] args){
System.out.println("X");
}
}
class Y{
public static void main(String[] args){
System.out.println("Y");
}
}
class Z{
public static void main(String[] args){
System.out.println("Z");
}
}
1.10. Test
/*
1. 打印你的个人信息
包括: 姓名, 年龄, 性别, 家庭住址, 联系电话
2. 打印一个菱形
*
***
*****
*******
*********
*******
*****
***
*
3. 打印商品列表
product price stack
aplle 3.5 10
banana 2.5 20
orange 4.0 15
*/
// 第一题
class one{
public static void main(String[] args){
System.out.println("姓名: 区区一散修");
System.out.println("年龄: 未知");
System.out.println("性别: 男");
System.out.println("家庭住址: 深山老林");
System.out.println("联系电话: 111");
}
}
//第二题
class two{
public static void main(String[] args){
System.out.println(" * ");
System.out.println(" *** ");
System.out.println(" ****** ");
System.out.println(" ******** ");
System.out.println("**********");
System.out.println(" ******** ");
System.out.println(" ****** ");
System.out.println(" *** ");
System.out.println(" * ");
}
}
//第三题
class three{
public static void main(String[] args){
System.out.println("product\tprice\tstock");
System.out.println("aplle\t3.5\t10");
System.out.println("banana\t2.5\t20");
System.out.println("orange\t4.0\t15");
}
}