Java 常见工具包

常见包

  • java.lang 比如:String\Object\包装数据类型等等,这些包默认导入了,所以不用手动导入
  • java.util 集合相关
  • java.awt 图形化界面编程
  • java.sql 数据库相关
  • java.io io流相关
  • java.net 网络相关

字节码对象

1627365730511

Object

含义

是一切类【除了它本身】的根类;一切类【除了它本身】都是直接或者间接继承了Object

常见方法

toString //打印对象,本质是打印对象的toString方法的结果

equals //默认比较两个对象内存地址是否一样

finalize //当对象被回收的时候调用该方法

hashcode //通过哈希算法计算出来的一个十进制

getClass //获取对应的字节码对象

wait //等待

notify //唤醒

notifyAll //唤醒所有

案例

public class User {
	
	private String name;
	public User(String name){
		this.name = name;
	}
 
	@Override
	public boolean equals(Object obj) {
		User other = (User)obj;
		return name.equals(other.name);
	}

	@Override
	public String toString() {
		return "User [name=" + name + "]";
	}
}
public class Test {
	
	//常见的包
	   //java.lang [比如:String,...] 默认导入这些包
	   //java.util 集合相关的类
	   //java.awt  图形界面编程
	   //java.net  网络编程相关
	   //java.io   io
	   //java.sql  操作数据的类型
	
	
	//Object
	   //含义: 是一切类【除了它本身】的根类;一切类【除了它本身】都是直接或者间接继承了Object
	   //常用方法
	       //equals     两个对象的比较,默认比较的是地址[一般会重写该方法]
	       //finalize   当对象被回收的时候会调用该方法
	       //hashCode    是通过哈希算法计算出来的【在后面课程HashMap会使用到】
	       //toString   打印对象,本质打印对象toString方法结果【根据需求重写】
	       //getClass   获取字节码对象
	                        //User.class --(一次就好)--> JVM
	                                                  //会生成一个对象来表示该字节码信息
	
	       //wait       线程等待[会释放锁]
	       //notify     唤醒
	       //notifyAll  唤醒所有等待的线程
	
	
	
	public static void main(String[] args) {
		
		Test one = new Test();
		
		Test two = new Test();
		
		boolean sign = one.equals(two);
		
		System.out.println(sign);
		
		User user = new User("zs");
		User userOther = new User("zs");
		
		System.out.println(user.equals(userOther));
		
		System.out.println(user.hashCode());
		
		System.out.println(user);
		System.out.println(user.toString());
		
		
		Class clazz = user.getClass(); //clazz代表User.class对应字节码对象
		                               //clazz包含了User类的所有信息
		
		System.out.println(clazz.getPackage().getName());
		
		
		System.out.println(user.getClass());
		System.out.println(user.getClass()==userOther.getClass());	 
	}
}

Math

含义

是一个工具类型,提供数学中常用的方法

案例

public class MathTest {
	
	//Math【工具类】
	   //含义:包含了大量数学的常用方法
	   //方法:
	
	public static void main(String[] args) {
		
		System.out.println(Math.PI);
		
		//获取绝对值
		System.out.println(Math.abs(-1));
		
		System.out.println(Math.max(-100, 10));
		
		System.out.println(Math.min(-100, 10));

		  
		System.out.println(Math.sqrt(9));
		
		
		System.out.println(Math.random());  //[0.0,1.0)
		
		//5-8
		System.out.println((int)(Math.random()*4+5));
	}
}

UUID

含义

生成更加随机的随机数[长度36]

使用场景

  • 数据库的主键 [一般会将-替换成空白串]
  • 文件打散

案例

public class UUIDTest {
	
	//UUID
	    //含义:生成更加随机的随机数[长度36]
	    //使用场景 
	       //数据库的主键 [一般会将-替换成空白串]  
	       //文件打散
	
	public static void main(String[] args) {
		UUID myUUID = UUID.randomUUID();
		
		String result = myUUID.toString();
		result = result.replace("-","");
		
		System.out.println(result);
		System.out.println(result.length());
	}
}

日期

相关类

  • Date 代表时间对象
  • Calendar 用于操作Date对象的类
  • SimpleDateFormat 时间格式化类

常见格式化

1627371742234

案例一

public class DateTest {
	
	//时间操作类
	     //Date
	     //Calendar
	
	
	//Date
	   //含义:代表时间
	
	//Calendar
	   //含义:里面封装了大量操作时间的方法
	
	public static void main(String[] args) {
		
		//代表当前时间
		Date date = new Date();
		System.out.println(date);
		
		//过时:不建议使用,因为存在隐患
		//date.getYear();
		//date.getMonth();
		
		
		Calendar calendar = Calendar.getInstance();
		
		//获取时间对象
		date = calendar.getTime();
		System.out.println(date);
		
		//设置calendar的时间
		//calendar.setTime(date);
		
		
		System.out.println(calendar.get(Calendar.YEAR));
		System.out.println(calendar.get(Calendar.MONTH));
		System.out.println(calendar.get(Calendar.DATE)); 
		System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); 
		
