日期类
第一种日期初始化
//直接获取到一个表示当前时间日期的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 类的对象能够被多次的修改,并且不产生新的未使用对象。