Java经典常用类总结(必须掌握!)

java的学习过程中,我们经常会接触到不同的类,有些类我们经常在使用,我们称之为常用类,我就我自己在java常用类的学习进行一下分享。

1.Object类:public class Object

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法,简单来说,Object类是所有类的父类,所有类都默认继承了Objet类
这里我主要讲几个Object常用的方法
1.hashCode()方法:
格式:public int hashCode()
概述:返回该对象的哈希码值。
(这里可能有部分同学不知道哈希码值是什么?大家只需要先知道hashCode方法通过将该对象的内部地址转换成一个整数来实现)
代码展示:

public class ObjectTest{
    
    
public static void main(String[] args){
    
    
  //创建Object类对象
  ObjectTest o1 = new ObjectTest();
  ObjectTest o2 = new ObjectTest();
  ObjectTest o3 = o2;
  System.out.println(o1.hashCode());
  System.out.println(o2.hashCode());
  System.out.println(o3.hashCode());
}
}

结果如下:
在这里插入图片描述
大家可以看出:此时这几行整数就是通过地址转化而来
2.getClass()方法:
格式:public final Class<?> getClass()
概述:
返回值:
表示此对象运行时类的 Class 对象。

public class ObjectTest2 {
    
    
    public static void main(String[] args) {
    
    
        ObjectTest2 o1 = new ObjectTest2();
        Class c = o1.getClass();
        System.out.println(c.getName());
    }
}

3.toString()方法:
格式:public String toString()
概述:返回该对象的字符串表示。
通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

//我们提前定义好一个学生类
public class Student {
    
    
    private  String name;
    private int age;
    //构造函数
    public Student() {
    
    
    }

    public Student(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }
    public String getName() {
    
    
    return name;
}

    public void setName(String name) {
    
    
    this.name = name;
}

    public int getAge() {
    
    
    return age;
}

    public void setAge(int age) {
    
    
    this.age = age;
}

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

//然后定义我们的测试类
public class ObjectTest {
    
    
    public static void main(String[] args) {
    
    
     Student student = new Student();
     System.out.println(student.toString());
}
}

结果如下:
在这里插入图片描述
其实我们重写toString方法就可以帮我们少写一个显示的方法!
4.equals()方法:
格式:public boolean equals(Object obj)
概述:比较两个对象是否相等

//equals在我之前的一篇文章中,我是分享过的,今天我主要分享一下关于equals的面试题
//面试题:==与equals的区别?
//1.==:
//     基本数据类型:等号比较的是值是否相同
//     引用数据类型:等号比较的是地址值是否相同
//
//2.equals
//     只能引用数据类型:一般情况下,和==作用相同
// 但有时候,我们会根据需要重写toString方法,比较属性值
public class ObjectTest {
    
    
    public static void main(String[] args) {
    
    
        Student student = new Student("tom",18);
        Student student2 = new Student("tom",18);
        boolean flag= student.equals(student2);
        System.out.println(flag);//重写equals变成true
        System.out.println("__________________________________");
        Student student3 = student;
        boolean flag2 = student3.equals(student2);
        System.out.println(flag2);//重写equals变成true
    }
}

结果如下:因为我在学生类中重写了方法

在这里插入图片描述

2.String类和StringBuffer类和Stringbuilder类

首先,我们来说String类。
String类,我之前也用初步的介绍过,这次我主要分享一下类中常用的方法:
概述:
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。
代码测试:

String z = "HelloWorld!";
        //获取字符串长度
        System.out.println(z.length());
        //获取指定索引处的字符
        System.out.println(z.charAt(4));
        //返回指定位置的字符在此字符串出现的第一次索引
        System.out.println(z.indexOf('o'));
        //返回指定位置的字符在当前字符串出现的第一次索引
        System.out.println(z.indexOf("oWo"));
        //返回指定字符在指定位置后出现的第一次索引
        System.out.println(z.indexOf("o",2));
        //返回指定字符串在指定位置后出现的第一次索引
        System.out.println(z.indexOf("or",2));
        //从指定位置截取当前位置字符串
        System.out.println(z.substring(5));
        //从指定位置开始截取到指定位置结束当前位置字符串
        System.out.println(z.substring(2,5));

结果如下:

在这里插入图片描述
StringBuffer类:
概述:
线程安全的可变字符序列。
之前String是不可变的序列,那么StringBuffer即是可变的序列:

public class StringBufferTest{
    
    
public static void main(String args[]){
    
    
StringBuffer buf = new StringBuffer();
buf.append("zjd");
for(int i=0;i<100;i++){
    
    
buf.append(i);
}
System.out.println(buf);
}
}

由上述代码:我们可以看见把StringBuffer的实例化对象放进for循环,可实现字符串的改变
代码展示:

扫描二维码关注公众号,回复: 12121220 查看本文章
//接下来我们看一下StringBuffer常用的方法
 StringBuffer stringBuffer2 = new StringBuffer();
        stringBuffer2.append(666);//末尾添加
        System.out.println(stringBuffer2);
        stringBuffer2.append(3.14);
        System.out.println(stringBuffer2);
        stringBuffer2.insert(4,"abc");//指定索引位置,添加
        System.out.println(stringBuffer2);
        stringBuffer2.deleteCharAt(4);//删除指定索引位置的元素
        System.out.println(stringBuffer2);
        stringBuffer2.delete(1,3);//删除指定一段
        System.out.println(stringBuffer2);
        stringBuffer2.replace(1,3,"zjd");//指定索引区间替换
        System.out.println(stringBuffer2);
        stringBuffer2.reverse();
        System.out.println(stringBuffer2);
        
