常用工具类

一、字符串

1. String类

1.1 方法

  1. 构造方法

    public   String()	//不含任何字符	
    public   String(char[] chs) 
    public   String(byte[] bys) 
    public   String(char[] value, int offset, int count) 
    public   String(byte[] bytes, int offset, int length)
    String s =   “abc”;
    
  2. 常用方法

    concat(String str);  //把两个字符串拼接起来,获取一个新的字符串
    length();  			//获取字符串的长度  
    equals();  			//区分大小写的比较两个字符串的内容是否相同。   
    charAt();  			//根据给定的索引,获取对应位置的字符
    indexOf(); 			//获取指定的字符 在字符串中 第一次出现的位置(索引),找不到返回-1
    lastIndexOf(); 		//获取指定的字符 在字符串中 最后一次出现的位置(索引),找不到返回-1
    substring()); 		//截取字符串,返回新的字符串
    isEmpty(); 			//判断字符串是否为空(长度为0返回true,不为0返回false)
    contains();    		//判断字符串中是否包含 给定的字符串。
    endsWith(); 		//判断字符串是否以 给定的字符串 结尾。
    startsWith(); 		//判断字符串是否以 给定的字符串 开头。
    
    replace(); 			//用新内容替代旧内容,返回新的字符串    
    toLowerCase();  	//把字母都转成其对应的小写形式。
    toCharArray() 		//把字符串转换为数组
    getBytes() 			//把字符串转换为字节数组        
    trim();            	 //移除首尾空格。
    split();   			//根据给定的内容,切割字符串,返回字符串数组
    

1.2 字符串对象特点

String str1, str2 = "abc"等直接赋值的方式创建的相同内容的对象,实际上在内存中只占一个对象的空间,两个对象共享这块空间,而以String str = new String("abc");方式new出来的对象每次都会在堆中开辟新的空间。

String str = "abc";
str += "d";
此时内存中会有"abc""d""abcd"三个对象,而str此时指向了"abcd"字符串

String类的字符串不可变,所以每次通过+=的方式拼接字符串,都会新开辟空间。

2. StringBuilder类

2.1 作用

  1. 由于String类的对象内容不可改变,所以每当进行字符串拼接的时候,总是会在内存中创建于给新的对象,造成空间和时间上的浪费。为了解决这个问题,可以使用StringBuilder类

  2. StringBuilder是一个可变的字符串类,可以将其看作是一个容器,当字符串进行拼接的时候,会直接在当前字符串的末尾加上新的字符串

2.2 方法

  1. 构造方法

    //空的字符串
    StringBuilder sb = new StringBuilder();	
    //有效的字符串
    String str = "str";
    StringBuilder sb = new StringBuilder("str");
    StringBuilder sb = new StringBuilder(str);
    
  2. 常用方法

    //拼接,拼接任意类型数据,并返回对象本身
    public StringBuilder append(data);
    //在指定位置插入数据,并返回对象本身
    public StringBuilder insert(int offset, data);
    //反转字符串,并返回对象本身
    public StringBuilder reverse()
    

2.3 与String相互转换

public StringBuilder(String str)	//String->StringBuilder
public String toString()			//StringBuilder->String

二、基本类型扩展类

1. 包装类

Java提供了基本类型与引用类型两个类型系统,使用基本类型在于效率,但很多情况下会创建对象来使用更多的功能,且同基本类型像对象一样操作,就可以使用基本类型对应的包装类

基本类型对应的包装类(位于java.lang包中)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

1.1 拆箱与装箱

基本类型与对应的包装类之间相互转换称为装箱与拆箱,基本类型转包装类称为装箱,反之为拆箱。

//装箱(构造函数)
Integer i0 = 10;	//自动装箱
Integer i1 = new Integer(10);
Integer i2 = new Integer("10");
Integer i3 = Integer.valueOf(10);
//拆箱
int a0 = i0;		//自动拆箱
int a1 = i1.intValue();

1.2 基本类型与String相互转换

· 本类型->String
  1. 直接在数字后+""
  2. 通过String类的静态方法valueOf()
