JAVA常用类

Object类

  • 超类、基类,所有类的直接或间接父类,位于继承树的最顶层。

  • 任何类,如没有书写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类的常用方法
  1. length()方法; 返回字符串的长度

  2. charAt(int index)方法; 返回某个位置的字符

  3. contains(String str); 判断是否包含某个字符串

  4. toCharArray(); 返回字符串对应的数组

  5. index0f(); 返回子字符串首次出现的位置

  6. lastIndex0f(); 返回字符串最后一-次出现的位置

  7. trim(); 去掉字符串前后的空格

  8. toUpperCase();// 把小写转成大写 toLowerCas(); 把大写转成小写

  9. endWith(str) ; 判断是否以str结尾, startwith(str) ; 判断是否以str开头

  10. replace( char old,char new); 用新的字符或字符串替换旧的字符或字符串

  11. 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纳秒

  • 方法

    1. after()

      1. before()

      2. compareTo(): 比较时间前后

      3. 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("程序结束了。。。");
}
posted @   MambaHonor  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· Windows 提权-UAC 绕过
点击右上角即可分享
微信分享提示