致远任重 - Java教程
type: channel
link: https://xcclab.com/index.php/category/Java/
items: Java数据类型
items: Java操作符
items: 配置Java开发环境
items: Java简介

Java数据类型
type: item
date: 2025-05-01T08:09:15+00:00
description: 一、引言 Java是一种强类型的编程语言，Java中可以使用的数据类型分为基本数据类型（Primitive Types）和引用数据类型（Reference Types）两大类。这两类数据在内存管理、默认值、使用场景等方面存在显著差异。 在Java中，所有变量在使用前必须明确声明类型，声明类型后不可隐式转换变量的类型。这种严格性要求程序员在编写代码时明确数据类型，避免意外错误。Java编译器在编译阶段会进行类型匹配验证，可在代码运行前捕捉类型不匹配问题，显著减少运行时错误。不同基本类型之间的转换需显式强制转换。 Java正是通过编译时检查、显式类型声明和严格转换规则，构建了高可靠性的编程环境。这种设计不仅减少了运行时错误，还提升了代码安全性与可维护性，是Java成为企业级应用首选语言的核心原因之一。 二、基本数据类型 Java中定义了8种基本数据类型：byte、short、int、long、float、double、char、boolean。基本数据类型也被称为简单类型，它们可以分为4种： 整型：包括byte、short、int和long，主要用于表示有符号的整数。 浮点型：包括float和double，主要用于表示带小数位的浮点数。 字符型：char，主要用于表示字符集中的符号，比如字母、数字、标点符号等。 布尔型：boolean，主要用于表示true/false值，常用于逻辑判断。 Java虽然是面向对象的编程语言，但Java的基本数据类型并不是面向对象的，主要因为出于效率原因考虑，因为将基本数据类型设计成对象会降低性能，毕竟对象的结构更加复杂。 Java的基本数据类型具有明确的内存占用空间，也就使其具有明确的范围。这使得Java可以在不同的系统和设备上保持可移植性。比如，不管在哪种操作系统的特定平台上，int类型永远都是使用32个二进制位表示具体的整数。 1.整型（存储整数） 在Java中能够使用的整型类型有4种：byte、short、int和long。它们都能够存储一个有符号的（正号或负号）整数，不同的整型类型在内存中占用不同的二进制位数，使得它们能够表示的整数的范围不同，具体见下表： 类型 位数 取值范围 默认值 典型应用场景 byte 8 -128 ~ 127 0 文件处理、节省内存 short 16 -32768 ~ 32767 0 兼容旧代码、小范围整数 int 32 -2^31 ~ 2^31-1（约±21亿） 0 日常整数运算 long 64 -2^63 ~ 2^63-1 0L 时间戳、大数据量 byte类型是取值范围最小的整型，它使用8位（1字节）表示有符号的整数，只能在-128~127范围内的取整数值。byte特别适合处理来自网络和文件的数据流和其他基本类型不直接兼容的原始二进制数据。 byte类型变量的声明如下所示： byte b;// 将变量b的数据类型声明为byte byte c = 127;// 将变量c的数据类型声明为byte，并同时赋值127 short类型使用16位（2字节）表示有符号的整数，可以在-32768~32767范围内取整数值。相比其他整型类型，short类型的使用率较低。 short类型变量的声明如下所示： short s;// 将变量s的数据类型声明为short short t = 2025;// 将变量t的数据类型声明为short，并同时赋值2025 int类型是最常用的整型类型，它使用32位（4字节）表示有符号的整数，取值范围-2^31~2^31-1（约±21亿），基本可以涵盖日常整数运算的范围。在Java程序中，int类型常用于控制循环次数，或者做数组的索引。另外，由于byte类型和short类型会在表达式计算中自动被提升为int类型，所以当需要使用整型类型时，int类型通常是最佳选项。 int类型变量的声明如下所示： int i;// 将变量i的数据类型声明为int int j = 1745545182;// 将变量i的数据类型声明为int，并同时赋值1745545182 long类型是最大的整型类型，它使用64位（8字节）表示有符号的整数，取值范围-2^63~2^63-1。当需要处理的整数类型过大无法用int类型保存时，就可以使用long类型。long类型的中保存的数值如果超出int类型的范围，就需要在数值末尾增加大写“L”或小写“l”，由于小写“l”在部分字体显示时与数字1过于接近，所以通常建议使用大写“L”作为后缀。 long类型变量的声明如下所示： long l;// 将变量l的数据类型声明为long long m = 1745545182550L;// 将变量m的数据类型声明为long，并同时赋值1745545182550 2.浮点型（存储浮点数） 在Java中…

