JAVA常用API总结(日期、数据类型转换、字符串)

日期类

第一种日期初始化

//直接获取到一个表示当前时间日期的Date对象
Date date = new Date();
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
//对日期进行处理
String dateStr = sdf.format(date);

第二种日期初始化

//格里高利历
Calendar cal = new GregorianCalendar();
//获取到一个表示当前时间日期的Calendar对象
cal = Calendar.getInstance();
int year = 1999,month=12,day=3;
cal.set(year,month - 1,day);
Date birthday = cal.getTime();
//对日期进行处理
String birthStr = sdf.format(birthday);

额外补充:

//在java.time包中,表示瞬时的有一个新的类Instant
Instant now = Instant.now();
//这个类可以把时间瞬时精确到纳秒
System.out.println(now.getNano());

第三种日期初始化

LocalDate LocalTime LocalDateTime

//获取当前对象
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);

//获取指定的时间日期对象
localDate = LocalDate.of(1999,12,3);
localTime = LocalTime.of(10,30,35);
localDateTime = LocalDateTime.of(1999,12,3,10,30,35);

//差值计算
localDate = localDate.plusDays(3);
localDate = localDate.minusMonths(10);
System.out.println(localDate);

//格式化字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss E");
localDateTime = LocalDateTime.now();
String description = localDateTime.format(formatter);
System.out.println(description);

数据类型转换

这里以String类型和int类型举例

//基本转包装
int num = 10;
Integer integer = new Integer(num);
System.out.println(integer);
//包装转String
Integer integer = new Integer(20);
String str = integer.toString();
System.out.println(str);
//String转基本
String str = "30";
int num = Integer.parseInt(str);
System.out.println(num);
//基本转String
int num = 40;
String str = Integer.toString(num);
String str = num + "";
System.out.println(str);
//String转包装
String str = "50";
Integer integer = Integer.valueOf(str);
System.out.println(integer);
//包装转基本
Integer integer = new Integer(60);
int num = integer.intValue();
System.out.println(num);

补充

//在Java当中,提供了语法糖,可以自动完成
//基本数据类型和包装类对象之间的转换
int num = 100;
Integer in = num; //自动封箱--把简单的基本数据类型封装到包装类对象当中
Object obj = 30;//这里的obj是指向一个Integer对象,对象里面的值是30
int num2 = in;//自动拆箱
int num3 = (Integer)obj;

字符串类

//String当中与字符数组有关的方法
String str = "hello";
//数组长度
int length = str.length();
//把字符串内容取出来放入一个字符数组
char[] chars = str.toCharArray();
//获取某个下标位置的字符
char c = str.charAt(0);
//返回一个字符在字符串下的位置
int index = str.indexOf('e');
//最后一次出现的位置
int index2 = str.lastIndexOf('l');
//截取子串,从下标2开始截取,到4结束,不包括4
String sub = str.substring(2, 4);
//String当中与字符内容有关的方法
//比较两个字符串是否相等(比较的是地址)
boolean flag = str.equals("hello");
//比较两个字符串是否相等(不考虑大小写)
flag = str.equalsIgnoreCase("HELLO");
//比较两个字符串的差值,相当于str-"world"
int com = str.compareTo("world");
//比较两个字符串的差值(不考虑大小写)
com = str.compareToIgnoreCase("WORLD");
//字符转化为大写
str = str.toUpperCase();
//字符转化为小写
str = str.toLowerCase();
//判断字符串是否以某个前缀开头
flag = str.startsWith("he");
//判断字符串是否以某个后缀开头
flag = str.endsWith(".");
//是否包含某个子串
flag = str.contains("el");
//替换
str = str.replace('l', 'L');
//必须掌握的三个特殊方法
//trim方法
//用来去掉字符串前后的空格
String input = "  hello  ";
input = input.trim();
System.out.println(input);

//split方法
//字符串的拆分
String msg = "2022-06-07";
String[] arr = msg.split("[-]");
System.out.println(arr[1]);

//matchs方法
//专门用于判断一个字符串是否满足正则表达式的要求
/*
	正则表达式(Regex): 是一个用来规范字符串内容的表达式;
    1、正则表达式本身就是一个字符串形式的表达式;
    2、学习正则表达式就是要去学习里面的各种符号;
    2-1、[] --- 表示1个字符,然后在里面书写上这个字符可以是哪些选择
        [13579abc] --- 代表字符串只能有一个字符,且只能是13579abc中的某一个
        [0-9] [a-z] [A-Z]
        [^abc] -- ^代表取反,即除了abc都可以
    2-2、{} --- 代表的是前面的正则表达式出现的次数
        {m,n} -- 至少m次,最多n次
        {m,} -- 至少出现m次
        {m} --- 只能出现m次
        ? --- 出现0-1次
        * --- 任意次
        + --- 至少出现1次
    2-3、() --- 任意位数的字符,一般会和|配合,表示分组
        (8320|8333|88) -- 8320、8333和88都是可以的
*/

//举例
//2万以及2万以下的100的整数
String a = "([1-9]|[1-9][0-9]|1[0-9][0-9]|200)00";
Scanner scan = new Scanner(System.in);
String inputMoney = scan.next();
if (inputMoney.matches(a)) {
	System.out.println("存款业务实现");
}

/*
	在String当中除了matches方法支持正则表达式,
	还有两个常用方法是支持正则的
	split()
*/

补充

StringBuffer与StringBuilder

警记:StringBuffer 适用于用在多线程操作同一个 StringBuffer 的场景,如果是单线程场合 StringBuilder 更适合。

区别:
StringBuffer:可变字符串、效率低、线程安全;
StringBuilder:可变字符序列、效率高、线程不安全;

String、StringBuffer与StringBuilder

String字符串常量。String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。

StringBuffer与StringBuilder是字符串变量。StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值