常用 工具类md(java基础)有些难度 但一定有用

常用工具类

StringBuffer、StringBuilder

带有缓冲区的字符串对象,可以理解为这个对象拥有自己的存储数据的空间,在进行赋值时是将数据复制到自己的空间中进行操作,所以在方法执行后会修改自己本身的数据

StringBuffer与String的区别

效率更快,避免了过多字符串常量垃圾对象的产生
前者用于生成字符串,后者用于表示字符串
后为常量,前是“可变化的量”

构造方法

StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer(int capacity)
构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

	// StringBuffer()
		// 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
		// StringBuffer存在缓冲区所以需要创建时指定缓冲区大小如果没有指定默认16个字符大小
		StringBuffer sb1=new StringBuffer();//创建一个空字符串  默认缓冲大小16
		System.out.println(sb1);
		// StringBuffer(int capacity)
		// 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
		StringBuffer sb2=new StringBuffer(20);//创建一个空字符串  默认缓冲大小20
		System.out.println(sb2);
		
		// StringBuffer(String str)
		// 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
		StringBuffer sb3=new StringBuffer("abc");//以指定字符串创建StringBuffer对象长度由字符串决定 
		System.out.println(sb3);

主要方法

添加&删除:

public StringBuffer append(StringBuff b)及其重载方法
public StringBuffer insert(int offset, boolean b)及其重载方法
public StringBuffer delete(int start, int end)
public StringBuffer deleteCharAt(int index)

替换&反转&截取

public StringBuffer replace(int start, int end, String str)
public StringBuffer reverse()
public String substring(int start)
public String substring(int start, int end)

StringBuilder字符串缓冲区
方法与StringBuffer完全相同
效率更快
线程不安全

String、StringBuffer、StringBuilder区别

String存储的是字符串常量不允许更改,方法会返回新的字符串。

StringBuffer、StringBuilder带有字符串缓冲区,操作字符串的过程在本身缓冲区内进行,所以大部分方法会直接修改本身。

StringBuilder线程不安全、StringBuffer线程安全

效率上比较

StringBuilder>StringBuffer>String

使用频率比较

String>StringBuffer>StringBuilder

使用场景

当仅仅声明字符串进行判断操作时(进行较少的修改)使用String

当进行频繁的字符串操作时使用StringBuffer

Math

数学类,提供数学中相应的公式以及常量。

这个类构造方法私有,所以不能创建对象,但是提供的方法都为static

常用方法

数学方法类,所有方法均为静态方法
public static int abs(int a)
public static double ceil(double a)
public static double floor(double a)
public static int max/min(int a,int b)
public static double pow(double a,double b)
public static double random()
public static int round(float a)

System.out.println(Math.PI);//PI
		System.out.println(Math.abs(-1000));//绝对值
		System.out.println(Math.ceil(3.1));//向上取整
		System.out.println(Math.floor(3.5));//向下取整
		System.out.println(Math.round(3.14));//四舍五入
		System.out.println(Math.log10(100));//以10为底指定数值的对数
		System.out.println(Math.pow(3, 5));//第一个数的第二个数的次方
		System.out.println((int)(Math.random()*10+1));//随机生成0~1之间的小数

包装类

在java中面相对象的思想总结为万物皆对象,但是基本数据类型与引用数据类型对象的概念有冲突,由此创建了包装类(针对每一种数据类分别创建了一个引用类型对应的类并提供方法),在需要使用方法时,现将基本数据类型转换为对应的包装类进行方法的调用。

包装类均位于java.lang包,使用时不需要导入,系统自动导入。
Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

使用包装类基本只做基本数据类型、包装类、String之间的相互转换,其中Character额外提供了对单个字符操作的方法

