Java常用类

常用类

Object类

  1. 超类、基类,所有类的直接或间接父类,位于继承树的最顶层
  2. 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承
  3. Object类中所定义的方法,是所有对象都具备的方法
  4. Object类型可以存储任何对象
    1. 作为参数,可接收任何对象
    2. 作为返回值,可返回任何对象

Object类常用方法

getClass()方法

public final Class<?> get(){}
//返回引用中存储的实际对象类型
//应用:通常用于判断两个引用中实际存储对象类型是否一致
/*
Student s1=new Student();
Student s2=new Student();
//判断s1和s2是不是同一个类型
Class class=s1.getClass();
Class class=s2.getClass();
*/

hashCode()方法

public int hashCode(){}
//返回该对象的哈希码值
//哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
//一般情况下相同对象返回相同的哈希码
Student s1=new Student();
Student s2=new Student();
System.out.println(s1.hashCode())
System.out.println(s2.hashCode())
//对象不同,堆内的地址也不同,所以哈希值也不同
Student s3=s1;
System.out.println(s3.hashCode())//哈希值的地址s1与s3相同

toString()方法

public String toString(){}
//返回该对象的字符串表示(表现形式)
//可以根据程序需求覆盖该方法,重写toString的方法
package com.MHP.Object1;

import org.w3c.dom.ls.LSOutput;

public class TestStudent {
    public static void main(String[] args) {
        Student s1 = new Student("zhangsan");
        Student s2 = new Student("lisi");
        System.out.println(s1.toString());
        System.out.println(s2.toString());//如果没有重写toString的方法的话,会出现地址
    }
/*
package com.MHP.Object1;

public class Student extends Person {
        String name;
  public Student(String name){
        this.name=name;
  }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}
*/
}

equals()方法

  1. ==比较的是对象的地址是否相同,equals比较的是值
public boolean equals(Object obj){}
//默认实现为(this==obj),比较两个对象地址是否相同
//可进行覆盖,比较两个对象的内容是否相同
Student s1 = new Student("zhangsan");
Student s2 = new Student("lisi");
System.out.println(s1.equals(s2));//地址不同,所以返回false
//参数的值是相同的话,它的的地址也是不同的,所以返回了也是false
Student s3 = new Student("lisi");
Student s4 = new Student("lisi");
System.out.println(s3.equals(s4));

finalize()方法

  1. 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收列表

包装类

什么是包装类

基本数据类型所对应的引用数据类型 例如:int num=10; num是不可以使用方法的

Object可统一所有数据,包装类的默认值是null;


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNQ2TlYg-1631871375210)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20210915203252674.png)]

类型转换与装箱、拆箱

基本数据类型存在栈中,引用数据类型存在堆中

package com.MHP.Object1;

import org.w3c.dom.ls.LSOutput;

public class Demo1 {
    public static void main(String[] args) {
        
    //类型转换:装箱,基本类型转换成引用类型的过程(从栈到堆)
    //基本类型
    int num1=10;
    //使用Interger类创建对象
    Integer integer1=new Integer(num1);
    Integer integer2=Integer.valueOf(num1);
    //类型转换:拆箱,引用类型转换成基本类型
    Integer integer3=new Integer(100);
    int num2=integer3.intValue();
        System.out.println("=========================================");
        //JDK1.5后,提供了自动装箱和拆箱
        int age=10;
        //自动装箱
        Integer integer4=age;
        //自动拆箱
        int age2=integer4;
    }
}

基本类型和字符串转换

8种包装类提供不同类型间的转换方式:

  1. Number父类中提供的6个共性方法
  2. paeseXXX()静态方法
  3. valueOf()静态方法

注意:需保证类型兼容,否则抛出NumberFormatException异常

package com.MHP.Object1;

import org.w3c.dom.ls.LSOutput;

public class Demo02 {
    public static void main(String[] args) {

    //基本类型与字符串的转换
    //基本类型转换成字符串
    int n1=100;
    //使用+"";
    String s1=n1+"";
    //使用Integer中的toString()方法
    String s2=Integer.toString(n1);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println("=====================================");
        //字符串转换成基本类型
        String s3="150";
        //使用integer.parseXXX();
        int n2 = Integer.parseInt(s3);
        System.out.println(n2);
        System.out.println("=====================================");
        //boolean字符串形成基本类型"true"--->true,非"true"----》false
        String s4="false";
        boolean b1 = Boolean.parseBoolean(s4);
        System.out.println(b1);
    }
}

整数缓冲区

package com.MHP.Object1;

public class Demo03 {
    public static void main(String[] args) {
        //面试题
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1==integer2);//false, 虽然它们的值是相同的,但是它们在堆内的地址是不同的

        Integer integer3=Integer.valueOf(100);//自动装箱
        Integer integer4=100;
        System.out.println(integer3==integer4);//true,实际上自动装箱是等于:Integer integer3=Integer.valueOf(100);在堆中是有100的对象的,对应的栈中的integer是相同的
        /*
         public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)//low是-127,high是128
            return IntegerCache.cache[i + (-IntegerCache.low)];//cache是缓冲区
        return new Integer(i);
    }
        * */

