Java常用类

一,Math

Math 是lang包中的一个用于执行基本数学运算的类

注:

  1. Math 类是 final 的

  2. Math 类中的成员都是 static 的

  3. Math 类的构造函数是 private 的

字段(成员变量):

  1. E:自然对数的底数

  2. PI:圆周率

常用方法:

  1. abs(double d):获取绝对值

  2. max(double n1,double n2):获取较大值

  3. min(double n1,double n2):获取较小值

  4. pow(double n1,double n2):获取n1的n2次方

  5. random():随机[0.0,1.0)

  6. floor(double d):向下取整

  7. ceil(double d):向上取整

  8. round():四舍五入

  9. rint():五舍六入

  10. sqrt():求平方根

二,Arrays

Arrays 是util包中的一个包含操作数组的各种方法的类

注:

  1. Arrays 类中的方法都是 static 的

  2. Arrays 类的构造函数是 private 的

常用方法:

  1. toString(Object[] arr):将数组转换成字符串

  2. binarySearch(Object[] arr,Object value):使用二分搜索法,获取指定元素在数组中的位置

    前提:1. 升序 2. 元素唯一

  3. fill(Object[] arr,Object value):用指定的值替换数组中的所有元素

  4. equals(Object[] arr1,Object[] arr2):比较两个数组中的元素是否完全相同

  5. copyOf(Object[] arr,int newLength):根据指定长度创建一个新数组,将原始数组中的元素复制到新数组中,如果原始数组短,就将原始数组中的所有元素从第一个开始复制到新数组,如果新数组短,就根据新数组的长度,将原始数组中从第一个元素开始复制到新数组的最大长度

  6. copyOfRange(Object[] arr,int a,int b):将arr数组中从下标a开始截取到下标b-1

  7. sort(Object[] arr):对数组进行排序

使用 sort 方法对自定义类型的属性进行排序:

①调用sort(Object[] arr)的使用步骤:

  1. 使自定义类实现Comparable接口

  2. 重写compareTo()方法

    升序:this的属性 - 参数的属性

    降序:参数的属性 - this的属性

②调用sort(Object[] arr,Comparator c)的使用步骤:

  1. 创建Comparator接口的实现类

  2. 重写compare()方法

    升序:o1的属性 - o2的属性

    降序:o2的属性 - o1的属性

  3. 创建Comparator实现类的对象

使用匿名内部类实现:

Arrays.sort(emps,new Comparator<Emp>(){
    @Override
    public int compare(Emp o1, Emp o2) {
        return o1.salary != o2.salary ? o2.salary - o1.salary : o1.age - o2.age;
    }
});

三,Date

Date 表示特定的瞬间,精确到毫秒。 它在util包中。

构造函数:

1.Date():基于当前时间创建Date对象
2.Date(long time):根据指定的毫秒数创建Date对象

常用方法:

getTime():同System.currentTimeMillis()

Date 类具有的功能:

  1. 可以将Date对象转换成时间值(被Calendar取代)

  2. 格式化和解析日期字符串(被DateFormat取代)

四,DateFormat

DateFormat 是一个可以对日期进行格式化和解析的抽象类

它的子类是SimpleDateFormat

格式化:(日期 -> 文本),将一个Date对象转换成指定格式的字符串

解析:(文本-> 日期),将一个符合指定格式的日期字符串转换成一个Date对象

格式化:

Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
String time = sdf.format(d);
System.out.println(time);

解析:

String time = "1979-10-19";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(time);
System.out.println(d);

注:如果日期字符串的格式与指定格式不匹配会发生ParseException解析异常

五,Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法。

Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。

CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。

常用方法:

  1. get(int field):通过指定的日历字段获取该日历字段值

  2. set(int field,int value):将value设置给指定的日历字段

  3. set(int year, int month, int date, int hourOfDay, int minute,int second)

  4. getTimeInMillis():同System.currentTimeMillis()

  5. getTime():取获当前日期的Date对象

六,String

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都是此类的对象。

字符串是常量;它们的值在创建之后不能更改。因为 String 对象是不可变的,所以可以共享。

注:==在连接基本数据类型时,比较的是数据值,在连接引用数据类型时,比较的是地址值

构造函数:

  1. new String()

  2. new String(String s)

  3. new String(char[] chs)

  4. new String(char[] chs,int offset,int count)

  5. new String(byte[] bs)

  6. new String(byte[] bs,int offset,int length)

常用方法:

  1. *length()

  2. *charAt(int index)

  3. *indexOf(String s)

  4. *indexOf(String s,int fromIndex)

  5. *lastIndexOf(String s)

  6. *lastIndexOf(String s,int fromIndex)

  7. *equals(String s)

  8. equalsIgnoreCase(String s)

  9. contains(String s)

  10. concat(String s)

  11. *subString(int from)

  12. *subString(int from,int to)

  13. replace(String s1,String s2)

  14. *startsWith(String s)

  15. *endsWith(String s)

  16. toLowerCase()

  17. toUpperCase()

  18. isEmpty()

  19. trim()

  20. *getBytes()

  21. *toCharArray()

  22. compareTo(String )

  23. compareToIgnoreCase(String s)

正则表达式:用来对其他符合指定模式的字符串进行匹配、切割、替换的字符串

匹配:字符串.matches(正则),判断字符串是否符合正则,返回布尔值

// 判断是否是标准手机号
// 1开头 第二位是3456789 11位 纯数字
public static void f1(){
 String tel = "16121001431";
 String regex = "1[3-9][0-9]{9}";
 System.out.println(tel.matches(regex));
}
​
// 邮箱:前3-6位是大小写字母,6-12位数字,@,数字字母下划线2-7位,以.com结尾
public static void f2(){
 String email = "zhu840897236@sina.com";
 String regex = "[a-zA-Z]{3,6}\\d{6,12}@\\w{2,7}[.]com";
 System.out.println(email.matches(regex));
}

