String
* 他的底层就是一个字符数组,所以他的很多特性就是数组的特性
* 1 字符串一旦创建,这个字符串对象不能更改
* 2 字符串需要使用""双引号表示
* 3 为了提高字符串访问效率,提出了一个缓存机制,字符串常量池
*
* 常用方法
* int length():返回字符串的长度: return value.length
* char charAt(int index): 返回某索引处的字符return value[index]
* boolean isEmpty():判断是否是空字符串:return value.length == 0
* String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写
* String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写
* String trim():返回字符串的副本,忽略前导空白和尾部空白
* boolean equals(Object obj):比较字符串的内容是否相同
* boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大
* 小写
* String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
* int compareTo(String anotherString):比较两个字符串的大小
* String substring(int beginIndex): 返回一个新的字符串, 它是此字符串的从
* beginIndex开始截取到最后的一个子字符串。
* String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字 符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
* boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
* boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
* boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的
* 子字符串是否以指定前缀开始
* boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
* int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
* int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出 现处的索引,从指定的索引开始
* int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
* int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后 一次出现处的索引,从指定的索引开始反向搜索
* 注:indexOf和lastIndexOf方法如果未找到都是返回-1
* String replace(char oldChar, char newChar):返回一个新的字符串,它是
* 通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
* String replace(CharSequence target, CharSequence replacement): 使 用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
* String replaceAll(String regex, String replacement) : 使 用 给 定 的
* replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
* String replaceFirst(String regex, String replacement) : 使用给定的
* replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
* boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
* String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
* String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此 字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中
*
//尽管没有new,但是s1依然代表String的对象,因为字符串常量池
String s1 = "abc"; //abc是个对象 不可被更改
//s1没有使用final修饰,所以s1的值可以更改,只不过是让s1指向了bcd字符串这个对象,而abc对象没有更改
s1 = "bcd";//只不过现在s1指向bcd,可以重新指向其他对象
//第二部分
String s2 = "Hello";
String s3 = "Hello";
String s4 = "Hello";
System.out.println(s2 == s3);
//第三种
String s5 = new String("abc");
String s6 = new String("abc");
String s7 = "abc";
//s5和s6都是new的方式,所以分别指向各自的堆内存
System.out.println(s5 == s6);
System.out.println(s5 == s7);
//但是String类中覆写了equals方法,比较的是值,不是内存地址
//所以我们比较字符串是否相等的时候,应该用equals
System.out.println(s5.equals(s7))
Integer
包装类:封装了基本数据类型的一些操作,更加方便使用
//int Integer String 三种之间进行转换
//1 int-->Integer
Integer i1 = Integer.valueOf(19);
//2 Integer->int
int i2 = i1.intValue();
//3 String->Integer
Integer i3 = Integer.valueOf("22");
//4 Integer->String
String i4 = i3.toString();
//5 int->String
String i5 = i2 + "";
//6 String->int
int i6 = Integer.parseInt(i5);
Data 的格式化
new SimpleDateFormat(时间格式):创建格式化对象并指定格式
public String format(Date date):把指定时间按照固定格式进行转换,并返回该时间格式字符串
//获取当前系统时间
Date d1 = new Date();
/**
* 年 y
* 月M
* 日 d
* 时H
* 分m
* 秒s
* 毫秒S
*/
//创建时间格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
//格式化当前时间
String strTime = sdf.format(d1);
System.out.println(strTime);
strTime = "2021年07月13日 15:51:41 346";
Date d2 = sdf.parse(strTime);
System.out.println(d2);