提交 43471261 编写于 作者: 沉默王二's avatar 沉默王二 💬

基本数据类型

上级 030850bd
......@@ -100,15 +100,15 @@
- [《二哥Java进阶之路》小册简介](overview/readme.md)
- [一文让你彻底了解Java(简史、特性、前景)](docs/overview/what-is-java.md)
- [安装Java开发工具包JDK](docs/overview/jdk-install-config.md)
- [安装集成开发环境Intellij IDEA](docs/overview/IDEA-install-config.md)
- [编写第一个Java程序:Hello World](docs/overview/hello-world.md)
- [Windows和macOS下安装JDK教程:原生安装与包管理器(高级)](docs/overview/jdk-install-config.md)
- [提升Java开发效率:在macOS和Windows上轻松安装Intellij IDEA](docs/overview/IDEA-install-config.md)
- [Java新手入门:使用IDEA编写第一个程序Hello World](docs/overview/hello-world.md)
## Java基础语法
- [简单过一下Java中常用的48个关键字和2个保留字](docs/basic-extra-meal/48-keywords.md)
- [Java注释](docs/basic-grammar/javadoc.md)
- [Java编程基础:48个关键字及2个保留字全解析](docs/basic-extra-meal/48-keywords.md)
- [了解Java注释:单行、多行与文档注释的使用方法](docs/basic-grammar/javadoc.md)
- [Java中的数据类型(8种基本数据类型和引用数据类型)](docs/basic-grammar/basic-data-type.md)
- [Java数据类型转换(强制类型转换+自动类型转换)](docs/basic-grammar/type-cast.md)
- [聊聊Java基本数据类型缓存池](docs/basic-extra-meal/int-cache.md)
......
......@@ -581,80 +581,7 @@ public class BullDog extends AbstractDog {
#### **规则十一:strictfp 关键字对重写规则没有任何影响**。
如果你想让浮点运算更加精确,而且不会因为硬件平台的不同导致执行的结果不一致的话,可以在方法上添加 strictfp 关键字。因此 strictfp 关键字和重写规则无关。
strictfp(strict floating-point)是 Java 中的一个关键字,用于限制浮点数计算的精度和舍入行为。当你在类、接口或方法上使用 strictfp 时,该范围内的所有浮点数计算将遵循 IEEE 754 标准的规定,以确保跨平台的浮点数计算的一致性。
不同的硬件平台和 JVM 实现可能对浮点数计算的精度和舍入行为有差异,这可能导致在不同环境中运行相同的浮点数计算代码产生不同的结果。使用 strictfp 关键字可以确保在所有平台上获得相同的浮点数计算结果,避免计算结果的不一致问题。
但请注意,使用 strictfp 可能会对性能产生影响,因为可能需要更多的计算和转换来确保遵循 IEEE 754 标准。因此,在使用 strictfp 时,需要权衡精度和一致性与性能之间的关系。
```java
public strictfp class MyClass {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
double result = a + b;
System.out.println("Result: " + result);
}
}
```
输出:
```
Result: 0.30000000000000004
```
在这个示例中,MyClass 类被声明为 strictfp,因此类中的所有浮点数计算都将遵循 IEEE 754 标准。
在大多数现代操作系统上,使用 strictfp 可能不会产生显著差异,因为大家都遵循 IEEE 754 标准,除非是一些较旧的硬件平台。
IEEE 754 标准(IEEE Standard for Floating-Point Arithmetic)是一个定义浮点数表示和运算的国际标准。由国际电气和电子工程师协会(IEEE)制定,首次发布于1985年。
IEEE 754 标准主要规定了以下几个方面:
浮点数表示:标准定义了两种浮点数格式,单精度(32位)和双精度(64位)。这两种格式分别由符号位、指数位和尾数位组成,用于表示浮点数的大小和精度。
四舍五入和舍入模式:标准定义了多种舍入模式,例如向最接近的数舍入(Round to Nearest, Ties to Even)、向零舍入(Round toward Zero)、向正无穷舍入(Round toward +∞)和向负无穷舍入(Round toward -∞)等。这些模式指导了浮点数计算过程中如何处理精度损失和舍入误差。
特殊值:标准定义了一些特殊的浮点数值,如正无穷(+∞)、负无穷(-∞)和非数值(NaN)。这些特殊值用于表示浮点数计算中可能出现的溢出、下溢和未定义结果等情况。
浮点数运算:标准规定了浮点数的基本运算(加、减、乘、除)和比较运算(等于、不等于、大于、小于、大于等于、小于等于)的行为和结果。这些运算需要遵循标准中规定的表示、舍入和特殊值处理规则。
来看示例
```java
public class Ieee754Demo {
public static void main(String[] args) {
float a = 0.1f;
float b = 0.2f;
float c = a + b;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = a + b = " + c);
double x = 1.0 / 0.0;
double y = -1.0 / 0.0;
double z = 0.0 / 0.0;
System.out.println("x = 1.0 / 0.0 = " + x);
System.out.println("y = -1.0 / 0.0 = " + y);
System.out.println("z = 0.0 / 0.0 = " + z);
}
}
```
输出结果:
![](https://cdn.tobebetterjavaer.com/stutymore/override-overload-20230408151129.png)
我们可以看到 IEEE 754 标准中的浮点数表示和运算:
- 单精度浮点数的加法:变量 a 和 b 分别存储了 0.1 和 0.2,它们的和 c 等于 0.3。由于浮点数表示的精度限制,c 的实际值可能与理论值略有误差。
- 特殊值:变量 x、y 和 z 分别存储了正无穷(+∞)、负无穷(-∞)和非数值(NaN)。这些特殊值是由除法运算产生的,当被除数为 0 或结果无法表示时,会返回相应的特殊值。
如果你想让浮点运算更加精确,而且不会因为硬件平台的不同导致执行的结果不一致的话,可以在方法上添加 [strictfp 关键字,之前讲过](https://tobebetterjavaer.com/basic-extra-meal/48-keywords.html)。因此 strictfp 关键字和重写规则无关。
### 03、总结
......
......@@ -105,7 +105,8 @@ public class LocalVar {
布尔(boolean)仅用于存储两个值:true 和 false,也就是真和假,通常用于条件的判断。代码示例:
```java
boolean flag = true;
boolean hasMoney = true;
boolean hasGirlFriend = false;
```
#### 2)byte
......
---
title: Java注释:单行、多行和文档注释
title: 了解Java注释:单行、多行与文档注释的使用方法
shortTitle: Java注释
category:
- Java核心
tag:
- Java语法基础
description: Java程序员进阶之路,小白的零基础Java教程,Java注释:单行、多行和文档注释
description: 本文详细介绍了Java编程中使用的三种注释方式:单行、多行和文档注释。通过对这三种注释类型的讲解和示例,您将了解它们的应用场景和使用技巧,提高代码的可读性和维护性。
head:
- - meta
- name: keywords
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java进阶之路,Java入门,教程,Java 注释,javadoc,注释
content: Java, 注释, 单行注释, 多行注释, 文档注释
---
# 3.2 Java注释
......@@ -39,20 +39,19 @@ public void method() {
```java
public void method() {
// age 用于表示年龄
int age = 18;
int age = 18;
}
```
### 02、多行注释
多行注释使用的频率其实并不高,通常用于解释一段代码的作用。
```java
/*
/*
age 用于表示年纪
name 用于表示姓名
*/
*/
int age = 18;
String name = "沉默王二";
```
......@@ -99,7 +98,6 @@ PS:在 Intellij IDEA 中,按下 `/**` 后敲下回车键就可以自动添
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/fourteen-03.png)
**第二步**,执行 javadoc 命令 `javadoc Demo.java -encoding utf-8``-encoding utf-8` 可以保证中文不发生乱码。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/fourteen-04.png)
......@@ -134,11 +132,11 @@ default 和 private 修饰的字段和方法的注释将会被忽略掉。因为
1)类、字段、方法必须使用文档注释,不能使用单行注释和多行注释。因为注释文档在 IDE 编辑窗口中可以悬浮提示,提高编码效率。
比如说,在使用 String 类的时候,鼠标悬停在 String 上时可以得到以下提示。
比如说,在使用 [String 类](https://tobebetterjavaer.com/string/immutable.html)的时候,鼠标悬停在 String 上时可以得到以下提示。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/fourteen-09.png)
2)所有的抽象方法(包括接口中的方法)必须要用Javadoc注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
2)所有的[抽象方法](https://tobebetterjavaer.com/oo/abstract.html)(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
3)所有的类都必须添加创建者和创建日期。
......@@ -169,11 +167,10 @@ public class Test {
}
```
4)所有的枚举类型字段必须要有注释,说明每个数据项的用途。
4)所有的[枚举](https://tobebetterjavaer.com/basic-extra-meal/enum.html)类型字段必须要有注释,说明每个数据项的用途。
5)代码修改的同时,注释也要进行相应的修改。
“好了,三妹,关于 Java 中的注释就先说这么多吧。”转动了一下僵硬的脖子后,我对三妹说。“记住一点,注释是程序固有的一部分。”
- 第一、注释要能够准确反映设计思想和代码逻辑;
......@@ -181,10 +178,10 @@ public class Test {
完全没有注释的大段代码对于阅读者形同 天书,注释是给自己看的,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看 的,使其能够快速接替自己的工作。
-----
---
最近整理了一份牛逼的学习资料,包括但不限于Java基础部分(JVM、Java集合框架、多线程),还囊括了 **数据库、计算机网络、算法与数据结构、设计模式、框架类Spring、Netty、微服务(Dubbo,消息队列) 网关** 等等等等……详情戳:[可以说是2022年全网最全的学习和找工作的PDF资源了](https://tobebetterjavaer.com/pdf/programmer-111.html)
最近整理了一份牛逼的学习资料,包括但不限于 Java 基础部分(JVM、Java 集合框架、多线程),还囊括了 **数据库、计算机网络、算法与数据结构、设计模式、框架类 Spring、Netty、微服务(Dubbo,消息队列) 网关** 等等等等……详情戳:[可以说是 2022 年全网最全的学习和找工作的 PDF 资源了](https://tobebetterjavaer.com/pdf/programmer-111.html)
微信搜 **沉默王二** 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 **111** 即可免费领取。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)
\ No newline at end of file
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)
......@@ -108,14 +108,14 @@ head:
- [《二哥Java进阶之路》小册简介](overview/readme.md)
- [一文让你彻底了解Java(简史、特性、前景)](overview/what-is-java.md)
- [安装Java开发工具包JDK](overview/jdk-install-config.md)
- [安装集成开发环境Intellij IDEA](overview/IDEA-install-config.md)
- [编写第一个Java程序:Hello World](overview/hello-world.md)
- [Windows和macOS下安装JDK教程:原生安装与包管理器(高级)](overview/jdk-install-config.md)
- [提升Java开发效率:在macOS和Windows上轻松安装Intellij IDEA](overview/IDEA-install-config.md)
- [Java新手入门:使用IDEA编写第一个程序Hello World](overview/hello-world.md)
### Java基础语法
- [简单过一下Java中常用的48个关键字和2个保留字](basic-extra-meal/48-keywords.md)
- [Java注释](basic-grammar/javadoc.md)
- [Java编程基础:48个关键字及2个保留字全解析](basic-extra-meal/48-keywords.md)
- [了解Java注释:单行、多行与文档注释的使用方法](basic-grammar/javadoc.md)
- [Java中的数据类型(8种基本数据类型和引用数据类型)](basic-grammar/basic-data-type.md)
- [Java数据类型转换(强制类型转换+自动类型转换)](basic-grammar/type-cast.md)
- [聊聊Java基本数据类型缓存池](basic-extra-meal/int-cache.md)
......
---
title: 安装集成开发环境Intellij IDEA(Windows+macOS)
title: 提升Java开发效率:在macOS和Windows上轻松安装Intellij IDEA
shortTitle: 安装IDEA
category:
- Java核心
tag:
- Java概述
description: Java程序员进阶之路,小白的零基础Java教程,Intellij IDEA的安装和配置
description: 本文将为您提供在macOS和Windows操作系统上安装Intellij IDEA的详细步骤。通过本教程,您将快速掌握如何在不同平台上安装和配置Intellij IDEA,为Java开发搭建高效的编程环境。
head:
- - meta
- name: keywords
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java进阶之路,Java入门,教程,Intellij IDEA安装,IDEA安装,idea,Intellij IDEA,idea windows,idea macos
content: Java,Intellij IDEA, 安装教程, macOS, Windows, Java开发环境, 配置, 跨平台IDE
---
# 2.3 安装IDEA
# 2.3 安装 IDEA
IntelliJ IDEA 简称 IDEA,是业界公认为最好的 Java 集成开发工具,尤其是在代码自动提示、代码重构、代码版本管理、单元测试、代码分析等方面有着亮眼的发挥。
......@@ -22,39 +22,34 @@ IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主,分为
鉴于此,我强烈推荐大家使用集成开发工具,比如说 IntelliJ IDEA 来学习。
为了照顾到刚学 Java 的零基础的宝宝,我这里把 macOS 系统和 Windows 系统都介绍一下,真手摸手教你学 Java 系统
为了照顾到刚学 Java 的零基础宝宝,我这里把 macOS 系统和 Windows 系统的安装方法都介绍一下,真手摸手教学
(你应该知道自己的电脑是 Windows 还是 macOS 吧?什么?你是 Linux 系统,不好意思,你可以跳过这个章节了。)
### 01、Windows
### 一、Windows
#### 01、下载 IDEA
#### 下载 IDEA
IntelliJ IDEA 的官方下载地址为:[https://www.jetbrains.com/idea/download/](https://www.jetbrains.com/idea/download)
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-d7ac2335-4c65-442c-931e-994e00db4235.png)
UItimate 为付费版,主要针对的是企业级开发用户;Community 为免费版,主要针对的是个人用户。
UItimate 为付费版,可以免费试用,主要针对的是 Web 和企业开发用户;Community 为免费版,可以免费使用,主要针对的是 Java 初学者和安卓开发用户。
> 需要激活的戳这里[激活](https://tobebetterjavaer.com/nice-article/itmind/)
功能上的差别如下图所示。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-43e0ec45-acee-4c18-b0ff-ac7f4fc054f9.png)
本篇教程主要针对的是 Java 初学者,所以选择免费版为例,点击「Download」进行下载。
稍等一分钟时间,大概 580M。
这里选择免费版为例,点击「Download」进行下载。稍等一分钟时间,大概 580M。
#### 02、安装 IDEA
#### 安装 IDEA
双击运行 IDEA 安装程序,一步步傻瓜式的下一步就行了。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-8d0b11b3-99da-45c5-b9c3-a5d4e26077b5.png)
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-3747b308-9b27-4068-9c47-46bc7098f8d4.png)
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-5765a40b-e3c1-4021-b1de-73ae27774008.png)
为了方便启动 IDEA,可以勾选【64-bit launcher】复选框。为了关联 Java 源文件,可以勾选【.java】复选框。
......@@ -69,7 +64,7 @@ UItimate 为付费版,可以免费试用,主要针对的是 Web 和企业开
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-2afe2860-e3ef-4370-a0a5-f0075487f159.png)
#### 03、启动 IDEA
#### 启动 IDEA
回到桌面,双击运行 IDEA 的快捷方式,启动 IDEA。
......@@ -83,74 +78,73 @@ UItimate 为付费版,可以免费试用,主要针对的是 Web 和企业开
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-b880a884-dbf5-4ce8-b0c1-345d60c72eff.png)
到此,Intellij IDEA 的安装就完成了,很简单。
### 、macOS
### 02、macOS
#### 01、下载 IDEA
#### 下载 IDEA
1. 打开 [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/download/#section=mac),点击Download按钮
1、打开 [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/download/#section=mac),点击 Download 按钮
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-38cc7637-ed3f-44c0-b244-aafafd3634b6.png)
2. 选择 Community 版本(也就是社区版、免费版了,旗舰版需要激活,你可以戳这里[激活](https://tobebetterjavaer.com/nice-article/itmind/))。
2、选择 Community 版本,旗舰版需要激活,你可以戳这里[激活](https://tobebetterjavaer.com/nice-article/itmind/))。
确定后点击 Download 下载
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-b17d0ff0-d33c-4d19-86e0-cd491c0cc613.png)
如何查看 Mac 电脑是 Intel 还是 Apple Silicon 的 CPU?
在 Mac 上,单击菜单栏左上角的\[Apple\]图标,然后选择“关于本机”(About This Mac)选项。
在 Mac 上,单击菜单栏左上角的 Apple 图标,然后选择“关于本机”(About This Mac)选项。
- 如果在“芯片”部分中看到Apple M1(或更高版本),则意味着使用的是带有\[Apple Silicon CPU\]Mac。
- 如果在“处理器”部分中看到英特尔处理器,则表示正在使用带有英特尔芯片的Mac。
- 如果在“芯片”部分中看到 Apple M1(或更高版本),则意味着使用的是带有 Apple Silicon CPU 的 Mac。
- 如果在“处理器”部分中看到英特尔处理器,则表示正在使用带有英特尔芯片的 Mac。
瞧,我这里就是英特尔芯片的(Intel)。
瞧,我就是英特尔芯片的(Intel)。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-3977e9b4-9c26-4e00-bc88-1ac1f2f89d5e.png)
3. 打开如下页面,IntelliJ IDEA 便会开始自动下载。若未开始自动下载,可以点击如下红框内的 direct link。
3、打开如下页面,IntelliJ IDEA 便会开始自动下载。若未开始自动下载,可以点击如下红框内的 direct link。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-5b074f76-71c7-405e-871e-de1ee1d6376e.png)
中文页面如下所示:
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-f88924e5-6470-4d44-8f85-922875a3c565.png)
4. IntelliJ IDEA下载完成,在下载文件夹内便会出现 ideaIC-2020.3.2.dmg 的文件
4、IntelliJ IDEA 下载完成,在下载文件夹内便会出现 ideaIC-2020.3.2.dmg 的文件(你应该是更新的版本)
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-7aec8534-ea7b-41f5-bc68-e6d2fb20e6c1.png)
#### 02、安装 IDEA
#### 安装 IDEA
1. 双击 ideaIC-2020.3.2.dmg 文件开始安装
1双击 ideaIC-2020.3.2.dmg 文件开始安装
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-23195fb7-3a1c-4466-bf17-4f681ef0be5e.png)
2. 把 IntelliJ IDEA CE.app 拖入 Applications 文件夹
2把 IntelliJ IDEA CE.app 拖入 Applications 文件夹
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-7bd55d3b-54ce-4e4e-8e21-aa94f15d105a.png)
3. 在 Applications 中可以找到 IntelliJ IDEA CE.app,说明安装完成
3在 Applications 中可以找到 IntelliJ IDEA CE.app,说明安装完成
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-96c1a054-8429-416a-ad5d-7fa3f360c19f.png)
#### 03、打开 IDEA
#### 打开 IDEA
首次打开 IntelliJ IDEA 后展现的第一个页面如下所示。至此,IntelliJ IDEA下载、安装和打开就搞定了。
首次打开 IntelliJ IDEA 后展现的第一个页面如下所示。至此,IntelliJ IDEA 下载、安装和打开就搞定了。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/IDEA-install-config-7637a241-8524-4e0a-bb2a-a3bd1c575c9a.png)
### 03、小结
-----
本文详细地介绍了如何在macOS和Windows操作系统上安装Intellij IDEA。你可以根据自己的操作系统选择不同的安装包,然后为自己搭建一个高效的编程环境。
---
最近整理了一份牛逼的学习资料,包括但不限于Java基础部分(JVM、Java集合框架、多线程),还囊括了 **数据库、计算机网络、算法与数据结构、设计模式、框架类Spring、Netty、微服务(Dubbo,消息队列) 网关** 等等等等……详情戳:[可以说是2022年全网最全的学习和找工作的PDF资源了](https://tobebetterjavaer.com/pdf/programmer-111.html)
最近整理了一份牛逼的学习资料,包括但不限于 Java 基础部分(JVM、Java 集合框架、多线程),还囊括了 **数据库、计算机网络、算法与数据结构、设计模式、框架类 Spring、Netty、微服务(Dubbo,消息队列) 网关** 等等等等……详情戳:[可以说是 2022 年全网最全的学习和找工作的 PDF 资源了](https://tobebetterjavaer.com/pdf/programmer-111.html)
微信搜 **沉默王二** 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 **111** 即可免费领取。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)
\ No newline at end of file
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)
---
title: 编写第一个Java程序:Hello World
title: Java新手入门:使用IDEA编写第一个程序Hello World
shortTitle: 第一个Java程序
category:
- Java核心
tag:
- Java概述
description: Java程序员进阶之路,小白的零基础Java教程,编写第一个Java程序:Hello World
description: 本文将带您了解如何使用Intellij IDEA编写和运行第一个Java程序:Hello World。通过简单的步骤和详细的截图,您将快速掌握Intellij IDEA的基本使用方法,顺利迈出Java编程的第一步。
head:
- - meta
- name: keywords
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java进阶之路,Java入门,教程,Hello World
content: Java,Intellij IDEA, Java程序, Hello World, 编写, 运行, Java新手, 入门教程
---
# 2.4 第一个 Java 程序
......@@ -20,7 +20,7 @@ head:
“好的,那我们直接开始。”
打开 Intellij IDEA,新建一个学习 Java 的项目,点击 File → New → Project。
打开 [Intellij IDEA](https://tobebetterjavaer.com/overview/IDEA-install-config.html),新建一个学习 Java 的项目,点击 File → New → Project。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/hello-world-3810664d-49fb-4bed-ad32-3cb962ab5201.png)
......@@ -102,31 +102,33 @@ public class HelloWorld {
}
```
IDEA 会自动保存,在代码编辑面板中右键,在弹出的菜单中选择「Run 'HelloWorld.main()'」,如下图所示:
- class 关键字:用于在 Java 中声明一个[](https://tobebetterjavaer.com/oo/object-class.html)
- public 关键字:一个表示可见性的[访问修饰符](https://tobebetterjavaer.com/oo/access-control.html)
- [static 关键字](https://tobebetterjavaer.com/oo/static.html):我们可以用它来声明任何一个方法,被 static 修饰后的方法称之为静态方法。静态方法不需要为其创建对象就能调用。
- void 关键字:表示该方法不返回任何值。
- main 关键字:表示该方法为主方法,也就是程序运行的入口。`main()` 方法由 Java 虚拟机执行,配合上 static 关键字后,可以不用创建对象就可以调用,可以节省不少内存空间。
- `String [] args``main()` 方法的参数,类型为 [String](https://tobebetterjavaer.com/string/immutable.html) [数组](https://tobebetterjavaer.com/array/array.html),参数名为 args。
- `System.out.println()`:一个 Java 语句,一般情况下是将传递的参数打印到控制台。System 是 java.lang 包中的一个 final 类,该类提供的设施包括标准输入,标准输出和错误输出流等等。out 是 System 类的静态成员字段,类型为 [PrintStream](https://tobebetterjavaer.com/io/print.html),它与主机的标准输出控制台进行映射。println 是 PrintStream 类的一个方法,通过调用 print 方法并添加一个换行符实现的。
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/overview/four-01.png)
“实在记不住也没关系,我们后面还会讲哦(可以跳转的地方都会展开细讲)。”我的话令三妹感到非常开心。
等代码编译结束后,就可以在 Run 面板里看到下面的内容:
好,接下来再告诉你一点额外的知识点(如果觉得比较难可跳过),三妹。
```
三妹,少看手机少打游戏,好好学,美美哒。
```
在 Intellij IDEA 的 terminal 面板中,可以看到对应的 java 源代码文件和编译后的 .class 文件。
“二哥,上面这段代码的输出结果虽然令我非常开心,但是有好多生疏的关键字令我感到困惑,能给我解释一下吗?”
可以在对应的文件上右键选择 open in terminal 打开。
“当然没问题啊。”
![](https://cdn.tobebetterjavaer.com/stutymore/hello-world-20230408184558.png)
- class 关键字:用于在 Java 中声明一个类。
- public 关键字:一个表示可见性的访问修饰符。
- static 关键字:我们可以用它来声明任何一个方法,被 static 修饰后的方法称之为静态方法。静态方法不需要为其创建对象就能调用。
- void 关键字:表示该方法不返回任何值。
- main 关键字:表示该方法为主方法,也就是程序运行的入口。`main()` 方法由 Java 虚拟机执行,配合上 static 关键字后,可以不用创建对象就可以调用,可以节省不少内存空间。
- `String [] args``main()` 方法的参数,类型为 String 数组,参数名为 args。
- `System.out.println()`:一个 Java 语句,一般情况下是将传递的参数打印到控制台。System 是 java.lang 包中的一个 final 类,该类提供的设施包括标准输入,标准输出和错误输出流等等。out 是 System 类的静态成员字段,类型为 PrintStream,它与主机的标准输出控制台进行映射。println 是 PrintStream 类的一个方法,通过调用 print 方法并添加一个换行符实现的。
可以通过 pwd 命令查看当前包路径,通过 ls 命令查看包路径下面有哪些文件。
“实在记不住也没关系,我们后面还会讲哦。”我的话令三妹感到非常开心。
![](https://cdn.tobebetterjavaer.com/stutymore/hello-world-20230408184256.png)
“二哥,你之前给我看了 .class 文件和 .java 源代码,它们之间的关系是什么样的呢?”三妹还是挺喜欢学习的嘛,发现的问题都很关键。
class 文件在 target 目录下,classes 为 src/main 目录下的 class 文件;test-classes 为 src/test 目录下的 class 文件。
![](https://cdn.tobebetterjavaer.com/stutymore/hello-world-20230408184835.png)
“二哥,.class 文件和 .java 源代码,它们之间的关系是什么样的呢?”三妹还是挺喜欢学习的嘛,发现的问题都很关键。
“不错不错,都能挖掘到这个点了。”
......@@ -136,12 +138,45 @@ IDEA 会自动保存,在代码编辑面板中右键,在弹出的菜单中选
“好啊,我正要问这个‘编译’到底是怎么回事呢?”
Java 的第一道工序是通过 javac 命令把 Java 源码编译成字节码,之后,我们可以通过 java 命令运行字节码,此时就有 2 种处理方式了。
Java 的第一道工序是通过 javac 命令把 Java 源码编译成字节码。
比如说我们可以主动执行 `javac Hello.java` 命令将源代码文件编译为 Hello.class 文件(用 Intellij IDEA 的话,并不需要我们主动去编译「javac」,直接运行就可以自动生成 .class 文件)。
![](https://cdn.tobebetterjavaer.com/stutymore/hello-world-20230408185202.png)
之后,我们可以通过 java 命令运行字节码(比如说 `java Hello`),此时就有 2 种处理方式了。
- 1、字节码由 JVM 逐条解释执行。
- 2、部分字节码可能由 [JIT(即时编译,戳链接了解](https://tobebetterjavaer.com/jvm/jit.html))编译为机器指令直接执行。
也就是说,为了跨平台,Java 源代码首先会编译成字节码,字节码不是机器语言,需要 JVM 来解释。有了 JVM 这个中间层,Java 的运行效率就没有直接把源代码编译为机器码来得效率更高,这个应该能理解吗,多了中间商嘛。所以为了提高效率,JVM 引入了 JIT 编译器,把一些经常执行的字节码直接搞成机器码。
①、逐条解释执行:
逐条解释执行是 Java 虚拟机的基本执行模式。在这种模式下,Java 虚拟机会逐条读取字节码文件中的指令,并将其解释为对应的底层操作。解释执行的优点是实现简单,启动速度较快,但由于每次执行都需要对字节码进行解释,因此执行效率相对较低。
总结一下逐条解释执行的特点:
- 实现简单
- 启动速度较快
- 执行效率较低
②、JIT 即时编译:
为了提高 Java 程序的执行效率,Java 虚拟机引入了即时编译([JIT,Just-In-Time Compilation](https://tobebetterjavaer.com/jvm/jit.html))技术。在 JIT 模式下,Java 虚拟机会在运行时将频繁执行的字节码编译为本地机器码,这样就可以直接在硬件上运行,而不需要再次解释。这样做的结果是显著提高了程序的执行速度。需要注意的是,JIT 编译器并不会编译所有的字节码,而是根据一定的策略,仅编译被频繁调用的代码段(热点代码)。
总结一下 JIT 即时编译的特点:
- 提高执行效率
- 编译热点代码
- 动态优化
实际上,现代 Java 虚拟机(如 HotSpot)通常会结合这两种执行方式,即解释执行和 JIT 即时编译。在程序运行初期,Java 虚拟机会采用解释执行,以减少启动时间。随着程序的运行,Java 虚拟机会识别出热点代码并使用 JIT 编译器将其编译为本地机器码,从而提高程序的执行效率。这种结合策略称为混合模式。
也就是说,为了跨平台,Java 源代码首先会编译成字节码,字节码不是机器语言,需要 JVM 来解释。
![](https://cdn.tobebetterjavaer.com/stutymore/hello-world-20230408190024.png)
有了 JVM 这个中间层,Java 的运行效率就没有直接把源代码编译为机器码来得效率更高,这个应该能理解吗,多了中间商嘛。所以为了提高效率,JVM 引入了 JIT 编译器,把一些经常执行的字节码直接搞成机器码。
所以,Java 是解释和编译并存。但通常来说,我们会说“Java 是编译型语言”,尽管这样并不准确,主要是 JIT 是后面才出现的,“先入为主嘛”。
......
---
title: 安装Java开发工具包JDK(Windows+macOS
title: Windows和macOS下安装JDK教程:原生安装与包管理器(高级
shortTitle: 安装JDK
category:
- Java核心
tag:
- Java概述
description: Java程序员进阶之路,小白的零基础Java教程,JDK的安装和配置
description: 本文详细介绍了在Windows和macOS平台上安装JDK的两种方法:使用原始安装包手动配置环境变量和通过包管理器(如Chocolatey和Homebrew)一键式安装。我们将对比这两种方法的优缺点,帮助您选择最适合自己的JDK安装方式。
head:
- - meta
- name: keywords
content: Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java进阶之路,Java入门,教程,JDK 安装,jdk,java JDK,java jdk安装
content: JDK安装, Windows, macOS, Chocolatey, Homebrew, 环境变量, Java开发环境, 包管理器
---
# 2.2 安装 JDK
......@@ -122,32 +122,49 @@ export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
```
通过 `vim ~/.zshrc`
通过 `vim ~/.zshrc` 把以上内容添加到配置文件中并保存(source 下可以立即生效)
![](https://cdn.tobebetterjavaer.com/stutymore/jdk-install-config-20230408165518.png)
添加
之后通过以下方式添加 JDK 到 jenv 中
```
jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/
```
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongju/brew-b126c35d-edab-48a9-9543-831cfd0a51c6.png)
JDK 的安装路径可以通过两种方法 get 到。
JDK 的安装路径可以通过下图的位置查找
一般情况下,JDK 的默认安装路径为 `/Library/Java/JavaVirtualMachines/`,进入该目录就可以看到
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongju/brew-a32accec-4044-480c-a8c8-3781bc5048b5.png)
![](https://cdn.tobebetterjavaer.com/stutymore/jdk-install-config-20230408173945.png)
管理:
还可以通过以下命令获取当前安装的 JDK 路径。
```
jenv versions
jenv global 17.0.3
/usr/libexec/java_home
```
![](https://cdn.tobebetterjavaer.com/stutymore/jdk-install-config-20230408174048.png)
添加 JDK 的路径后可以通过 `jenv versions` 查看所有添加到 jenv 进行管理的 JDK 版本。
![](https://cdn.tobebetterjavaer.com/stutymore/jdk-install-config-20230408174158.png)
`*` 的表示当前默认的 JDK 版本。
可以通过 `jenv global xxx` 切换全局的 JDK 版本。
```
jenv global 17
```
![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongju/brew-cc01fad8-53e9-4474-8923-08e97ac7090a.png)
是不是贼方便?再也不用整这 `echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc` 玩意了!爽,实在是爽!
是不是贼方便?再也不用整这 `echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc` 玩意添加 JDK 到 PATH 环境变量了!
想用哪个 JDK 版本可以随时切换。
爽,实在是爽!
---
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册