Java常用API,常用类(Object,String,System,Math,Date,Calendar,包装类)

常用API

1.什么是API

API(Application Programming Interface): 应用程序编程接口

2.Java中的API

​指的是JDK中提供的各种功能Java类,这些类将底层的实现封装了起来,我们不用管内部实现,只需要掌握如何使用.

3.常见的常用类

Object

String

StringBuffer

StringBuilder

System Date日期类

DateFormat日期格式化类

Calendar日历类 Math类

Random随机类

Object类

Object类 是所有类的父类,所有类都直接或间接的继承了该类

常被重写方法: equals() 用于比较对象 toString() 用于输出对象

常用方法: 线程常用方法 wait() 线程沉睡 notify和notifyAll() 唤醒沉睡的线程

String类

String类代表一个字符串,Java中所有的字符串都被时限为此类的对象,String类在lang包下,lang包属于默认包不需要导入

String字符串是固定长度的字符串,本身是一个字符串对象空间,但在创建后不能被更改,但可以被共享

在这里插入图片描述

public class Demo {     

	public static void main(String[] args) {
		//字符串比较相等,使用的equals来自于Object类	
		String str = "张三";
		String str1 = new String("张三");
		String s1 = "张";
		String s2 = "三";
		String str2 = s1+s2;
		String str3 = "张"+"三";  //在放入内存之前已经组合:张三
		System.out.println("str与str1的地址是否相等:"+(str==str1));
		System.out.println("str的地址是否与str2相等:"+(str==str2));
		System.out.println("str与str2的值是否相等:"+str.equals(str2));
		System.out.println("str与str3的地址是否相能:"+(str==str3));
	}
}

在这里插入图片描述

String常用方法
常用方法描述
charAt(index)返回指定下标的字符
indexOf(char|str)返回指定字符或字符串的所在下标位置
indexOf(start,str)从指定位置开始查找,并返回所在下标
lastIndexOf(str)从末尾开始查找,返回第一个字符下标位置
subString(start)从开始位置截取字符串
subString(start,end)从开始位置截取到指定位置结束,不包含结束下标
toUppercase()转换大写
toLowercase转换小写
getBytes转换为字节数组
toCharArry转换为字符数组
replace替换字符
split通过指定字符,将字符串拆分字符为字符串数组
join将字符数组元素通过指定字符拼接为字符串
public class StringMethod {

	public static void main(String[] args) {
		String str = "saldjfhkjasdhfkjaASKHdflhasJDfdsa";
		System.out.println("字符串的长度为:"+str.length());
		System.out.println("下标为6的字符为:"+str.charAt(6));
		System.out.println("查询h出现的第一个位置为:"+str.indexOf("h"));
		System.out.println("查询h出现的第二个位置为:"+str.indexOf("h",6+1));
		System.out.println("查询h出现在最后一个位置:"+str.lastIndexOf("h"));
		String str1 = str.substring(6);
		System.out.println("从下标6截取到末尾的字符串为:"+str1);
		String str2 = str.substring(6, 10);
		System.out.println("截取下标6到9的字符:"+str2);
		System.out.println("转换为大写字母为:"+str.toUpperCase());
		System.out.println("转换为小写字母为:"+str.toLowerCase());
		byte[] bs = str.getBytes();
		System.out.println("转换为字节数组:"+Arrays.toString(bs));
		char[] cs = str.toCharArray();
		System.out.println("转换为字符数组为:"+Arrays.toString(cs));
		//通过字符拆分为字符串数据,但元素中不包含h
		String[] strs = str.split("h");
		System.out.println("通过h拆分的字符串数组为:"+Arrays.toString(strs));
		System.out.println("通过逗号拼接数组中的字符串:"+String.join("h", strs));
		String num = 5+"";   //简单的将数字转换为字符串
		//查询出所有的h所在下标
		String lower = str.toLowerCase();
		int index = lower.indexOf("h"); //找到第一个h所在下标
		System.out.print("h出现的下标为值为:");
		while(index!=-1) {
			System.out.print("  "+index);
			index = lower.indexOf("h", index+1);
		}
	}
}