// 基本数据类、包装类、String字符串之间相互转换
		// 基本数据类型转换为包装类
		int i = 123;
		// 1使用Integer构造方法转换
		Integer integer = new Integer(i);// 使用指定数据创建integer对象
		// 2自动装箱
		// jdk1.5版本以后基本数据类型与对应包装类可以自动转换
		integer = i;
		// 3使用Integer静态方法形式将基本数据类型转换为包装类
		integer = Integer.valueOf(i);

		// 包装类转换为基本数据类型
		// 1自动拆箱
		// jdk1.5版本以后基本数据类型与对应包装类可以自动转换
		i = integer;
		// 2使用包装类方法进行转换//
		i = integer.intValue();

		// 包装类与String之间的转换
		// 1使用object继承的toString方法
		String str = integer.toString();
		// 2使用字符串拼接+ 将其自动转换为字符串(本质上还是调用toString)
		str = integer + "";
		// 使用String静态方法
		str = String.valueOf(integer);

		// String转换为包装类
		// 1使用包装类构造方法
		integer = new Integer(str);
		// 2使用包装类静态方法
		// 需要保证字符串为数字字符串
		integer = Integer.valueOf(str);

		// 任意基本类型转换为string
		// 1使用String静态方法
		str = String.valueOf(i);
		// 2使用字符串拼接的形式换行
		str = "" + i;
		 
		//string转换为基本数据类型需要使用包装类

JDK5新特性自动装箱拆箱
自动装箱:把基本类型转换为包装类类型
int基本类型可以直接赋值给包装类对象

自动拆箱:把包装类类型转换为基本类型
包装类对象可以直接与基本类型进行计算
直接计算时需要进行滤空操作

java虚拟机为了优化8种基本数据类型的包装对象都提供了缓冲池,缓冲池有大小,一个字节。

char类型包装类Character在拥有基础方法外额外拥有一些对于字符操作的方法

注意:Character提供的方法大部分为静态方法可以使用类名.方法名进行调用

	// isDigit(char ch)
		// 确定指定字符是否为数字。
		char c='a';
		System.out.println(c);
		System.out.println("是否是数字:"+Character.isDigit(c));
		
		// isLetter(char ch)
		// 确定指定字符是否为字母。
		System.out.println("是否是字母:"+Character.isLetter(c));
		
		// isLetterOrDigit(char ch)
		// 确定指定字符是否为字母或数字。
		System.out.println("是否是字母或数字:"+Character.isLetterOrDigit(c));
		
	
		// isLowerCase(char ch)
		// 确定指定字符是否为小写字母。
		System.out.println("是否是小写字母:"+Character.isLowerCase(c));
		

		// isUpperCase(char ch)
		// 确定指定字符是否为大写字母。
		System.out.println("是否是大写字母:"+Character.isUpperCase(c));
		
		// toLowerCase(char ch)
		// 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
		System.out.println("转换为小写字母:"+Character.toLowerCase(c));
		// toUpperCase(char ch)
		// 使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。
		System.out.println("转换为大写字母:"+Character.toUpperCase(c));
# BigInteger、BigDecimal

分别代表大整型与大浮点型用于保存java中基本数据类型无法存储的数据以及进行精度运算



## 构造方法

BigInteger(String val) 
          将 BigInteger 的十进制字符串表示形式转换为 BigInteger。

BigDecimal(String val) 
          将 BigDecimal 的字符串表示形式转换为 BigDecimal。


常用方法

BigInteger bi1=new BigInteger("2");
		BigInteger bi2=new BigInteger("222222222222222222222222222222222222222222222222222222");	
		//加法
		System.out.println(bi1.add(bi2));
		//减法
		System.out.println(bi1.subtract(bi2));
		//乘法
		System.out.println(bi1.multiply(bi2));
		//除法
		System.out.println(bi1.divide(bi2));
		//平方
		System.out.println(bi1.pow(2));
	BigDecimal  bd1=new BigDecimal("1561.654684641651441418418748484864864486648415657164684646466464646164654641646546464644");
		BigDecimal  bd2=new BigDecimal("2");
		//加法
		System.out.println(bd1.add(bd2));
		
		//除法
		//由于保存精度除不开会报错
		System.out.println(bd1.divide(bd2));

Date

日期类,java开发初期用于进行日期操作相关的工具类(现在基本有些方法已经废弃)