        Integer integer5=200;//自动装箱
        Integer integer6=000;
        System.out.println(integer3==integer4);//false,超出了缓冲区的值,最高是128,所以在栈中没有找到对应的对象,所以返回false
    }
}

String类

  1. 字符串是常量,创建后不可改变
  2. 字符串字面值存储在字符串池中,可以共享
  3. String s=“Hello”; 产生一个对象,字符串池中存储
  4. String s=new String(“Hello”)//产生两个对象,堆、池各存储一个
  5. 之后JDK1.7后更新了,方法区在堆中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcxMWMi1-1631871375214)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20210917153533141.png)]

常用方法

length()

返回字符串的长度

String content="Java";
System.out.println(content.length());//返回4
charAt(int index)

根据下标获取字符

String content="Java";
System.out.println(content.charAt(content.length()-1);//返回a
contains(String str)

判断当前字符串中是否包含str

String content="Java";
System.out.println(content.contains("ava"));ture
System.out.println(content.contains("php"));false
toCharArray()

将字符串转换成数组

String content="Java";
System.out.println(content.toCharArray());//会返回一个地址
System.out.println(Array.toString(content.toCharArray()));
indexOf(String str)

查找str首次出现的下标,存在,则返回下标;不存在,则返回-1

String content="Java是全世界最好的语言,java真好啊";
System.out.println(content.indexOf("java"));//返回下标
System.out.println(content.indexOf("java",4));//返回下标,从4后开始寻找                 
lastIndexOf(String str)

查找字符串在当前字符串中最后一次出现的下标索引

String content="Java是全世界最好的语言,java真好啊";
System.out.println(content.lastIndexOf("java"));//返回下标
trim()

去掉字符串前后的空格

toUpperCase()/toLowerCase()

toUpperCase(): 将小写转换成大写

toLowerCase():将小写转换成大写

endsWith(String str)

判断字符串是否以str结尾

String fileName="hello.world";
System.out.println(fileName.endsWith(".world"));//true
replace(char oldChar,char newChar)

将旧字符串代替成新字符串

split(String str)

根据str做拆分

可变字符串

Stringbutter
  1. 可变长字符串,运行效率慢,线程安全,JDK1.0提供
  2. 和String的区别
    1. 效率比String高
    2. 比String节省内存
StringButter sb=new StringButter();
//StringBuilder sb=new StringBuilder();都是一样的
//append();追加
sb.append("java");
System.out.println(sb.toString());
//insert();添加,插入
sb.insert(0,"我在最前面");
System.out.println(sb.toString());
//replace();代替
sb.replace(0,5,"hello");//含头不含尾
System.out.println(sb.toString());
//delete();删除
sb.delete(0,5);
System.out.println(sb.toString());
Stringbuilder

可变长字符串,运行效率快,线程不安全,JDK5.0提供

BigDecimal类

  1. 位置:java.math包中
  2. 作用:精确计算浮点数
  3. 创建方式:BigDecimal bd=new BigDecimal(“1.0”);
  4. 方法:加减乘除

Date类

Data表示特定的瞬间,精确到毫秒。Date类中的大部分方法都被Calendar类中的方法所取代

  1. 方法after before
  2. 比较:compareTo()

Calendar类

  1. Calendar提供了获取或设置各种日历字段的方法
  2. 构造方法:protected Calendar(): 由于修饰符是protected,所以无法直接创建该对象
Calendar cd=Calendar.getInstance();
  1. 其他方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7eRfE7oz-1631871375216)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20210917170501374.png)]

SimpleDataFormat类

  1. SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类
  2. 进行格式化(日期->文本)、解析(文本-> 日期)
  3. 常用的时间模式字母

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgXyTXxp-1631871375219)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20210917170813547.png)]

//创建SimpleDateFormat对象y年M月d日
SimpleDateFormat sdf=new SimpleDataFormat("yyyy/MM/dd HH:mm:ss")
//创建Date
Date date=new Date();
//格式化date(把日期转换成字符串)
String str=sdf.format(date);
System.out.println(str);//2021/9/17 .....
//解析(把字符转成日期)
Date date2=sdf.parse("1990/05/01");
System.out.println(date2);

System类

System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SQhJwz4j-1631871375220)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20210917172803667.png)]

总结

  1. 内部类
    1. 在一个类的内部再定义一个完整的类
  2. Object类:
    1. 所有类的直接或间接父类,可存储任何对象
  3. 包装类
    1. 基本数据类型所对应的引用数据类型,可以使Object统一所有数据
  4. String类
    1. 字符串是常量,创建之后不可改变,字面值保存在字符串池中,可以共享
  5. BigDecimal类
    1. 可精确计算浮点数
  6. Date类
    1. 特定时间
  7. Calendar类
    1. 日历
  8. SimpleDateFormat类
    1. 格式化时间
  9. System
    1. 系统类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值