运行结果:

在这里插入图片描述

StringBuffer,StringBuilder类

​StringBuffer是一个可变长度字符串类,我们可以把它看做是一个容器,这里的可变指的是StringBuffer中的内容可变,且线程安全

​构造方法: StringBuffer() 默认初始容器 大小为16个字符

​StringBUffer(长度) 初始是设定空间大小

​StringBuffer(内容) 初始化字符串,内容个数就是长度

​方法: append(内容) 追加内容到末尾

​insert(index,内容) 在指定位置插入内容

​delete(start[,end]) 一个参数为删除指定位置字符,两参数表示开始到结束

​reverse() 反转字符

​toString() 将字符串缓存空间变为固定字符串

public class StringBufferDemo {

	public static void main(String[] args) {
		//可变长度字符串
//		StringBuffer sb = new StringBuffer("flasdjf");
		StringBuffer sb = new StringBuffer();
		//向缓冲区添加内容
		sb.append("惊天大消息,包了一个饺子");
		sb.append("这个饺子有点大,一锅炖不下");
		System.out.println(sb.toString());
		sb.insert(6, "今天正在传输,");
		System.out.println(sb.toString());
		sb.reverse();
		System.out.println(sb.toString());
		sb.delete(0, 5);
		System.out.println(sb.toString());
	}
}

在这里插入图片描述

String,StringBuffer,StringBuilder异同

​相同:三者都是用于字符串的操作

​不同: String是固定长度字符串,每次操作字符串都会舍去原来的空间,新建一个空间,在赋值取值较快,但操作效率较低

​StringBuffer是一个字符串缓冲区,所有的字符串操作都在同一个空间中,所以效率略高,且线程安全

​StringBuilder与StringBuffer相同,线程不安全; 单线程代码中使用更优

​效率: String < StringBuffer < StringBuilder

System系统类

​系统类中用于控制系统信息的读取,输出,获取

​静态属性: err错误打印流 out普通输出流 in标准输入流

​方法: exit(0) 结束系统 currentTimeMillis获取时间毫秒数(long)

public class SystemDemo {

	public static void main(String[] args) {
		//使用系统标准输入流,读取控制台数据
		Scanner in = new Scanner(System.in);
		//获取时间毫秒数
		long start = System.currentTimeMillis();
		System.out.println("请输入学生名称:");
		String name = in.next();
		//使用错误输出流输出红色内容
		System.err.println("输入的学生名称为:"+name);
		long end = System.currentTimeMillis();
		System.out.println("系统共消耗时间为:"+(end-start));
		in.close();
	}
}

在这里插入图片描述

Math数学类与Random伪随机数类

​math中设计了大量操作数学的静态方法,常用四舍五入 向上取整 向下取整 随机数

public class MathDemo {

	public static void main(String[] args) {
		// 四舍五入   向上取整   向下取整   
		System.out.println("3.14四舍五入:"+Math.round(3.14));
		System.out.println("向上取整:"+Math.ceil(3.14));
		System.out.println("向下取整:"+Math.floor(3.14));
		System.out.println(Math.PI);
		System.out.println("随机数:"+Math.random());
		
		//相对应的有一个随机数类
		//nextInt()  获取到整数
		//nextInt(int bound)  获取到0到上边界的整数,不包含上边界
		//如果获取小数,更多使用Math.random()
		Random rand = new Random();
		System.out.println("获取随机值:"+rand.nextInt());
	}
}

在这里插入图片描述

Date日期类

日期类,用于获取和设置日期,Java常用于存储日期类型

​构造方法: Date() 创建对象,获取到当前系统时间

​Date(long) 通过毫秒数创建指定日期

​方法: getTime() 获取到日期转换的

69毫秒数,从1970.1.1算

public class DeteDemo {

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("当前日期为:"+date);
		System.out.println("当前日期转换的毫秒数为:"+date.getTime());
		date = new Date(1548961565631L);
		System.out.println("设定的日期为:"+date);
	}
}

