JAVA常用类
-
超类、基类,所有类的直接或间接父类,位于继承树的最顶层。
-
任何类,如没有书写extends显示继承某个类,都默认直接继承0bject类,否则为间接继承。
-
0bject类中所定义的方法,是所有对象都具备的方法。
-
0bject类型可以存储任何对象。
-
作为参数,可接受任何对象。
-
作为返回值,可返回任何对象。
-
getClass()方法
public final Class<?> getClass(){}
返回引用中存储的实际对象类型
应用:通常用于判断两个引用中实际存储的对象类型是否一致
hashCode()方法
public int hashcode(){}
返回该对象的哈希码值。
哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值。
一般情况下相同对象返回相同哈希码。
toString()方法
public String toString(){}
返回该对象的字符串表示(表现形式)
可以根据程序需求覆盖该方法,如:展示对象各个属性值
equals()方法
public boolean equals(Object obj){}
默认实现(this == obj),比较两个对象地址是否相同
可进行覆盖,比较两个对象的内容是否相同
equals()方法覆盖步骤
-
比较两个引用是否指向同一个对象。
-
判断obj是否为null。
-
判断两个引用指向的实际对象类型是否一致。
-
强制类型转换。
-
依次比较各个属性值是否相同。
finalize()方法
-
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。
-
垃圾对象:没有有效引用指向此对象时,为垃圾对象。
-
垃圾回收:由GC销毁垃圾对象, 释放数据存储空间。
-
自动回收机制: JVM的内存耗尽,一次性回收所有垃圾对象。
-
手动回收机制:使用System. gc();通知JVM执行垃圾回收。
包装类
-
基本数据类型所对应的引用数据类型。
-
0bject可统一所有数据,包装类的默认值是null。
包装类对应基本类型
类型转换与装箱、拆箱
基本数据类型与包装类之间的转换
类型转换:装箱,基本类型换成引用类型的过程
Integer integer1 = new Integer(num1);
Integer integer2 = Integer.valueOf(num1);
类型转换:拆箱,引用类型装换成基本类型
Integer integer3 = new Integer(100);
int num2 = integer3.intValue();
JDK1.5之后,提供自动装箱和拆箱
Integer integer4 =age;
int age2 = integer4;
八种包装类提供不同类型间的转换方式
-
Number父类中提供的6个共性方法
-
parseXXX()静态方法
-
valueOf()静态方法
注意:需保证类型兼容,否则抛出NumberFormatException异常。
整数缓冲区
Java预先创建了256个常用的整数包装类型对象。(-128~127)
在实际应用中,对已创建的对象进行复用
String类
-
字符串是常量,创建之后不可改变
-
字符串字符面值存储在字符串池中,可以共享
public static void main(String[] args) {
String name = "hello";//"hello" 常量存储在字符串池中
name = "zhangsan";//"张三"赋值给name变量,给字符串负值时,并没有修改数据,而是重新开辟一个空间
String name2 = "zhangsan";
}
-
String s = "Hello";产生一个对象,字符串池中存储
-
String s = new String("Hello");//产生两个对象,堆、池各存储一个
//演示字符串的另一种创建方式
String str = new String("java");
String str2 = new String("java");
System.out.println(str==str2);
System.out.println(str.equals(str2));
String类的常用方法
-
length()方法; 返回字符串的长度
-
charAt(int index)方法; 返回某个位置的字符
-
contains(String str); 判断是否包含某个字符串
-
toCharArray(); 返回字符串对应的数组
-
index0f(); 返回子字符串首次出现的位置
-
lastIndex0f(); 返回字符串最后一-次出现的位置
-
trim(); 去掉字符串前后的空格
-
toUpperCase();// 把小写转成大写 toLowerCas(); 把大写转成小写
-
endWith(str) ; 判断是否以str结尾, startwith(str) ; 判断是否以str开头
-
replace( char old,char new); 用新的字符或字符串替换旧的字符或字符串
-
split(); 对字符串进行拆分
//补充两个方法equals(),compareTo():比较大小
String s1 = "hello";
String s2 = "Hello";
System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写的比较
String s3 = "abc";
String s4 = "xyz";
System.out.println(s3.compareTo(s4));//从第一个字符开始比较两字符的Ascii码值
String s5 = "abc";
String s6 = "abcxyz";
System.out.println(s5.compareTo(s6));//比较Ascii码值无果后,比较字符串长度
首字母大写方法
for (int i = 0; i < arr.length; i++) {
char first = arr[i].charAt(0);
char upperFirst = Character.toUpperCase(first);
String news = upperFirst + arr[i].substring(1);
System.out.println(news);
}
可变字符串StringBUffer和StringBuilder
StringBUffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全
StringBuilder:可变长字符串,JDK1.5提供,运行效率快、线程不安全
和String的区别
(1)效率比String高
(2)比String节省内存
StringBuffer和 StringBuilder的方法的使用
//StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();
//1. append();追加
sb.append("java世界第一");
System.out.println(sb.toString());
sb.append("java真相");
System.out.println(sb.toString());
sb.append("java牛逼");
System.out.println(sb.toString());
//2. insert();添加
sb.insert(0,"我在最前面");
System.out.println(sb.toString());
//3. delete();删除
sb.delete(0,5);
System.out.println(sb.toString());
//4. replace();替换
sb.replace(0,4,"php");
System.out.println(sb.toString());
//倒转
sb.reverse();
System.out.println(sb.toString());
//清空
sb.delete(0,sb.length());
System.out.println(sb.toString());
System.out.println(sb.length());
BigDecimal类
-
很多实际应用中需要精确运算,而double或float是近似值存储,不在符合要求,需要借助BIgDecimal。
-
位置: java. math包中。
-
作用:精确计算浮点数。
-
创建方式: BigDecimal bd=new BigDecimal( “1.0”);
-
方法:
//减法bd1.subtract(bd2);
//加法bd1.add(bd2);
//乘法bd1.multiply(bd2);
//除法
//保留三位小数,四舍五入
bd1.divide(new BigDecimal("0.9"),3,BigDecimal.ROUND_HALF_UP);
BigDecimal divide1 = new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
-
除法: divide (BigDecimal bd, int scal, Roundi ngMode mode)
-
参数scal :指定精确到小数点后几位。
-
参数mode:
-
指定小数部分的取舍模式,通常采用四舍五入的模式
-
取值为BigDecimal.ROUND_HALF_UP
-
保留三位小数,四舍五入 BigDecimal divide = bd1.divide(new BigDecimal("0.9"),3,BigDecimal.ROUND_HALF_UP);
Date类
-
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
-
时间单位
-
1秒=1000毫秒
-
1毫秒=1000微秒
-
1微秒=1000纳秒
-
-
方法
-
after()
-
before()
-
compareTo(): 比较时间前后
-
equals():比较是否相等
-
-
Calendar类
Calendar提供了获取或设置各种日历字段的方法。.
构造方法
protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。
其他方法
补充方法
//获取当前时间的某一字段的最大值或最小值
int max = instance1.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = instance1.getActualMinimum(Calendar.DAY_OF_MONTH);
SimpleDateFormat类
-
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
-
进行格式化(日期 -> 文本)、解析(文本 -> 日期)。
-
常用的时间模式字母
字母 | 日期或时间 | 示例 |
---|---|---|
y | 年 | 2019 |
M | 年中月份 | 08 |
d | 月中天数 | 10 |
H | 一天中小时数(0-23) | 22 |
m | 分钟 | 16 |
s | 秒 | 59 |
S | 毫秒 | 367 |
public static void main(String[] args) throws Exception {
//1. 创建SimpleDateFormat对象 Y 年 M 月
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH-mm-ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//2. 创建Date对象
Date date = new Date();
//格式化date(把日期转成字符串)
String str = sdf.format(date);
System.out.println(str);
//解析 (把字符串转成日期)
Date date1 = sdf.parse("1990/05/02");
System.out.println(date1);
}
System类
System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。
public static void main(String[] args) {
//1. arraycopy:数组复制
//Object src:源数组
//int srcPos:从哪个位置开始复制 0
//Object dest:目标数组
//int destPos:目标数组的位置
//int length:复制的长度
int[] arr = {21,43,54,12,65,2,66,41};
int[] dest = new int[8];
System.arraycopy(arr, 0, dest, 0, 8);
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
//Arrays.copyOf();
//2. 获取毫秒数
System.out.println(System.currentTimeMillis());
long start = System.currentTimeMillis();
for (int i = 0; i < 999999999; i++) {
for (int j = 0; j < 999999999; j++) {
int result = i+j;
}
}
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
//3. 回收垃圾
//System.go();告诉垃圾回收器回收
//4. 退出JVM
System.exit(0);
System.out.println("程序结束了。。。");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· Windows 提权-UAC 绕过