		System.out.println(Calendar.TUESDAY);
		System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); 
		
		System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); 
		
		System.out.println(calendar.get(Calendar.HOUR));         //12
		System.out.println(calendar.get(Calendar.HOUR_OF_DAY));  //24
		
		
		System.out.println(calendar.get(Calendar.MINUTE));   
		System.out.println(calendar.get(Calendar.SECOND));  
		
		//设置
		//calendar.set(Calendar.MONTH,8);
		//System.out.println(calendar.getTime());
		
		//添加\减少
		calendar.add(Calendar.DATE,-2);
		calendar.add(Calendar.DATE,4);
		System.out.println(calendar.getTime());
		
		//比较
		
		Calendar currentDate = Calendar.getInstance();
		//晚于
		System.out.println(currentDate.after(calendar));
		//早于
		System.out.println(currentDate.before(calendar));
		
		
		//compareTo 0:相等 -1早于 1晚于
		System.out.println(currentDate.compareTo(calendar));
		System.out.println(calendar.compareTo(currentDate));
		System.out.println(Calendar.getInstance().compareTo(Calendar.getInstance()));
		
		 
		//获取毫秒
		System.out.println(currentDate.getTimeInMillis());
	}
	
	@Deprecated
	public static void say(){
		System.out.println("hello world");
	}
}

案例二

public class FormatTest {
	
	//Parse 解析
	public static void main(String[] args) throws ParseException {
		Date date = new Date();
		System.out.println(date);
		
		//DateFormat
		   //SimpleDateFormat
		
		//SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
		//simpleDateFormat.applyPattern("yyyy年MM月dd日 HH:mm:ss");
		
		
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		//指定格式  yyyy-MM-dd HH:mm:ss
		    //要么构造器传递
		    //要么手动指定
		
		
		String result = simpleDateFormat.format(date);
		System.out.println(result);
		
		//2021年07月27日 15:05:08 ---》Date对象
		date = simpleDateFormat.parse("2021年07月27日 15:05:08");
		System.out.println(date);
		
		//TODO 自行模拟解析异常
	}
}

Arrays

含义

是操作数据的工具类

案例

public class ArraysTest {
	
	public static void main(String[] args) {
		
		int [] num = {11,2,7,4,5};
		
		//打印数组
		    //下标
		    //forEach
		
		System.out.println(Arrays.toString(num));
		
		Arrays.sort(num);
		System.out.println(Arrays.toString(num));
		
		int result = Arrays.binarySearch(num, 7);
		System.out.println(result);
		
		//copyOf如果长度一样则返回一个元素个数一样的新数组
		//copyOf如果长度小于目标长度,则返回前几个元素
		//copyOf如果长度大于目标长度,多余的位置补充默认值
		
		int [] newNum = Arrays.copyOf(num, 5);
		System.out.println(Arrays.toString(newNum));
		
		//TODO 以后学习
		//Arrays.asList(a)
	}
}

BigDecimal

含义

用来表示任意精度的小数,常用在金额、高精度仪器

使用原因

因为float\double类型的数据在做操作可能会造成精度丢失

构造器注意点

  • new BigDecimal(double value)

不建议使用,查看注意点

  • new BigDecimal(String value)

    建议使用

注意点

1627373878851

案例

public class BigDecimalTest {
	
	//BigDecimal
	   //含义:精度可靠的小数点
	
	public static void main(String[] args) {
		
		//抛出问题:因为float\double操作都有可能会有精度丢失
		float price = 0.123456789f;
		System.out.println(price);
		 
		BigDecimal bigDecimal = new BigDecimal(price+"");
		BigDecimal twoDecimal = new BigDecimal("0.000001");
		
		//相加
		BigDecimal result = bigDecimal.add(twoDecimal);
		System.out.println(result);
		
		//相乘
		result = bigDecimal.multiply(twoDecimal);
		System.out.println(result);
		
		//减法
		result = bigDecimal.subtract(twoDecimal);
		System.out.println(result);
		
		//除法
		result = bigDecimal.divide(new BigDecimal("2"));
		System.out.println(result);
		
		//四舍五入
		result = result.setScale(3, RoundingMode.HALF_UP);
		System.out.println(result.toString());
		
		//TODO 自行尝试
		//result.compareTo(val)
	}
}

BigInteger

含义

可以表示任意大小的整数

案例