在这里插入图片描述

DateFormat日期格式化类

​1.控制台和将来的前端页面,所提交的数据日期都是以字符串的形式体现,如何将字符串存入日期

​2.日期又如何以我们需要的格式展示

​这以上情况需要使用我们的日期格式化类进行互转

​DateFormat是日期格式化子类抽象类,必须通过SimpleDateFormat子类实现类去进行实例化

​配置格式化对照图

在这里插入图片描述

构造方法: SimpleDateFormat(格式) 创建格式化对象,并初始化对照格式

常用方法: format(日期[,格式]) 将日期转换为指定格式显示

​ parse(字符串[,格式]) 将指定格式的字符串转换为日期

public class DeteFormatDemo {

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("当前日期为:"+date);
		//需要格式化对象,对日期进行格式化展示
		DateFormat df = new SimpleDateFormat();
		String date1 = df.format(date);
		System.out.println("转换为默认格式字符串:"+date1);
		//初始化日期格式对象
		df = new SimpleDateFormat("yyy-MM-dd E HH:mm:ss SSS");
		String date2 = df.format(date);
		System.out.println("指定格式日期:"+date2);
		//字符串可以转换为日期
		df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String str = "1999-10-01 10:10:10";
		//使用parse方法,将字符串转换为日期
		try {
			Date date3 = df.parse(str);
			System.out.println("日期为:"+date3);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

在这里插入图片描述

日期多格式转换

public class DateFormatDemo1 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入日期:");
		String da = in.next();
		//创建格式化对象,用于适应各种类型的转换,需要使用格式化数组存储多个格式
		DateFormat[] dfs = {new SimpleDateFormat("yyyy-MM-dd"),new SimpleDateFormat("yyyy/MM/dd"),new SimpleDateFormat("yyyy年MM月dd日")};
		int i=0;
		//通过循环的方式去识别每一个格式,如果识别到了就转换,没有识别到异常处理,程序继续运行
		for (DateFormat df : dfs) {
			try {
				Date date = df.parse(da);
				//没有问题就会执行输出
				System.out.println("日期为:"+date);
			} catch (ParseException e) {
				i++;
			}
		}
		if(i==dfs.length) {
			System.out.println("对不起,您输入的日期格式不正确!");
		}
	}
}

在这里插入图片描述

Calendar日历类

​Calendar类是为特定瞬间与一组日历字段之间的转换提供一些方法,并提供操作日历字段的方法

​Calendar日历类是一个抽象类,但其提供了一个可以获取对象的getInstance(),用于获取日历对象

常用方法:

​ get(属性) 返回指定的日历字段

				add(属性,int val)  给对应属性,添加或减少日期

​ set(属性,int val) 设定某个属性的字段值

​ set(int yeart, int month,int day) 直接设置年月日

​ set(int year,int month,int day ,int hour, int minute) 直接设置年月日时分

​ set(int year,int month,int day ,int hour, int minute,int second) 直接设置年月日时分秒

public class CalendarDemo {

	public static void main(String[] args) {
		// 获取当前日期日历对象
		Calendar c = Calendar.getInstance();
		//获取年月日
		int year = c.get(Calendar.YEAR);
		//国际日历,月份是从0开始11结束
		int month = c.get(Calendar.MONTH)+1;
		int day = c.get(Calendar.DATE);
		//day = c.get(Calendar.DAY_OF_MONTH);
		System.out.println("今天的日期是:"+year+"-"+month+"-"+day);
		int week = c.get(Calendar.DAY_OF_WEEK)-1;
		System.out.println("今天星期"+week);
		//获取时分秒
		int hour = c.get(Calendar.HOUR_OF_DAY);
//		hour = c.get(Calendar.HOUR);  //12小时制
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int ms = c.get(Calendar.MILLISECOND);
		System.out.println(hour+":"+minute+":"+second+"  "+ms);
	}
}

在这里插入图片描述

使用日历类输出日期
public class CalendarDemo1 {