切割:字符串.split(正则):以正则切割字符串中的内容,获取切割后的字符串数组

// 获取:ip地址中的每一段
public static void f3(){
 String ip = "192+++++++++168+++++1+++1004++++43243+++++543";
 String regex = "[+]+";
 String[] strs = ip.split(regex);
 System.out.println(Arrays.toString(strs));
}
​
public static void f4(){
 String s = "床前明月光,疑似地上霜。举头望明月,低头思故乡。";
 String regex = "[,。]";
 String[] ss = s.split(regex);
 System.out.println(Arrays.toString(ss));
}

替换:字符串.replaceAll(正则,新值):用新值替换字符串中符合正则的字符串

public static void f5(){
 // 菜 病
 String s = "你真菜,你像有什么大病";
 System.out.println(s.replaceAll("[菜病]","*"));
}
​
// 叠词替换
// 帮别人改掉口吃的毛病
public static void f6(){
 String s = "我我我我我爱爱爱爱爱中中中中中中国";// -> 我爱中国
 System.out.println(s.replaceAll("(.)\\1+","$1"));
}

七,StringBuilder、StringBuffer

StringBuilder、StringBuffer称为字符串缓冲区,它们是可变的字符序列

StringBuilder、StringBuffer有相同的功能

StringBuilder和StringBuffer的区别:

  1. StringBuilder不保证同步,StringBuffer保证同步

  2. StringBuilder比StringBuffer要快

构造函数:

  1. new StringBuilder()

  2. new StringBuilder(String s)

常用方法:

  1. append(Object o)

  2. insert(int index,Object o)

  3. delete(int start,int end)

  4. deleteCharAt(int index)

  5. reverse()

  6. replace(int fromIndex,int toIndex,String str)

StringBuilder、StringBuffer和String的选用:

  1. 成员变量使用String

  2. 单线程中使用StringBuilder

  3. 多线程中使用StringBuffer

StringBuilder、StringBuffer与String的转换

  1. StringBuilder、StringBuffer -> String

    // 1.调用StringBuilder、StringBuffer的toString() 
    StringBuilder sb = new StringBuilder("abc");
    String s = sb.toString();
    ​
    // 2.使用字符串的拼接
    StringBuilder sb2 = new StringBuilder("abc");
    String s2 = sb2+"";
    ​
    // 3.使用String的构造函数
    StringBuilder sb3 = new StringBuilder("abc");
    String str = new String(sb3);
  2. String -> StringBuilder、StringBuffer

    使用StringBuilder、StringBuffer的构造函数

    String ss = "qqq";
    StringBuffer sbb = new StringBuffer(ss);

八,Object

Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象都实现这个类的方法。

常用方法:

  1. toString()

    注:在打印对象对象时,会输出对象在内存中的地址是因为默认调用了Object中的toString()

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    public String toString(){
        return "姓名:"+ name + ",年龄:"+age+",工资:"+salary;
    }
  2. equals()

    @Override
    public boolean equals(Object obj) {
        /* if(obj == null){
                return false;
            }*/
        if(this == obj){
            return true;
        }
        if(!(obj instanceof Emp)){
            return false;
        }
        Emp e = (Emp)obj;
        if(this.age == e.age){
            if(this.name == null){
                if(e.name == null){
                    return true;
                }else{
                    return false;
                }
            }else{
                return this.name.equals(e.name);
            }
        }else{
            return false;
        }
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Emp emp = (Emp) o;
        return age == emp.age &&
            Objects.equals(name, emp.name);
    }

九,包装类

使用引用数据类型的变量可以对属性和方法进行调用,而基本数据类型的变量无法对属性和方法进行调用,因此针对每一个基本数据类型封装了它们对应的引用数据类型,这些引用数据类型就称为包装类。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

构造函数:

Integer i1 = new Integer(3);
Integer i2 = new Integer("3");
注:如果字符串参数不是数值形式的,会发生NumberFormatException数字格式异常

静态常量:

Integer.MAX_VALUE
Integer.MIN_VALUE

静态方法:

Integer.toBinaryString(10)
Integer.toOctalString(10)
Integer.toHexString(10)
Integer.max(3,4)
Integer.min(3,4)
Integer.compare(4,5)

装箱和拆箱:

  1. 装箱:将一个基本类型的数据转换成对应的包装类

  2. 拆箱:将一个包装类的数据转换成对应的基本类型

// 装箱:基本->引用
int i = 3;
Integer j = new Integer(i);
​
// 拆箱:引用->基本
int k = j.intValue();

从Java5开始,可以实现自动装拆箱

// 自动装箱
Integer m = 55;
// 自动拆箱
int n = new Integer(9);

从Java9开始,包装类的构造函数都给变成了过期函数

包装类和String的转换

  1. 包装类 -> String

    //1.拼接空字符串
    Integer i = 3;
    String s = ""+i;
    ​
    //2.使用String类的静态方法valueOf()
    String s2 = String.valueOf(3);
    ​
    //3.使用包装类的成员方法toString()
    Integer i = 3;
    String s3 = i.toString();
    ​
    //4.使用包装类的静态方法toString()
    String s4 = Integer.toString(4);
  2. String -> 包装类

    //1.使用包装类的构造函数
    Integer i1 = new Integer("3");
    ​
    //2.使用包装类的静态方法valueOf()
    int i2 = Integer.valueOf("66");
    ​
    //3.使用包装类的静态方法parseInt()
    int i3 = Integer.parseInt("77");
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值