public class BigIntegerTest {		//BigInteger	    //无限大的整数	  	public static void main(String[] args) {		BigInteger bigInteger = new BigInteger("99999999999999999999999");				BigInteger result = bigInteger.multiply(new BigInteger("12"));		System.out.println(result);						result = bigInteger.add(new BigInteger("100"));		System.out.println(result);				//TODO 其他自行尝试	}}

String

含义

不可变的字符串类

本质

private final char value[];

创建方式

//通过字面赋值【会使用到常量池】new String("字符串")new String(byte [] value);new String(byte [] value,int offset,int length);	 new String(char [] value);new String(char [] value,int offset,int length);

常用方法

equals  equalsIgnoreCasecharAtsplittoUpperCasetoLowerCase      replace          //替换subString        //截取子串compareTo        //比较getBytes         //字符串转成字节数组

案例

public class StringTest {		//String	   //含义:不可变的字符串类	   //本质:private final char value[];		   //创建的方式	      //通过字面赋值【会使用到常量池】	      //new String("字符串")	      //new String(byte [] value);	      //new String(byte [] value,int offset,int length);		 	      //new String(char [] value);		  //new String(char [] value,int offset,int length);		   //常用方法	      //equals  	      //equalsIgnoreCase	      //charAt	      //split	      //toUpperCase	      //toLowerCase      	      //replace          //替换	      //subString        //截取子串	      //compareTo        //比较	      //getBytes         //字符串转成字节数组			public static void main(String[] args) throws InterruptedException {		 		//证明String是不可变的字符串		String name = "java";		System.out.println(name.hashCode());		name = "html";		System.out.println(name.hashCode());				System.out.println("-------------字面赋值-----------");				String userName="zs";   //会检查常量池中有没有"zs",如果有指向,如果没有则创建"zs"对象放到常量池		                        //0 1		String peopleName ="zs";		System.out.println(userName==peopleName);//true						System.out.println("-------------new创建-----------");				String hobby = new String("java");  //1 2个对象		String otherHobby = new String("java");						System.out.println(hobby == otherHobby);								System.out.println("---------------常用方法--------------");				//字符比较的时候,使用equals,比较的是内容		System.out.println(hobby.equals(otherHobby)); 		System.out.println(hobby.equalsIgnoreCase("JAVA")); 				//转大写		System.out.println(hobby.toUpperCase());				System.out.println(hobby.toLowerCase());				String content = "hello world";		System.out.println(content.indexOf("l"));//第一次出现的位置		System.out.println(content.lastIndexOf("l"));//第后一次出现的位置				//切割		System.out.println(Arrays.toString(content.split(" ")));						System.out.println(content.charAt(4));				System.out.println(content.replace("world", "java"));						//自行总结		System.out.println("cc".compareTo("cc"));		System.out.println("abc".compareTo("aec")); 				System.out.println("ad".compareTo("aa"));    		 				//hello world				//截取		System.out.println(content.substring(content.indexOf(" ")+1));		System.out.println(content.substring(0, content.indexOf(" ")));				//字符串转字节数组		byte [] bytes = "abc".getBytes();//[97,98,99]		System.out.println(Arrays.toString(bytes));				//String 构造器		char [] charData = {'a','b'};		String data = new String(charData);				data = new String(bytes);		System.out.println(data);		 		data = new String(bytes, 1, 2);		System.out.println(data);	}}

StringBuilder

含义

内容可变的字符串

构造器

  • new StringBuilder();
  • new StringBuilder(String initValue);

常用方法

indexOflastIndexOfcharAtsubstringdeleteCharAt 删除指定位置的字符append 追加insertlength

案例

public class StringBuilderTest {	  	//含义:	    //内容可变的字符串		public static void main(String[] args) {				//StringBuilder				//构造器		    //new StringBuilder();		    //new StringBuilder(String initValue);				//方法		    //indexOf		    //lastIndexOf		    //charAt		    //substring		    //deleteCharAt 删除指定位置的字符		    //append 追加		    //insert		    //length		    				StringBuilder SB = new StringBuilder();				SB = new StringBuilder("hello");		//System.out.println(SB.hashCode());				SB.append("world");		//System.out.println(SB.hashCode());				System.out.println(SB);		//删除指定位置的字符		//SB.deleteCharAt(0);		//System.out.println(SB);				//append		SB.append(" java").append(" python").append(" html");		System.out.println(SB);				SB.insert(SB.lastIndexOf("l")+1, " oracle");		System.out.println(SB);				System.out.println(SB.length());	}}

StringBuffer

含义

内容可变的字符串类

方法

和StringBuilder几乎一样

区别

  • StringBuffer的方法几乎都有synchronized,而StringBuilder没有
  • synchronized代表同步
  • StringBuilder效率比StringBuffer高

案例

public class StringBufferTest {		//含义:	   //内容可变的字符串类	//方法	   //和StringBuilder几乎一样		//区别	   //StringBuffer的方法几乎都有synchronized,而StringBuilder没有	                            //同步		public static void main(String[] args) {				StringBuffer SB = new StringBuffer("java");		SB.append(" python").append(" html");				String result = SB.toString();		System.out.println(result);	    }}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值