Java操作符
type: item
date: 2025-04-22T15:30:00+00:00
description: 一、引言 操作符在编程中的核心地位 操作符是程序中对数据进行计算、判断和转换的核心工具。操作符定义数据被处理方式，将原始输入的数据（操作数）转化为有意义的中间结果，为程序逻辑提供计算能力。在Java编程中，操作符是实现数据运算和赋值的关键。对于初学者来说，理解和掌握各种操作符的用法和特性是非常重要的。 Java操作符的设计哲学与特性 Java操作符的设计哲学以简约性、强类型安全和封装性为核心，通过严格规范操作符行为与优先级，确保代码的可预测性和可维护性。理解Java操作符的特性，有助于开发者规避常见陷阱（如整数除法截断、别名问题），并充分利用位运算等特性优化性能关键代码。 二、Java操作符分类与详解 Java中的操作符，按照操作数被处理的方式，可以分为算术操作符、赋值操作符、位操作符、关系操作符、逻辑操作符以及三元操作符。不管哪种操作符，都可以通过一个或多个操作数来生成新的值，有的操作符还可以修改其操作数的值。另外，几乎所有的操作符（除开=、==、!=）都只能操作基本数据类型的操作数。 1.算术操作符 Java的算数操作符与其他大部分编程语言相同，包括加法（+）、减法（-）、乘法（*）、除法（/）、求模（%）和自增（++）、自减（--），具体见下表： 操作符 名称 示例 功能描述 + 加法操作符 a + b 加法 - 计算操作符两侧的值的和 - 减法操作符 a - b 减法 - 计算操作符左侧的值减去右侧的值的差 * 乘法操作符 a * b 乘法 - 计算操作符两侧的值的积 / 除法操作符 a / b 除法 - 计算操作符左侧的值除以右侧的值的商 % 求模操作符 a % b 求模 - 计算操作符左侧的值除以右侧的值的余数 ++ 自增操作符 a++或++a 操作数的值增加1 -- 自减操作符 a--或--a 操作数的值增减1 下面的示例展示了在四则运算中，部分算数操作符（+、-、*、/、%）的用法。 import java.util.Random; public class MathOps { public static void main(String[] args) { // 创建Random对象，为后续四则运算生成随机数: Random rand = new Random(27); int i, a, b; // 生成随机整数a和b并进行四则运算: a = rand.nextInt(100) + 1; System.out.println("a : " + a); b = rand.nextInt(100) + 1; System.out.println("b : " + b); i = a + b; System.out.println("a + b : " + i); i = a - b; System.out.println("a - b : " + i); i = a / b; System.out.println("a / b : " + i); i = a * b; System.out.println("a * b : " + i); i = a % b; System.out.println("a % b : " + i); a %= b; System.out.println("a %= b : " + a); // 生成随机浮点数s和n并进行四则运算: double u, s, n; s = rand.nextDouble(); System.out.println("s : " + s); n = rand.nextDouble(); System.out.println("n : " + n); u = s + n; System.out.println("s + n : " + u); u = s - n; System.out.println("s - n : " + u); u = s * n; System.out.println("s * n : " + u); u = s / n; System.out.println("s / n : " + u); s %= n; System.out.println("s % n : " + s); } } 程序执行后的结果如下： a : 31 b : 53 a + b : 84 a - b : -22 a / b : 0 a * b : 1643 a % b : 31 a %= b : 31 s : 0.7146368532850442 n : 0.5047406370101457 s + n : 1.21937749029519 s - n : 0.20989621627489852 s * n : 0.36070626055801924 s…

配置Java开发环境
type: item
date: 2025-04-05T11:07:00+00:00
description: 一、安装Java开发工具包（JDK） 1.Java与JDK的关系 要学习Java编程语言，需要在操作系统中安装JDK。可以降Java语言和JDK之间的关系理解为： Java语言定义了语法规则和功能特性，而JDK提供将这些规则转化为实际程序的工具集合。 JDK中主要包含： 编译器（javac）：将Java源代码（.java文件）编译为字节码（.class文件），这是Java跨平台的基础。 运行时环境（JRE）：包含JVM（Java虚拟机）和核心类库，负责执行编译后的字节码。 调试工具（jdb） 和文档生成器（javadoc） 等：支持开发全流程。 所以没有JDK，Java语言编写代码就无法编译和执行；没有Java语言的规范，JDK就失去存在意义。 以下是Java历代主要版本与JDK版本的对应关系： Java版本 发布时间 对应JDK版本 备注 Java1.0 1995.05.23 JDK1.0 首个正式版，提出“一次编写，到处运行”理念 Java1.1 1997.02.18 JDK1.1 引入内部类、JDBC等特性，JavaOne会议规模创纪录 Java1.2 1998.12.04 JDK1.2 划分为J2SE、J2EE、J2ME三大平台，奠定企业级应用基础(2005年6月正式取消，统一更名为Java SE、Java EE、Java ME) Java1.3 2000.05.08 JDK1.3 新增JNDI和动态代理，提升企业集成能力 Java1.4 2002.02.13 JDK1.4 引入断言（Assertions）、正则表达式和NIO Java5.0 2004.09.30 JDK1.8 更名为Java SE 5.0，支持泛型、枚举、自动装箱等 Java6 2006.12.11 JDK1.6 改进JVM性能，支持脚本语言 Java7 2011.07.28 JDK1.7 新增字符串Switch、二进制字面量等语法糖 Java8 2014.03.18 JDK8 里程碑版本，引入Lambda表达式、Stream API（长期支持版LTS） Java9 2017.09.21 JDK9 模块化系统（JPMS），每半年发布一次版本 Java10 2018.03.20 JDK10 Java11 2018.09.25 JDK11 移除Java EE模块，支持HTTP Client（LTS） Java12 2019.03.19 JDK12 Java13 2019.09.17 JDK13 Java14 2020.03.17 JDK14 Java15 2020.09.16 JDK15 Java16 2021.03.16 JDK16 Java17 2021.09.14 JDK17 密封类（Sealed Classes）、模式匹配等（LTS） Java18 2022.03.22 JDK18 Java19 2022.09.20 JDK19 Java20 2023.03.21 JDK20 Java21 2023.09.19 JDK21 虚拟线程（Loom）、分代ZGC（LTS） Java22 2024.03.19 JDK22 Java23 2024.09.17 JDK23 Java24 2025.03.18 JDK24 Java 24 是自 Java 21 后的第三个非长期支持版本 2.选择并安装JDK 在Oracle官网下载JDK，有很多版本可供选择，建议选择Oracle官方的长期支持版，如：JDK8、JDK11、JDK17、JDK21，这里选用JDK21作为示例，因为Spring官方推荐的安装环境需要JDK17或JDK21。 另外如果是下载JDK8及其以前的版本，还需要注意对应操作系统是32位或者64位，如下： 自2023年9月通过JEP 449提案，JDK21正式废弃Windows 32位x86平台的构建支持，但仍允许通过特定配置编译32位版本。本文以 Window11 64位系统为例，如下： 下载完成jdk-21_windows-x64_bin.exe或者jdk-21_windows-x64_bin.msi文件，双击运行进行安装，中间无需调整安装选项。安装完成后可以在命令行输入命令 java -version 查看系统中安装的JDK版本，如下： 二、配置环境变量（JAVA_HOME） 从JDK11开始，安装后默认无需手动配置 Path 变量即可使用基础命令，但 JAVA_HOME 仍需按需设置。对于开发场景，建议始终补充 JAVA_HOME 以规避兼容性问题。 1.JDK安装完成后，从Windows开始菜单打开 设置 ，进入 系统 中的 系统信息 ，点击 高级系统设置 ； 2.选择 高级 选项卡，点击 环境变量 ； 然后就会出现 环境变量 设置界面，…

Java简介
type: item
date: 2025-04-03T01:42:00+00:00
description: 一、Java语言的起源与设计理念 Java由詹姆斯·高斯林（James Gosling）领导的团队于1991年在Sun Microsystems启动开发，最初用于嵌入式家电设备（如电视机顶盒）的编程。1995年正式发布后，凭借“一次编写，到处运行”（WORA）的跨平台特性迅速成为互联网时代的核心语言。其设计初衷是简化C++的复杂性，摒弃多继承、指针等易错概念，同时强化面向对象特性和安全性。Oracle于2010年收购Sun后，持续推动Java的技术迭代与生态扩展。 二、Java的核心特性 跨平台性与JVM机制 Java程序通过编译器生成字节码（.class文件），由Java虚拟机（JVM）解释执行。JVM为不同操作系统提供统一运行环境，实现“代码一次编写，多平台运行”。例如，Windows编译的字节码可直接在Linux或MacOS的JVM上运行，极大降低开发成本。 纯粹的面向对象设计 Java强制使用类与对象结构，支持封装、继承、多态三大特性： 封装：通过私有变量（private）与公共方法（getter/setter）保护数据完整性。 继承：子类复用父类代码（如Animal类派生出Dog/Cat类）。 多态：接口（如Shape）允许多种实现（Circle/Rectangle），增强代码灵活性。 内存管理与安全性 垃圾回收（GC）：自动回收无用对象内存，避免内存泄漏。 安全机制：字节码验证、安全管理器（Security Manager）及沙箱模型限制恶意代码权限，防止系统攻击。 高性能与并发支持 即时编译（JIT）：将高频代码编译为机器码，提升执行效率。 多线程：内置Thread类与synchronized关键字简化并发编程，适用于服务器端高并发场景。 丰富的API与生态系统 提供超过4500个核心类库，涵盖网络（java.net）、IO流（java.io）、集合框架（java.util）等模块。Spring、Hibernate等开源框架进一步扩展了企业级开发能力。 三、Java的发展历程与版本迭代 1995-2000年：Java 1.0发布，引入Applet（网页小程序）；Java 2平台划分为J2SE（标准版）、J2EE（企业版）和J2ME（微型版）。 2004年：Java 5引入泛型、自动装箱/拆箱、注解（Annotation）等，提升代码简洁性。 2014年：Java 8推出Lambda表达式与Stream API，支持函数式编程，简化集合操作。 2021年：Java 17成为长期支持（LTS）版本，新增密封类（sealed class）、模式匹配等特性，强化代码可维护性。 四、Java的应用场景 企业级应用开发 占全球企业级市场60%以上份额，Spring框架与J2EE规范支撑银行系统（如支付清算）、ERP等复杂业务。 移动开发 Android平台以Java为核心开发语言，支付宝、微信等应用均依赖Java处理后台逻辑。 大数据与云计算 Hadoop、Spark等大数据框架基于Java构建；云原生技术（如Kubernetes）依赖Java的高可扩展性。 Web开发 通过Servlet、JSP和Spring Boot构建动态网站，典型案例包括LinkedIn、eBay等。 嵌入式与物联网（IoT） 早期Oak语言设计为智能家电赋能，如今在车载系统、智能家居中仍有应用。 五、未来趋势与挑战 云原生与微服务：Quarkus、Micronaut等轻量级框架优化Java在容器化环境中的启动速度与内存占用。 新语言特性：Project Loom引入虚拟线程（Virtual Threads），提升高并发性能；Project Valhalla探索值类型（Value Types）以优化内存使用。 竞争与替代：Kotlin（Android官方推荐语言）、Go等新兴语言对Java构成挑战，但其庞大的开发者社区与成熟生态仍具不可替代性。 结语 Java凭借跨平台、高性能、强生态等优势，历经30年发展仍稳居TIOBE指数前三。从嵌入式系统到云计算，其“一次编写，到处运行”的理念持续推动技术创新。未来，Java将继续通过版本迭代拥抱现代化编程范式，巩固其作为“编程界常青树”的地位。