这个类基本方法已过时通常我们只使用其构造方法用来表示某一日期

	// 日期类已被取代所有方法基本过时
		// 我们只用其构造方法来表示日期
		Date date = new Date();
		System.out.println(date);
		
		//返回距离1970年1月1日0点0分0秒所过毫秒数
		System.out.println(date.getTime()/1000/60/60/24/365);
		
		//以废弃方法 不建议使用但是现在仍可以执行
		//现在能用但是在下一个版本可能就不能用
		System.out.println(date.getYear()+1900);
		System.out.println(date.getMonth()+1);
		System.out.println(date.getDate());
		System.out.println(date.getDay());

SimpleDateFormat

简单的日期格式化类,用于将指定date对象以指定格式转换为字符串
在这里插入图片描述

构造方法

public SimpleDateFormat(String pattern)

主要方法

public final String format(Date date)
public Date parse(String source)

	Date date=new Date();
		System.out.println(date);
		//2020年10月22日 03:22 PM
		//2020-10-22 03:22:54 PM
		
		//需要在创建时传入格式化模板字符串
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss a");
		
		//使用指定模板格式化date对象转换为字符串
		String format = sdf.format(date);
		System.out.println(format);
		
		//将字符串以指定模板解析为date对象
		//如果字符串与模板不匹配则会报错
		String str="2020-10-22 15:31:52 下午";
		Date parse = sdf.parse(str);
		System.out.println(parse);

Calendar

日历类是一个抽象类,不能通过new关键字创建对象,所以在使用时为我们提供了静态的方法获取对象

日历指代的是,调用方法创建的一瞬间的时刻在内的所有时间

主要方法

public static Calendar getInstance()
public int get(int field)
public void add(int field,int amount)
public final void set(int year,int month,int date)
public final Date getTime()

// 日历类
		// 不能创建对象由静态方法获取对象
		// 获取以保存了当前时刻的日历对象
		Calendar c = Calendar.getInstance();

		// 获取当前日期对象
		// 返回当前日历所指代的具体日期对象
		Date time = c.getTime();
		System.out.println(time);

		// 日历类get方法
		// 日历类使用通用方法get进行属性的获取
		// 日历中使用静态常量对属性进行存储
		// 通过静态变量获取当前日历对象保存数据

		// 获取年
		System.out.println(c.get(Calendar.YEAR));
		// 获取月0~11
		System.out.println(c.get(Calendar.MONTH) + 1);
		// 获取日
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
		// 获取时
		System.out.println(c.get(Calendar.HOUR_OF_DAY));// 24小时制
		System.out.println(c.get(Calendar.HOUR));// 12小时制
		// 分钟
		System.out.println(c.get(Calendar.MINUTE));
		// 秒
		System.out.println(c.get(Calendar.SECOND));
		// 毫秒
		System.out.println(c.get(Calendar.MILLISECOND));
		// 当前日期在本周第几天周日是第几天
		System.out.println(c.get(Calendar.DAY_OF_WEEK));
		// 已过天数
		System.out.println(c.get(Calendar.DAY_OF_YEAR));
		// 当前本月第几周
		System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		// 本周是当前年第几周
		System.out.println(c.get(Calendar.WEEK_OF_YEAR));

		// 日历类set方法
		// set是当前指向日期以指定日期替换

		// 只修改某一属性值
		// c.set(field, value);
		c.set(Calendar.YEAR, 2020);
		c.set(Calendar.DAY_OF_MONTH, 22);

		// 直接修改输入年月日
		// c.set(year, month, date);
		// 注意月份0~11 所以输入时注意-1
		c.set(2222, 1, 22);
		// c.set(year, month, date, hourOfDay, minute);
		c.set(2222, 1, 22, 22, 22);
		// c.set(year, month, date, hourOfDay, minute, second);
		c.set(2222, 1, 22, 22, 22, 22);

		c = Calendar.getInstance();

		// 日历类add方法
		// 用于为指定字段添加数据
		// c.add(field, amount);
		// 为指定字段添加偏移量

		// 三年后的明天是星期几
		c.add(Calendar.YEAR, 3);
		c.add(Calendar.DAY_OF_MONTH, 1);

		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime()));
		System.out.println(c.get(Calendar.DAY_OF_WEEK));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值