int i0 = 100;

String str0 = i0 + "";	
String str1 = String.valueOf(100);
· String->基本类型

除了Character类之外,其他所有包装类parseXxx静态方法,可以将字符串转为对应的基本类型

public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。

public static short parseShort(String s):将字符串参数转换为对应的short基本类型。

public static int parseInt(String s):将字符串参数转换为对应的int基本类型。

public static long parseLong(String s):将字符串参数转换为对应的long基本类型。

public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。

public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。

public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类
String str = 100 + "";
int i = Integer.parseInt(str);

2. BigInteger类

如果运算中,数据的范围超出了long类型后,可以使用BogInteger类实现,该类的计算整数是不限制长度

int a = 1000000000000;// 编译报错,因为超出了int类型所能表示的数据范围
long l = 1000000000000000000000L;// 编译报错,因为超出了long类型所能表示的数据范围
  1. 构造方法

    //构造方法
    BigInteger b1 = new BigInteger("1000000000000000000000");
    BigInteger b2 = new BigInteger("1223435453543654354354");
    
  2. 常用方法

    //常用方法
    BigInteger res1 = b1.add(b1);
    BigInteger res1 = b1.subtract(b1);
    BigInteger res1 = b1.multiply(b1);
    BigInteger res1 = b1.divide(b1);
    

3. BigDecimal类

作用:解决浮点数运算的精度问题

double d1 = 0.01;
double d2 = 0.09;
double d3 = d1 + d2;	//0.09999999999999999

BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = new BigDecimal(0.02);
BigDecimal bd3 = bd1 + bd2;	//0.09999999999999999687749774324174723005853593349456787109375

常用方法

BigDecimal b3 = new BigDecimal("0.01");
BigDecimal b4 = new BigDecimal("0.09");

BigDecimal res1 = b1.add(b2);
BigDecimal res2 = b3.subtract(b4);
BigDecimal res3 = b5.multiply(b6);
BigDecimal res4 = b7.divide(b8);

若除法除不尽,可以使用divide()重载方法

//BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode): 
//divisor:除数对应的BigDecimal对象;
//scale:精确的位数;
//roundingMode取舍模式

BigDecimal b11 = new BigDecimal("10");
BigDecimal b12 = new BigDecimal("3");
BigDecimal res6 = b11.divide(b12,2, RoundingMode.HALF_UP);	// 3.33

4. Math类

作用:Math类就是提供了数学运算的方法,其构造方法被私有,所有方法皆为静态方法。

System.out.println("10的绝对值:"+Math.abs(10));// 10
System.out.println("-10的绝对值:"+Math.abs(-10));// 10

System.out.println("3.14向上取整:"+Math.ceil(3.14));// 4.0
System.out.println("3.54向上取整:"+Math.ceil(3.54));// 4.0
System.out.println("-3.54向上取整:"+Math.ceil(-3.54));// -3.0

System.out.println("==================================");
System.out.println("3.14向下取整:"+Math.floor(3.14));// 3.0
System.out.println("3.54向下取整:"+Math.floor(3.54));// 3.0
System.out.println("-3.54向下取整:"+Math.floor(-3.54));// -4.0

System.out.println("==================================");
System.out.println("2的3次幂:"+Math.pow(2,3));// 8.0

System.out.println("==================================");
System.out.println("3.14四舍五入取整:"+Math.round(3.14));// 3
System.out.println("3.54四舍五入取整:"+Math.round(3.54));// 4
System.out.println("-3.54四舍五入取整:"+Math.round(-3.54));// -4


System.out.println("==================================");
System.out.println("获取10和20的最大值:"+Math.max(10,20));// 20
System.out.println("获取10和20的最小值:"+Math.min(10,20));// 10

5. Arrays类

作用:扩展数组的功能,由于是功能类,所以其内部方法皆为静态方法

int[] arr = {12,334,53,543,43,32};
Arrays.toString(arr);
Arrays.sort(arr);

常用方法:

copyOf();
equals();
hashCode();
sort();
toString();

日期类

1. Date类

