Java笔记
一、Java简述
1. Java历史
-
Java是美国Sun公司在1995年推出的一门计算机高级编程语言(更接近人类自然语言)。
-
它初期叫做Oak(橡树),但是注册商标的时候发现已经有人注册了,后来就改成 Java (印度尼西亚爪哇岛)。
-
Java之父:詹姆斯·高斯林 (James Gosling)。
-
在2009年,Sun公司被Oracle甲骨文以74亿美元收购,这就意味着Java属于Oracle了。
2. 为什么要使用Java?
-
世界上最流行的编程语言之一,在国内使用最为广泛的编程语言。
-
可移植性(跨平台)、安全可靠、性能较好。
-
开发社区最完善、功能最丰富。
3. Java能做什么?
-
桌面端应用开发,例如 Eclipse、IDEA等等
-
移动端应用开发,例如 Android、医疗设备等
-
大数据开发,例如 Hadoop
-
企业级应用开发,例如 微服务、大型互联网应用(京东、天猫等)
-
游戏开发,例如 我的世界
-
物联网(用python或者c/c++用的多)
-
爬虫
4. Java的技术体系
Java SE(Java Standard Edition):Java标准版,Java技术的基础与核心。
Java EE(Java Enterprise Ediiton):Java企业版,企业级应用开发的一套解决方案。
Java ME(Java Micro Edition)Java小型版,针对移动设备应用的解决方案。
Java主要擅长分布式系统开发、大数据开发、Android应用开发三个方向,学好Java有饭吃;
根据市场的就业形势,一般人都会选择分布式系统开发(Web应用开发),然后积累2-3年以上工作经验以后可以转向大数据开发方向。
二、Java环境搭建
1. JDK
JDK(Java开发工具包)是学Java的第一步,不管是学习Java编程,还是要搭建JavaWeb开发环境,或者是搞Android开发环境都离不开它。
1.1 JDK介绍
- JDK (Java Development Kit) Java开发工具包,JDK包含Java开发工具(javac,java,javadoc,jar等)以及JRE;
- JRE (Java Runtime Environment) Java运行环境,JRE包含了开发Java程序时需要的核心类库(时间日期、集合、并发、IO、网络、反射等) 和 JVM(Java虚拟机,真正运行Java程序的地方);
JDK的发展史:
- LTS(long-term support):长期支持版,有JDK8、JDK11、JDK17。
- 2004年9月发布了JDK5,之后所有的新版本都以JDK xxx方式命名,新增了自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环);改进了Java的内存模型(Java Memory Model,JMM);提供了java.util.concurrent并发包;Windows 9x操作系统的最后一个JDK版本。
- 2014年3月发布了JDK8,新增了Lambda表达式、函数式接口、新的日期时间API、Stream流等等;内置Nashorn JavaScript、彻底移除HotSpot的永久代。
- 2018年9月发布了JDk11,技术:ZGC革命性的垃圾收集器、将类型推断加入Lambda语法。
1.2 下载JDK
本文以JDK17下载为例
Java历史版本下载地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
下载成功后本地会出现一个jdk-17_windows-x64_bin.exe文件。
1.3 安装JDK17
1、双击JDK的安装包(如:jdk-17_windows-x64_bin.exe),进入安装界面,然后一直下一步即可。
2、设置JDK安装路径
注:JDK17没有安装JRE环节,而且新版JDK会自动配置PATH变量(但是不能满足我们使用,需要手动配置一下)。
JDK目录结构:
- bin目录 :包含一些用于开发Java程序的工具(如 javac.exe、java.exe、javap.exe、jar.exe等)。
- conf 目录:里面存放一些配置文件 。
- include目录:存放一些平台特定的头文件。
- jmods目录:存放各种模块。
- legal目录:存放各种模块的授权文档。
- lib目录:包含开发Java程序所使用的类库文件。
1.4 配置环境变量
鼠标右键 “我的电脑”—>“属性”—>“高级”—>“环境变量”。
1、新建一个系统变量
变量名: JAVA_HOME
变量值: D:\Program Files\Environment\Java\jdk-17.0.4.1(jdk所在目录)
为什么需要配置JAVA_HOME?
JAVA_HOME
本质就是JDK的绝对路径D:\Program Files\Environment\Java\jdk1.8.0_201,方便在命令行窗口的任意目录启动程序。- 后期Java开发会使用很多工具和组件(比如 Tomcat、Maven、Jmeter等),他们会依赖这个JAVA_HOME目录,如果没有的话这些程序会无法运行。
2、然后将%JAVA_HOME%\bin
填加到系统变量的Path变量中。
%JAVA_HOME%\bin
之后一直点【确定】来保存我们的配置。
3、查看是否配置成功
按快捷键win+r
打开运行窗口,然后输入cmd
并回车打开指令控制台:
在命令提示符窗口中输入javac -version或者java -version:
ok出现上述结果,表示我们已经配置成功了。
windows命令行常用命令:
cls # 清屏
盘符: # 盘符后面加冒号,功能:切换盘符
cd # 切换目录
dir # 查看当前目录下有哪些文件和文件夹
1.5 卸载JDK
JDK和我们日常用的软件卸载方式类似,卸载后删除文件和环境变量即可。
1.6 编写第一个Java程序
开发Java程序的三个步骤:编写代码、编译代码、运行代码。
1、开启系统扩展名
2、在桌面空白处新建一个文本文档文件,并命名为:HelloWord.java。
3、编辑文本文件:(并保证类名与文件名一致)
public class HelloWord {
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("hello Java!!!");
}
}
4、Ctrl + S保存文件
5、按快捷键win+r
然后输入cmd回车打开命令行窗口
6、javac (java文件的绝对路径 ) 编译 ,例如:javac HelloWord.java
7、会在原java文件的位置生成一个HelloWorld.class (字节码文件)
8、 java xxx (执行目标文件) ,例如:java HelloWorld
执行过程:Hello.java(源文件) -javac.exe(编译器)-> Hello.class字节码文件 -java.exe(执行/翻译)-> JVM(java虚拟机) -(解释成机器码并运行) –> 操作系统。
1.7 Java 的跨平台、工作原理
跨平台:一次编译、到处运行。
原理:Java 源代码经过编译会生成字节码文件,最后由JVM(Java 虚拟机)来运行,JDK为我们针对不同操作系统平台提供了不同的Java虚拟机,所以Java程序借助JVM 实现跨平台。
2. IntelliJ IDEA
IDEA(全称:IntelliJ IDEA)是 JetBrains 公司的产品,IntelliJ IDEA 在业界被公认为最好用的 Java 集成开发工具,结合智能编码辅助与符合人体工程学的设计,让开发不仅高效,更成为一种享受。
IDEA相关教程:https://blog.csdn.net/qq_46921028/article/details/124209921
在IDEA中开发流程:
- 创建一个空工程、项目(project)。
- 创建模块(module)。
- 创建包(package)。
- 创建类(class)。
IDEA常用快捷键:
快捷键 | 功能效果 |
---|---|
main/psvm、sout、… | 快速键入相关代码 |
Ctrl + D | 复制当前行数据到下一行 |
Ctrl + Y | 删除所在行,建议用Ctrl + X |
Ctrl + ALT + L | 格式化代码 |
ALT + SHIFT + ↑ , ALT + SHIFT + ↓ | 上下移动当前代码 |
Shift + Enter | 光标在当前行的任意位置换行 |
Ctrl + / , Ctrl + Shift + / | 对代码进行注释(讲注释的时候再说) |
三、Java基础语法
1. 注释
注释用来对代码进行解释说明,被注释的内容会被编译器忽略掉。
Java中注释有三种写法:单行注释、多行注释、文档注释
// 单行注释 快捷键:ctrl + /
/*多行注释*/ 多行注释也可以写在方法的参数列表中 , 快捷键:ctrl + shift + /
/**
文档注释
*/
查看编译后的class字节码文件(发现注释已经被被编译器忽略掉了):
2. 变量
1、字面量
在Java程序中直接写出来的数据叫字面量/常量/直接量。
字面量的作用:告诉我们常见数据在程序中的书写格式。
字面量分类:
常用数据 | 生活中的数据 | 程序中的写法 | 说明 |
---|---|---|---|
整数 | -128,127 | -128,127 | 写法一致 |
小数 | 3.14,2.718 | 3.14,2.718 | 写法一致 |
字符 | 男,女,可 | ‘男’,’女’,’可’ | 程序中必须使用单引号,有且仅能一个字符 |
字符串 | HelloWorld | “HelloWorld” | 程序中必须使用双引号,内容可有可无 |
布尔 | 真、假 | true、false | 只有两个值: true:代表真,false: 代表假 |
空值 | 值是:null | 一个特殊的值,空值 |
package com.baidou.literal;
/**
* 字面量的使用(告诉数据在程序中的书写格式)
*
* @author 白豆五
* @version 2022/10/17 17:06
* @since JDK17
*/
public class LiteralDemo {
public static void main(String[] args) {
// 1、整数
System.out.println(100);
// 2、小数
System.out.println(3.14);
// 3、字符 (要求:英文单引号,有且只有一个字符)
System.out.println('男');
// 转义字符:\n 换行
// \t 制表位,相当于一个tab缩进
System.out.println('\n'); //换行
System.out.println('a');
// 4、字符串
System.out.println("good good study\n" +
"day day up");
// 5、空值
// System.out.println(null); //不能直接输出
// 6、布尔
System.out.println(false);
System.out.println(true);
}
}
2、变量
-
变量可以理解为存储数据的容器,它里面存储的数据是可以变化的。
-
使用的时候,系统会自动为变量在内存中开辟一个区域,然后我们只需要通过变量名就可以获取它里面的数据啦。
3、变量定义的格式
- 数据类型 变量名称 = 初始值;
- 数据类型:强制限制盒子中存储数据的形式。例如: int ( 整数类型)、double(小数类型)等
- 变量名称:取名字(首字母小写),之后通过变量名我们可以访问它对应的数据。
- 初始值:存的初始数据。
package com.baidou.variable;
/**
* 变量的定义与使用
*
* @author 白豆五
* @version 2022/10/17 17:52
* @since JDK17
*/
public class VariableDemo {
public static void main(String[] args) {
// 定义整数变量
int age = 19;
System.out.println(age);
age = 11;
System.out.println(age);
age = age - 7;
System.out.println(age);
System.out.println("===========");
// 模拟收红包和发红包
// 定义红包金额
double money = 100;
// 转账
money = money - 5.2;
System.out.println("转账后剩余:" + money);
// 收款
money = money + 50.2;
System.out.println("收款后剩余:" + money);
}
}
4、变量使用的注意事项
- 变量要先声明再使用;
- 同一个作用域范围内的变量不能重复定义;
- 变量只能在定义的作用域范围内使用;
- 什么类型的变量只能存储什么类型的数据;
- 变量定义的时候可以没有初始值,但是使用的时候必须给初始值。
5、按照声明的位置不同,变量可分为两种:
- 在类内方法体外声明的变量叫做成员变量(也叫做属性);
- 在方法体内声明的变量叫做局部变量;
6、常见的计算机信息存储单位
- 位(bit) 计算机信息存储最小单位,位只有两种形式0和1(因为计算机只有高低电压两种状态,所以就用0和1表示)
- 字节(Byte) 计算机的基本存储单位,1个字节是由8个比特位组成的, 1Byte=8bit (也叫做比特/比特位)
- 千字节(KB) 1KB=1024B
- 兆字节(MB)1MB=1024KB
- 吉字节(GB) 1GB=1024MB
- 太字节(TB) 1TB=1024GB
3. 关键字、保留字、标识符
3.1 关键字
- 关键字就是被Java语言赋予了特殊的含义,用作特殊用途的单词。(是程序员和编译器的一个约定)
- 关键字的特点就是单词都是小写字母。
Java关键字介绍:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
3.2 保留字
保留字就是现有Java版本尚未使用,但是可能以后的版本会作为关键字使用,例如 const、goto就是Java语言中的保留字。
3.3 标识符
标识符:在写Java程序的时候凡是需要取名字的地方就是标识符。
如:项目名、包名、类名(如类名、接口名、枚举名、注解名)、方法名、变量名和常量名。
标识符的命名规则
- 标识符由字母、数字、下划线_、美元符$、中文字符组成。
- 不能用数字开头,推荐以字母开头。
- 不能把java关键字和保留字作为标识符。如:break、case、if、char、int、for等等
- 标识符对大小写敏感。
- 各操作系统存在文件名长度限制。 (名字不要取太长)
一些常用规范
- 项目、包:小写。
- 类、抽象类、接口、注解:大驼峰命名法,如HelloWorld、@Data。
- 变量、方法:小驼峰命名法 ,如 userName、getUserName()。
- 常量、枚举:大写(多个单词之间用下划线_分割),如 USER_SESSION;
扩展:内存与硬盘
-
内存是由内存芯片、电路板、金手指等部分组成的。
-
内存存储临时数据(断电数据就会消失),硬盘存储长期数据。
-
硬盘便宜,内存较贵。
-
硬盘存储速度慢,内存存储速度快。
「突发小技巧」如果你的笔记本受卡槽的限制、或者主板镶嵌的原因无法扩展内存,可以通过修改虚拟内存手段来缓解部分内存压力。(缺点:容易损伤硬盘)