        //截取方法(复制取出,本身没变)
        System.out.println(stringBuffer2.substring(1,3));
        System.out.println(stringBuffer2.substring(2));

结果如下:
在这里插入图片描述
StringBuilder类和StringBuffer类用法差不多,这里我不做说明!

3.面试题讲解:

1.String和StringBuff和StringBuilder区别?
String:不可变序列
StringBuffer:可变序列,多线程,安全
StringBuilder:可变序列,单线程,不安全
2.StringBuffer和数组的区别?
都是容器,可以用来存数据但是数组只能存一种数据,但是StringBuffer可以存很多种类型数据,不过最终结果都是字符串数据

4.Arrays类

概述:
该类包含用于操作数组的各种方法(例如排序和搜索)。
常用方法:
遍历:public static String toString(int[] a)
排序:public static void sort(int[] a)
查找:public static int binarySearch(int[] a,int key) 二分查找,查找前必须排序

//我们来代码测试一下
public class ArrayDemo4 {
    
    
    public static void main(String[] args) {
    
    
        int arr[] = {
    
    10,8,15,21,4,7};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        System.out.println("排序后:");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println("查找:");
        int index= Arrays.binarySearch(arr,21);
        System.out.println(index);
    }
}

结果如下:
在这里插入图片描述

5.包装类

概述:
基本类型的包装类:将我们的基本类型包装起来,可以添加相关方法,简化操作
格式:
byte----Byte
short—Short
int-----Integer
long----Long
float—Float
double–Double
char----Character
boolean–Boolean
代码展示:

//进制转化
System.out.println(Integer.toBinaryString(66));//二进制
System.out.println(Integer.toOctalString(66));//八进制
System.out.println(Integer.toHexString(66));//十六进制
//判断是否在int范围内
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

结果如下:
在这里插入图片描述
构造方法:

/**
 * Integer构造方法
 * public Integer(int value):构造一个新分配的 Integer 对象,它表示指定的 int 值。
 * public Integer(String s)
 *         throws NumberFormatException:构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
 */
public class integerDemo2 {
    
    
    public static void main(String[] args) {
    
    
        //public Integer(int value)
        Integer integer = new Integer(88);
        System.out.println("toString:"+integer.toString());

        //public Integer(String s)
        Integer integer1 = new Integer("88");
        System.out.println("toString:"+integer1.toString());
        Integer integer2 = new Integer("abc88");
        System.out.println("toString:"+integer2.toString());//注意:字符串中只能含有数字,不能有其他字符
    }
}

结果如下:
在这里插入图片描述
分析:
当我们输出“abc88"出现了报错,所以我们得出结论:
字符串中只能含有数字,不能有其他字符

6.关于int 和String的转化

 //1.int------String
int num=88;
String s=""+88;
System.out.println("s:"+s);

//2.
String s1 = String.valueOf(num);
System.out.println("s1:"+s1);

//3.
Integer integer = new Integer(num);
String s2 = integer.toString();
System.out.println("s2:"+s2);

//4.
String s3 = Integer.toString(num);
System.out.println("s3:"+s3);

System.out.println("__________________________________");

//1.String-----int
Integer i = new Integer(s);
int a = i.intValue();
System.out.println("a:"+a);

//2.
int b = Integer.parseInt(s);
System.out.println("b:"+b);

结果代码:
在这里插入图片描述

7.自动装箱和拆箱

/**
 * 针对包装类的一种新特性:
 *         自动装箱:将基本类型转换成包装类
 *         自动拆箱:将包装类转化成基本类型
 *
 *    注意事项:在使用自动拆箱的过程中,建议先判断是否为null,然后在使用
 */
public class integerDemo4 {
    
    
    public static void main(String[] args) {
    
    
        Integer integer = new Integer(88);
        Integer integer1 = 100;//自动装箱
        integer1 +=21;//自动拆箱,然后再一次自动装箱
        System.out.println("i1:"+integer1);
    }
}

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zjdzka/article/details/109783138