作用:获取当前日期及对日期进行操作

//获取当前时间
Date date1 = new Date();		//Sun Sep 05 22:33:53 CST 2021
//标准时间偏移指定时间ms
Date date2 = new Date(1000);	//Thu Jan 01 08:00:01 CST 1970
//获取距离标准时间间隔ms
date2.gettime();				//1000
//设置距离标准时间间隔ms
date2.setTime(1000);  
//判断当前日期是否在指定日期前/后
date1.before(date2);			//false
date1.after(date2);				//true

2. DateFormat

作用:将DateString类相互转换,DateFormat类是一个抽象类,因此需要常用的子类java.text.SimpleDateFormat

  1. 常见的日期格式

    常见的日期格式:  yyyy年MM月dd日 HH时mm分ss秒
    常见的日期格式:  yyyy-MM-dd HH:mm:ss
    常见的日期格式:  yyyy-MM-dd
    常见的日期格式:  HH:mm:ss
    
  2. Date->String

    SimpalDateFormat sdf = new SimpalDateFormat("yyyy-MM-dd HH:mm:ss");	//构造方法->设置时间格式
    Date date = new Date();
    String str = sdf1.format(date);		//进行格式转换
    
  3. String->Date

    String str = "2020年9月9日 12时0点0分";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    Date date = sdf.parse(str);
    

3. Calendar类

作用:Calendar类相当对Date类的补充,一些与日期有关的方法在jdk1.1之后都已到了Calendar中。Calendar类是一个抽象类,通常使用其子类java.util.GregorianCalendar类

Calendar.YEAR :Calendar.MONTH :月
Calendar.DAY_OF_MONTH:月中的日期
Calendar.HOUR:小时
Calendar.MINUTE:分钟
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:星期

常用方法

Calendar cal = Calendar.getInstance();	//获取当前日历
//获取时间
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
//设置时间
cal.set(Calendar.YEAR, 1);
//判断时间
cal.before(cal2);
cal.after(cal2));

其他类

1. Object类

Object类时所有类的父类,Java中所有的类都直接或间接继承Object类

1.1 常用方法

boolean equals(Object obj);		//判断是否相等
int hashCode() 					//返回当前对象哈希值
void wait();					//当前线程等待被唤醒
void wait(long timeout) 		//当前线程等待指定时间
void notify();					//唤醒当前对象监视的线程
void notifyAll();				//唤醒所有线程
String toString() 				//返回当前对象字符串表示

1.2 重写toString()和equals()

  1. public String toString():返回对象的类型名+@+内存地址,如test.Student@1b6d3586,println中直接打印类名也会显示。equal()默认判断的是地址值,在开发中通常会重写它们来得到期望的对象属性。

    class Person {
        private String name;
        private int age;
        @Override	//重写toString
        public String toString() {
            return name + "." + age;
        }
        @Override	//重写equals	
        public boolean equals(Object obj) {
            if(this.age == obj.getAge() && this.name.equal(obj.getName())) {
                return ture;
            }
            return false;
        }
    }
    
  2. 为了防止当前对象为null时,仍然调用equal()方法进行比较,可以调用Object类的工具类Objects类的equal()方法进行比较

    String str1 = new String("abc");
    String str2 = "def";
    String str3 = null;
    System.out.println(str3.equals(str1));	//空指针,报错
    System.out.println(Objects.equals(str3, str1));	//解决
    

1.3 Native方法

Native修饰的方法称为本地方法,作用是当Java调用非Java代码的接口。本地方法的实现是由C++或其他非Java语言实现的

public class Object {
    //本地方法
    private static native void registerNatives();
    //静态代码块
    static {
    	registerNatives();
    }
}

2. System类

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作

public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 拷贝数组中的元素到另一个数组
      参数1src: 源数组
      参数2srcPos:源数组要拷贝的元素的起始索引(从哪个索引位置开始拷贝)
      参数3dest: 目标数组
      参数4destPos:目标数组接收拷贝元素的起始索引(从哪个索引位置开始接收)
      参数5length:需要拷贝多少个元素(拷贝多少个)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值