	public static void main(String[] args) {
		// 获取当前日期日历对象
		Calendar c = Calendar.getInstance();
		//获取年月日
		int year = c.get(Calendar.YEAR);
		//国际日历,月份是从0开始11结束
		int month = c.get(Calendar.MONTH)+1;
		String m = "",d="";
		//小于10的前面补0
		if(month<10) {
			m = "0"+month;
		}else
			m = month+"";
		int day = c.get(Calendar.DATE);
		if(day<10) 
			d = "0"+day;
		else 
			d = day+"";
		int week = c.get(Calendar.DAY_OF_WEEK)-1;
		String[] w = {"日","一","二","三","四","五","六"};
		//获取时分秒
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int ms = c.get(Calendar.MILLISECOND);
		System.out.print("今天的日期是:"+year+"-"+m+"-"+d);
		System.out.print(",今天星期"+w[week]+" ");
		System.out.print(hour+":"+minute+":"+second+"  "+ms);
	}
}

在这里插入图片描述

使用日历类去操作日期

​ 操作日期,可以通过add的方式去添加或减少日期, 通过set设置日期

public class CalendarDemo2 {

	public static void main(String[] args) {
		// 获取当前日期日历对象
		Calendar c = Calendar.getInstance();
		//设定自己的日期
		c.set(Calendar.DATE, 7);
		c.set(2022, 12, 18);
		//虽然设置的数字不符合年月日规则,但set方法会自动计算,如果超出会向上进1
		c.set(2021, 1, 32, 26, 12);
		//通过add方法的方式添加或减少日期  负数为减少
		c.add(Calendar.MONTH, -2);
		c.add(Calendar.DATE, 2);
		//获取年月日
		int year = c.get(Calendar.YEAR);
		//国际日历,月份是从0开始11结束
		int month = c.get(Calendar.MONTH)+1;
		int week = c.get(Calendar.DAY_OF_WEEK)-1;
		int day = c.get(Calendar.DATE);
		String[] w = {"日","一","二","三","四","五","六"};
		//获取时分秒
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		System.out.print("今天的日期是:"+year+"-"+month+"-"+day+",今天星期"+w[week]+" "+hour+":"+minute+":"+second);
	}
}

在这里插入图片描述

包装类

1.概念

​ Java提供了两个类型系统,基本类型和引用类型,在使用引用类型时有各种方法使用,但是使用基本数据类型时,我们只能取值和赋值,没有可操作性,因此Java就位基本数据类型提供了可以操作的包装类.使基本类型的数据像对象一样操作.

基本类型包装类型(位于lang包中)
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean
2.装箱与拆箱

​ 基本类型与对应的包装类对象之间,来回转换数据的过程称为"装箱"和"拆箱"

装箱: 从基本数据类型转换为对应的包装类型

​ 拆箱: 从包装类型转换为对应的基本类型

​ 自动执行: 这一过程也叫作自动装箱 和 自动拆箱

​ 使用Integer包装类代表

public class IntegerDemo {

	public static void main(String[] args) {
		//整数包装类,保存整数,装箱过程
		Integer num = new Integer(5);
		//1可以通过对象的方式保存数字,还可以同时转换字符串
		//在字符转换数字过程中,必须保证字符串一定为数字
		Integer num1 = new Integer("6");
		
		//2.手动拆箱,使用intValue()方法将包装类数字转换为基本类型
		int num2 = num.intValue();
		System.out.println("包装类中的数字为:"+num2);
		System.out.println("包装类封装的数字,且转化字符串为:"+num1);
		
		//3.自动装箱和自动拆箱
		Integer num3 = 10;  //将数字直接赋值给包装类,自动封装到包装类中
		int result = num2 + num3;   //基本类型可以与包装类型直接运算,包装类型会自动拆箱
		System.out.println("基本类型与包装类型运算的结果为:"+result);
		
		//4.使用方法转换字符串,其他包装类的转换格式:  包装类.parseXXX(字符串) 
		int num4 = Integer.parseInt("34");
		System.out.println("转换的数字为:"+num4);
	}
}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值