常用类
String
1、语法特殊性:提供了String常量对象
2、内存存放的特殊性:String常量对象在加载期就会被产生,帮到数据段的字符串常量池当中,运行起来以后需要使用,直接到常量池取就是了
eg:String str = new String("hello!")
产生了两个字符串
对象,3个
对象
3、String对象内容不可变(对String的特殊设计:字符串是常量,所以不可变)
String用的是length
方法,数组用的length
属性
String str = "hello";
1、跟字符数组有关的方法
str.length 字符串长度
char[] array = str.toCharArray(); 将字符串Dtring对象转换为char数组
star.charAt(3); 根据下标得到String对象改下标位置的字符
str.indexOf('l') 得到某个字符在String对象中首次出现的位置
str.lastIndexOf('l') 得到某个字符在String对象中最后一次出现的位置
2、跟字母有关的方法
str.toUpperCase 将字符串的所有字母转换为大写(原理是生成一个全大写的新的String对象)
str.toLowerCase 全小写
"hello".equalsIgnoreCase(str) 忽略大小写比较
"hello".compareTo("hello") 让两个String做字典顺序比较
"hello".compareToIgnoreCase("hello") 让两个String忽略大小写做字典顺序比较
3、跟使用技巧有关的方法
str.contains() 判断一个String对象是否包含另一个子串
str.startsWith() 判断一个String对象以什么开头
str.endsWith() 判断一个String对象以什么结尾
str.replace('l','o') 将String对象中的某个子串替换成另一个字符串
str.replaceAll("ll","fuck") 将String对象中的某个子串替换成另一个String对象,支持正则表达式
str.replace("l","fuck") 将String对象中首次出现的某个子串替换成另一个String对象
4、特殊方法
4-1 trim方法 去掉String的前后空格,
只要做用户输入字符串就要无条件trim一次
4-2 split方法 根据分隔符拆分字符串
特殊:当以分隔符结尾的时候,将不再拆分
补充:空串与空不一样,空串有对象,判断字符串是否为空,要判断这两种情况
String str1 = null //空 str1.length会报错——没对象
String str2= "" //空串 str2.length不会报错,返回0——有对象
eg:if(str != null && !str.equals("")){
System.out.println("str为空")
}
判断的时候顺序不能变
正则表达式(matches,Z做正则表达式校验)
用来定义一个字符串格式的模板,其本身也是一个字符串
正则表达式——regex——就是用来规范字符串格式的一种表达式,其表现形式就是字符串
直白的说——任何一个字符串都是正则表达式,比如“hello”就是一个,只不过他的格只有“hello”自己本省满足,想要有更多的满足情况,必须加入模糊匹配
[ ]:代表一个字符,在内部填写这个位置可以放哪些符号
eg:String regexP = "8320[0-9][0-9]" //0-9可以改为\d,所以是[\\d]
if(num.matches(regesP)){ 正确 }
{ }:代表正则表达式出现的次数。完整表达:
(1) {m,n}最多出现n次,最少m次
eg;[5-7]{1,2}
(2) {m,}最少出现m次
(3) {m}恰好m次
(4) * 任意次数
(5) + 一次或多次
(6) ? 一次或者不出现
( ):代表分组可选
eg:8320([0-9]{4}|110|114|120)—— 8320( [0-9]{4} | 1[12]0 | 114 )
StringBuffer也是Java中表示字符串的一种数据类型,与String的区别是它的内容
可变
只能被new出来使用eg:StringBuffer sb = newStringBuffer("hello");
不能使用+号来拼接字符串
由于StringBuffer内容可变,通常我们在做大量字符串拼接时使用它比使用String更有效率
StringBuffer的方法没有String丰富,主要都是类似于append、insert这样的跟拼接有关系的方法
StringBuilder与StringBuffer非常相似,无论是内容可变,还是使用API和语法,都保持一致
StringBuffer是线程安全的,StringBuilder是线程不安全的,但是线程安全的效率低,线程不安全的效率高
包装类
是基本数据类型的封装
是基本数据类型与引用数据类型转换的桥梁
语法API掌握:三角形转换
1、根据一个int变量,转换成它对应的Integer对象
eg:int a = 100;
Integer in = new Integer(a) //标准做法
Integer in1 = a; //自动封箱,这是jdk1.5提供的语法塘
2、根据一个Integer对象,把它的值放到一个int变量中
Integer in = 205;
int a = in.intValue(); //标准做法
int a = in; //自动拆箱,JDK1.5语法塘
3、根据一个String对象产生一个Integer对象
String str = "123";
Integer in = new Integer("str");
4、根据一个Integer对象,产生一个String对象
Integer in = 345;
String str = in.toString();
String str0 = in+""; //当对对象做字符串拼接操作,相当于默认调用对象toString方法
5、根据一个int,产生一个String对象
int a = 120;
String str = Integer.toString(a);
String str1 = a+"";
6、根据一个String对象,产生一个int
String str = "2500";
int a = Integer.parseInt(str); //最重要最常用的方法
时间日期类
在计算机中,保存时间用的是long类型
记录的是当前距离1970年1月1日,0:00:00:000过了多少毫秒
eg:long time1 = System.currentTimeMillis();
Date 类
来自于java.util包
Date now = new Date();产生Date对象,里面封装的是当前时间的信息
Date中的after,before,compareTo,equals这些时间日期比较的方法还能继续使用
在输出Date的字符串信息时,通常配合使用SimpleDateFormat这个类
eg:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//hh是12小时制,HH是24小时制
String msg = sdf.format(now);
Calender类
Calender cal = Calender.getInstance(); //直接返回格里高利历