- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 07、日期类
被称为“新纪元”的时间线原点被设置为穿过伦敦格林尼治皇家天文台的本初子午线所处时区的1970 年 1 月 1 日的午夜。Java 标准库有两套处理日期和时间的 API:一套定义在java.util这个包里。主要包括:DateCalendar和TimeZone这几个类;一套新的 API 是在 Java8 引入的,定义在java.time这个包里。主要包括:ZoneId等。
2025-06-20 22:58:13
835
原创 06、日期 相关概念
在 64 位系统下,此时间最多可以表示到 292,277,026,596 年 12 月 4 日 15 时 30 分 08 秒。这个时间就可以非常长了,在目前的人类生活时间中,远远够用了。4、CET(Central European Time,欧洲中部时间)7、NTP(Network Time Protocol,网络时间协议)GMT (Greenwich Mean Time,格林尼治标准时间)中国标准时间(北京时间):China Standard Time。5、ISO 时间(ISO 8601 标准时间格式)
2025-06-20 22:47:45
535
原创 05、String 模板 -- 正则表达式
分组将表达式从左到右按照()进行分组。2、分组编号规则从左到右:按左括号 “(”出现顺序编号,从 1 开始分组编号。因为, 0 表示整个表达式。嵌套分组:外层先编号,再处理内层。// 分组1: A(B(C)), 分组2: B(C), 分组3: C(A(B(C)))// Java 提取分组内容// 2025-05// 2025// 05。
2025-06-20 22:40:21
709
原创 04、String 类的 hashCode() 方法
一个好的 hash 函数应该是这样的:为不相同的对象产生不相等的 hashCode。分析:hash默认“ABC”h=Ahashh= 31h+B= 31A+B = A*311+ B*310h= 31h+C=31(312+ B*311+ C*310。
2025-06-19 18:00:40
927
原创 02、大数 -- BigDecimal、BigInteger
如果基本的整数和浮点数精度不足以满足需求,可以使用 java.math 包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。二、BigInteger1、用途BigInteger类可实现任意精度的整数运算。如:超出long范围(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)的大整数。2、典型场景大数阶乘(如:1000!
2025-06-19 11:14:20
1086
原创 01、基本数据类型 的 包装器类
Java 是面向对象语言,但 Java 基本数据类型不是面向对象的。在实际使用中,经常需要将基本数据类型转化成对象,便于操作。如:集合中不能存放基本数据类型,只能存放对象集合包装类对象2、包装器类为此,Java 语言为所有的基本数据类型都提供了一个与之对应的类。如:Integer 类对应基本类型int。通常,这些类称为包装器(wrapper),这些包装器类有显而易见的名字:包装器类是不可变的。因此,一旦创建了包装器对象,就不允许更改包装在其中的值。
2025-06-19 11:06:49
802
原创 07、密封类(Sealed Class)
(Pattern Matching)中,编译器可以检查是否覆盖所有可能的子类。:当需要有限的子类但每个子类有不同状态或行为时,密封类比枚举更灵活。密封类天然适合表示固定类型的组合。密封类 ( sealed class )是 Java 17 引入的一个重要特性。即:该子类,功能完善了,:只有被明确许可的类才能继承密封类。密封类(Sealed Class)即:修饰的子类,允许。修饰符声明密封类,并通过。五、密封类 vs 枚举类。子类可以有不同属性和方法。需要有限子类且每个子类有。
2025-06-17 14:54:33
761
原创 06、记录类(Record)
记录 ( record) :是一种特殊形式的类,其状态不可变,而且公共可读。在 Java 语言规范中,一个记录(Record)的实例字段称为组件 (component)。记录(Record)不能被继承。记录(Record)的 实例变量,默认是有final 修饰的。Java 16 中引入的记录(Record)是一种新的类类型,旨在简化不可变数据模型的声明和使用。一、记录 vs 普通类。
2025-06-17 14:49:00
852
原创 05、枚举类
理解:枚举类 中的 每个常量(如:RED、GREEN),本质上是该枚举类的一个个具体的实例对象。这些具体实例常量)在枚举类加载时被初始化,且全局唯一、数量固定、不可变。每个实例可以携带自己的状态(属性)和行为(方法)。RED, // 相当于 new Color("RED", 0)GREEN, // 相当于 new Color("GREEN", 1)BLUE;// 相当于 new Color("BLUE", 2)原理:每个枚举常量会被编译器。
2025-06-17 14:45:44
802
原创 04、内部类 的 分类
在方法构造器或代码块内部的类,其作用域仅限于所在的代码块。// 局部变量(必须 final 或 effectively final)// 局部内部类定义System.out.println("访问外部类的局部变量: " + localVar);// 在方法内部实例化并使用2、特点 / 特性:1、作用域限制仅在定义它的代码块(如:方法构造器或代码块内部可见,外部无法直接访问。2、访问局部变量局部内部类可以直接访问外部类的所有成员。
2025-06-17 14:41:29
631
原创 03、内部类
将一个类定义在另一个类里面或一个方法里面,这样的类称为内部类。内部类 - 寄生类外部类 - 宿主类Java 16 之前的限制如下:内部类类型允许的静态成员禁止的静态成员根本原因成员内部类常量普通static方法、变量依赖外部类实例,与静态成员的独立性矛盾局部内部类常量普通static方法、变量作用域临时性,无法保证类级别存在匿名内部类常量普通static方法、变量匿名性导致无法通过类名访问静态内部类所有。
2025-06-15 18:06:43
1000
原创 01、接口(Interface)
JDK1.7 之前,接口中只能定义静态常量和公共的抽象方法JDK1.8 中,接口中可以定义默认方法和静态方法JDK1.9 中,接口中可以定义私有方法。
2025-06-15 17:37:01
980
原创 07、多态 -- 面向对象的特性
一个引用类型的变量可以指向多种实际对象,这一点称为多态(polymorphism)。引用类型的变量在运行时能够自动地选择适当的方法,称为动态绑定(dynamic binding)。这种多态也叫做:运行时多态。多态是一项让程序员“将改变的事物与未变的事物分离开来”的重要技术。可以消除类型 之间的耦合关系。提高代码的可扩展性和复用性。运行时多态的 实现:通过方法的重写来实现的。父类引用可以指向子类对象,通过。
2025-05-21 09:17:32
634
原创 06、继承 -- 面向对象的特性
继承是用来表示类之间的is-a 关系。如:猫是一种哺乳动物。关键字 extends 指示正在构造的新类派生于一个已存在的类。这个已存在的类称为超类(superclass)、基类(base class)、父类(parent class)。新类称为子类(subclass / child class)、派生类(derived class)。超类和子类是 Java 程序员最常用的两个术语。超”(super)和 “子”(sub)来源于计算机科学与数学理论中。
2025-05-21 09:13:55
1034
原创 03、类 之间的 关系 的图解
类之间最常见的关系有:继承(“is-a”) :一个类继承了 另一个类。实现不易解耦的复用。通过多态实现解耦(即:动态更换对象)。关联(“has-a”) :一个类 作为 另一个类的成员变量。实现容易解耦的复用。关联:两个类关系独立、平等。通过接口或抽象类实现解耦(即:动态更换关联的对象)。聚合:两个类关系独立、可分割的整体与个体。通过接口或抽象类实现解耦(即:动态更换关联的对象)。组合:两个类关系。
2025-05-20 13:47:32
691
原创 01、面向对象 vs 面向过程 vs 函数式
如:FileConstants、MysqlConstants 等,FileUtils、StringUtils 等。相应的 VO(View Object)、BO(Business Object)、Entity。Controller 类、Service 类、Repository 类中。一个类,无论是否需要,为所有属性都提供了 get / set 方法。两个语法概念,不支持面向对象编程的特性(如:封装、继承、多态),为核心,把问题分解成一个个步骤,对每个步骤进行相应的抽象,形成。
2025-05-17 14:56:29
855
原创 09、关键字 this、static、super、final 等
【abstract 不能与 final 方法同时出现】。Abstract 与 final 永远互斥。对于 abstract 方法来说,该方法应该有子类重写,final 方法不能被重写。对于 abstract 类来说,该类主要用于派生子类。final 类不能被派生。【abstract 与 static 不能同时修饰方法】static 修饰方法的时候用类来调用方法。用类调用 abstract 方法没有意义,所以会出错。【abstract 与 private 不能同时修饰方法】
2025-05-16 10:21:49
992
原创 08、数组
Object 类中的一个本地方法,这里虽然返回 Object,看着需要强制类型转换,但 Object 子类重写了这个方法,会返回相应的类型。如:int[][] twoDimensionalArr = {{1,2,3},{4,5,6},{7,8,9}};如:int[][] twoDimensionalArr = {{1,2,3},{4,5},{6,7,8,9}};为了避免 d,e,f,g,h 这几个数据会被搬移三次,我们可以先记录下已经删除的数据。是一个本地方法,方法对应的实现不在当前文件里,而是在。
2025-05-16 09:34:19
711
原创 06、数据类型之间的转换
十进制小数乘 2 取积中的整数部分。然后,将积中的小数部分继续乘 2 取积中的整数部分,直到积中的小数部分为 0 为止。用十进制数除 2 取余,得到商之后继续除 2 取余,直到商为小于 1 为止。:父类转子类,需强制转换,需强制转换且确保对象实际实现接口。:1 符号位 + 11 指数位 + 52 尾数位(精度。:1 符号位 + 8 指数位 + 23 尾数位(精度。:父类转子类,需强制转换,且需类型检查(否则抛出。整型溢出时,根据补码规则循环回绕,导致符号翻转。:将大范围类型转换为小范围类型时,需强制转换。
2025-05-15 09:41:52
778
原创 05、运算符
结果 200 将被视为字符串,并与字符串 Javatpoint 连接,以生成 Javatpoint200 的输出。数字 10 和 20 将首先乘以 200,因为乘法的优先级高于加法。“+” 号左右,一边为 String 类型时,则变成字符连接符。首先, 10 和 20 被视为数字,相加为 30。会对两侧表达式均求值(即使左侧已确定结果)。然后,将结果 200 视为字符串并与字符串。结果中的小数部分,返回一个整数结果(不是。(一个为 1 一个为 0 ,才位 1)然后,30 被视为字符串,并与字符串。
2025-05-15 09:21:17
852
原创 04、字面量(直接量)、变量、常量
在 Java 中,编译时常量化(Compile-Time Constant) :是指某些变量或表达式的值在编译阶段就能被确定,并被编译器直接替换为字面量的过程。这种常量化的核心是值不可变,且其值在编译时即可完全计算出来。4.2、示例源码// ✅ 表达式常量: 62.831...// ❌ 非常量表达式(包含方法调用)// 实例变量// 类变量static {// 直接字面量// 编译时常量化 -- (类似:宏替换)
2025-05-15 08:50:44
777
原创 03、数据类型
如:‘A’ 是编码值为 65 的字符常量。“A” 是包含一个字符的。如:值 0 相当于布尔值 false , 非 0 值相当于布尔值 true。的 int、long、short 或 byte 类型。,其范围从 \u0000 ~ \uFFFF。有两个值:false 和 true,用来判定。→ 表示 ASCII 值为 0 的字符。现在只能描述 Unicode 字符集中,(八进制的 141 = 十进制的 97)float 最大可以保留。无符号(unsigned)形式。2、接口(Interface)
2025-05-15 08:40:46
672
原创 03、类变量、实例变量、局部变量
在程序的执行过程中,它的值是可以被改变的。语法格式:【修饰符】类型 field名 = 默认值;变量名的命名规则:首字母小写,有多个单词组成时,要满足驼峰标识。
2025-05-14 16:02:16
840
原创 02、访问控制 修饰符
Java 中,访问修饰符(Access Modifiers)用于控制类、方法、变量等成员的可见性和访问权限。它们定义了其它类或模块是否可以访问某个成员(如:调用方法、读取字段等)。
2025-05-14 15:55:28
217
原创 01、包、import
类似于书本的“目录”,帮助读者快速定位内容,但目录本身不影响书籍内容的执行速度。编译时间,但影响可以忽略不计(现代 IDE 和编译器。语句告诉编译器在编译时如何查找类或静态成员的。// 导入 Math 类下所有的静态成员。引入声明(如:函数、类定义),否则。在运行时动态加载,确保类唯一性。( compiler)的工作。是预处理指令,在编译前将。不将代码复制到当前文件中。仅是为了简化代码书写。2、包提供了更容易的的。使项目的组织更加清晰。
2025-05-14 15:53:42
967
原创 08、初始化块 -- 成员变量初始化
修饰符 ] {// 可执行性的语句。修饰符 :只能出现 static有 static,说明它是类初始化块静态初始化块。无 static,说明它是实例初始化块非静态初始化块。由于初始化块没有名字。所以,它只能被“隐式”执行。
2025-05-14 15:37:15
868
原创 07、构造器 (constructor) -- 初始化成员变量
在创建对象时,被JVM自动调用的特殊方法。注意:构造器不能被继承不能被重写、可以被重载。2、声明构造器的语法【修饰符】构造器名(多个形参声明) {// 0~N 条可执行的语句。【修饰符】 – 可以省略。还可以是 public | protected | private。构造器名称 –不能省略。必须与类名相同。形参声明 –形参名满足首字母小写 + 驼峰标识。多个形参声明之间用英文逗号隔开。
2025-05-14 15:33:43
671
原创 01、Java 标识符、关键字、保留字、直接量、分隔符
否,在 Java 中,delete、next、main、exit 和 null 不是关键字。(1) 由字母(中文字符、日文字符、韩文)、数字、下划线、$组成,不能以数字开头。(4) 别用 Java API 里面的类名作为自己的类名。: 不可继承/不可修改(类、方法、变量)。: 保留未使用(类似 C 语言的跳转)。: 保留未使用(类似 C 的常量声明)。(隐式): 包级私有(无需显式声明)。,(比如:类名,方法名,变量名等)。: 尝试执行可能抛出异常的代码块。: 声明方法可能抛出的异常类型。
2025-05-13 09:07:36
733
原创 06、方法调用
方法调用不等同于方法中的代码被执行。方法调用阶段唯一的任务就是确定被调用方法的版本(即:调用哪一个方法暂时还未涉及方法内部的具体运行过程。Java 的 Class 文件的编译过程中不包含传统程序语言编译的连接步骤。因此,一切方法调用在Class 文件中都只是符号引用,存储在静态常量池中。而不是方法在实际运行时,内存布局中的入口地址(即:直接引用这个特性给 Java 带来了更强大的动态扩展能力,但也使得。
2025-05-12 20:05:46
427
原创 05、方法参数 的 值传递 与 引用传递
Java没有引用传递,所有参数传递均为值传递。对于引用类型,传递的是对象引用的副本(即:对象的内存地址的副本而非引用本身。方法内部只能修改对象引用的副本(即:对象的内存地址的副本无法改变原对象引用指向的对象。
2025-05-12 19:58:34
476
原创 04、方法
main() 方法一定是静态的。如果 main() 允许是非静态的,那么在调用 main 方法时,JVM 就得实例化它的类。在实例化时,还得调用类的构造函数。如果这个类的构造函数有参数,那么就会出现歧义。是的,main 方法可以在 Java 中同步,synchronized 修饰符允许用于 main 方法的声明中,这样就可以在 Java 中同步 main 方法了。// 该方法可以正常运行。System.out.println("同步 main 方法");
2025-05-11 12:17:30
1085
原创 04、JDK 常用的基本工具
当 Java 类的本地方法发生变更时,重新生成头文件以保持本地代码与 Java 代码的一致性。当需要在 Java 中调用 C/C++ 编写的函数(如:高性能计算、硬件操作)时。:方法级 CPU 热点抽样(Sampling)和精确追踪(Profiling)。:堆/非堆内存使用情况(Eden、Survivor、Old Gen 等):堆转储(Heap Dump)生成与分析(对象实例分布、引用链追踪)。:线程状态可视化、线程转储(Thread Dump)与死锁检测。,确保 Java 与本地代码的正确对接。
2025-05-08 14:29:58
901
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人