常用类
系统相关类
Java 程序在不同操作系统上运行时,有可能需要取得平台相关的属性,或者调用平台命令来完成特定的功能
Java 提供 System 类和 Runtime 类来与程序运行的平台进行交互
System 类
表示当前 Java 程序的运行平台
描述:System 类是一个 final 类,该类的所有属性和方法都是静态的,可以不创建对象直接调用
属性:in(标准输入)、out(标准输出)、err(错误输出)
常用方法:
- currentTimeMillis( ):记录程序执行的时间(单位毫秒)
- exit():结束当前正在运行中的 Java 虚拟机
- getProperties( ):获取当前系统属性和环境变量
- gc():提醒虚拟机,建议进行一次垃圾回收
Runtime 类
表示当前 Java 程序的运行时环境
描述:
- 应用程序不能创建自己的 Runtime 对象实例
- 只能通过 Runtime 类的静态方法getRuntime( )获取与之关联的Runtime 对象
常用方法:
- availableProcessors( ):获取处理器数量
- freeMemory( ):获取空闲内存大小(字节)
- totalMemory():获取总内存大小(字节)
- maxMemory() :获取可用最大内存大小(字节)
字符串相关类
Java 中字符串类型是程序中使用范围最广的数据类型,字符串操作也就成了程序员使用得最多的操作
Java 中提供 String 类、StringBuffer 类、StringBuilder 类来处理字符串,这三个类提供了大量操作字符串对象的方法,能够满足程序中各种对字符串的处理
String类
表示固定不变的字符串
描述:
- String 类是 final 类,不能被子类继承
- String 类实例化对象包含固定不变的字符串
字符串特点:
- 字符串必须使用双引号(如“Hello”)
- 字符串的字符使用 Unicode 编码(一个字符或汉字占两个字节)
- 字符串是固定不可变的,统一存放在内存的字符串常量池中
常用方法:
- charAt ( int index ):返回字符串指定位置的字符
- indexOf( String s):返回指定字符串第一次出现的位置
- startsWith(String s):测试字符串是否以指定前缀开始
- endsWith(String s):测试字符串是否以指定后缀开始
- subString( int index):返回字符串的子字符串
- replace(char a, char b):替换字符串的指定字符
- trim():去掉字符串的前后空格
- concat(String str):连接两个字符串
- split(String regex):给定正则表达式的匹配来拆分字符串
字符串常量池
字符串常量池通过共享字符串对象,提高字符串对象的使用效率
正则表达式
正则表达式是一种用来匹配字符串的表达式,Java 中 String 类支持使用正则表达式匹配字符串
字符通配符
次数通配符
其他通配符
StringBuffer 类
表示可变长度的字符串(线程安全)
StringBuffer 类是 Java 提供的另外一种字符串操作类,该类允许包含的字符串内容改变,用于解决 String 类包含的字符串内容不可变的问题(频繁修改字符串内容使用 StringBuffer 类)
常用方法
- append(String str):向字符串后面追加指定字符串
- toString():返回对象包含的字符串
举例
// StringBuffer 实例化对象
StringBuffer temp = new StringBuffer(“hello ”);
temp.append(“world”); // 追加字符串
String str = temp.toString(); // 返回对象包含的字符串
System.out.println(str);
StringBuilder 类
表示可变长度的字符串(线程不安全)
StringBuilder 类是在 JDK1.5 以后 Java 增加的一个新的字符串操作类,它同 StringBuffer 类几乎相同,唯一不同之处是 StringBuilder 类是线程不安全的,StringBuffer 类是线程安全的
String、StringBuffer 和 StringBuilder 区别
- String 表示固定长度的字符串,StringBuffer(线程安全) 和 StringBuilder(线程不安全) 表示可变长度字符
- 性能由低到高为 String < StringBuffer < StringBuilder
日期时间相关类
在实际软件项目开发中,经常会遇到处理日期和时间的情况,Java 语言中提供了一系列类专门处理日期和时间类
Date 类(日期时间)
- 表示特定的瞬间(精确到毫秒)
- 时间原点(0毫秒):1970-01-01 08:00:00
- 1天 = 246060 = 86400 秒 = 86400 * 1000 = 86400000 毫秒
//获取当前系统的时间和日期
Date date = new Date();
//把时间和日期转换成时间戳(毫秒)
long time = date.getTime();
SimpleDateFormat 类(日期时间格式化)
描述:
- 格式化(日期 -> 文本)
- 解析 (文本 -> 日期)
常用方法:
- format ( Date date ) :按照指定的模式,把 Date 日期格式化为符合模式的字符串
- parse ( String source ) :把符合模式的字符串,解析为 Date 日期
// 格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = new Date( );
String str = sdf.format(date);
//解析
sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse("2020-10-23");
Calendar 类(日历)
描述:
- 它调用静态方法 getInstance( ) 获取实例化对象(单例模式)
- 它提供很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
常用方法:
- int get (int field):获取日历(年月日等)
- void set(int field, int value):设置日历(年月日等)
- void add(int field,int amount):添加或减少日历(年月日等)
// 获取日历对象实例(当前日历)
Calendar calendar = Calendar.getInstance();
// 获取日历年、月
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
//设置日历年、月
calendar.set ( Calendar.YEAR, 2021 );
calendar.set ( Calendar.MONTH, 9 );
//日历增加 2 年
calendar.add(Calendar.YEAR, 2);
//把日历对象转换为日期对象
Date date = calendar.getTime( );
数学运算相关类
Math 类
描述:
- Math 类包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数
- Math 的方法都被定义为 static 形式,可以直接通过 Math.方法名() 进行调用,方便程序员进行实际的使用
常用方法:
- int abs(int i):返回绝对值
- round(float f):表示四舍五入
- min(int a,int b):返回两个数最小值
- max(int a,int b): 返回两个数最大值
- random():返回[0,1)之间的随机double值
BigInteger 类
- 在 Java 中,基本数据类型存储的整型最大范围是 64 位 long 型整数
- BigInteger 类用于表示任意大小的整数,因为它内部有一个 int[ ] 数组可以保存一个非常大的整数
BigInteger numA = new BigInteger("1234567890");
BigInteger numB = new BigInteger("12345678901234");
// BigInteger 运算只能调用方法
BigInteger sum = NumA.add(NumB);
// BigInteger 可以转为基本数据类型
long numC = numA.longValue();
BigDecimal 类
BigDecimal 类和 BigInteger 类相似,用于表示一个任意大小且精度完全准确的浮点数(常用于财务计算)
BigDecimal decimalA = new BigDecimal("123.4500");
// 返回小数位数
System.out.println(decimalA.scale()); // 4(4位小数)
//去掉末尾的 0
BigDecimal decimalB = decimalA.stripTrailingZeros();
System.out.println(decimalA.scale()); // 2(两位小数)
包装类
什么是包装类
包装类是将 Java 中八种基本数据类型封装成的类,所有的基本数据类型都能很方便地与对应的包装类相互转换,以解决应用中要求使用引用数据类型,而不能使用基本数据类型的情况
包装类的特点
- 所有包装类都是 final 类型(不能派生子类)
- 实例化包装类对象后,对象中保存的基本类型数据不能再改变
- 包装类封装大量有用的方法(如数据类型转换)
- 除 Character 类和 Boolean 类继承于 Object 类,其他的包装类都继承于 Number 类
基本数据类型与包装类
包装类的共同点
- 包装类中包含的值不可变(包装类实例化对象后不能修改保存的数值)
- 包装类都有两个构造器
- 包装类中都有xxxValue()方法
- 包装类中都有两个 ValueOf()方法
自动装箱/拆箱
自动装箱和自动拆箱是基本数据类型与包装类之间的一种转换机制(通过编译器自动完成)
不要过度使用自动装箱或自动拆箱功能,因为它们可能会导致程序的性能下降
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现