1.Object类
是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object
方法:
equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
例://根据Person类的属性重写toString方法
public String toString() {
return "Person [age=" + age + "]";
}
在输出语句中,写的是一个对象,默认调用对象的toString方法:例:Person p=new Person(); System.out.println(p);
输出的就是toString重写的方法
2.String类
String是常量,它们的值一旦创建不能更改,其实就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3==s4);//false,比较地址
System.out.println(s3.equals(s4));//true,比较字符串
构造方法中的两个:
public String(byte[] bytes,int offset,int length)
bytes
- 要解码为字符的 byte(
例:byte[]bytes={97,98,99};
String s=new String(bytes);
System.out.println(s);//输出的是abc
)
offset
- 要解码的第一个 byte 的索引
length
- 要解码的 byte 数
public String(char[] value)
例: char[]char1={'a','b','c'};
String s=new String(char1);
System.out.println(s);//输出a,b,c
统计大写字母,小写字母,数字的个数
package com.sh.day08;
public class Test01 {
public static void main(String[] args) {
count();
}
//统计字符串里的大写字母,小写字母,和数字
public static void count(){
String str="ABTIii222ImsncjsFfFFF555";
int upper=0;
int lower=0;
int number=0;
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
//找到大写字母
if (c>=65&&c<=90) {
upper++;
} else if(c>=97&&c<=122){
lower++;
}else if (c>=48&&c<=57) {
number++;
}
}
System.out.println("大写字母的个数"+upper);
System.out.println("小写字母的个数"+lower);
System.out.println("数字的个数"+number);
}
}
3.StringBuffer类
字符串缓冲区支持可变的字符串
StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作
4.正则表达式
正则表达式:regular expression 简写regex
是一个字符串,使用单个字符串来描述,用来定义匹配规则,匹配一系列符合某个语法规则的字符串,在开发中,通常被用来检索,替换符合某个规则的文本
正则表达式的匹配规则
字符:x
含义:代表的是字符x
例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”
字符:\\
含义:代表的是反斜线字符'\'
例如:匹配规则为"\\" ,那么需要匹配的字符串内容就是 ”\”
字符:\t
含义:制表符
例如:匹配规则为"\t" ,那么对应的效果就是产生一个制表符的空间
字符:\n
含义:换行符
例如:匹配规则为"\n",那么对应的效果就是换行,光标在原有位置的下一行
字符:\r
含义:回车符
例如:匹配规则为"\r" ,那么对应的效果就是回车后的效果,光标来到下一行行首
字符类:[abc]
含义:代表的是字符a、b 或 c
例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个
字符类:[^abc]
含义:代表的是除了 a、b 或 c以外的任何字符
例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符
字符类:[a-zA-Z]
含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母
字符类:[0-9]
含义:代表的是 0到9数字,两头的数字包括在内
例如:匹配规则为"[0-9]",那么需要匹配的是一个数字
字符类:[a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符)
例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线
预定义字符类:.
含义:代表的是任何字符
例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\\."来实现
预定义字符类:\d
含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
例如:匹配规则为"\d ",那么需要匹配的是一个数字
预定义字符类:\w
含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
例如:匹配规则为"\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线
边界匹配器:^
含义:代表的是行的开头
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容从[abc]这个位置开始, 相当于左双引号
边界匹配器:$
含义:代表的是行的结尾
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容以[0-9]这个结束, 相当于右双引号
边界匹配器:\b
含义:代表的是单词边界
例如:匹配规则为"\b[abc]\b" ,那么代表的是字母a或b或c的左右两边需要的是非单词字符([a-zA-Z_0-9])
数量词:X?
含义:代表的是X出现一次或一次也没有
例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有
数量词:X*
含义:代表的是X出现零次或多次
例如:匹配规则为"a*" ,那么需要匹配的内容是多个字符a,或者一个a都没有
数量词:X+
含义:代表的是X出现一次或多次
例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a
数量词:X{n}
含义:代表的是X出现恰好 n 次
例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a
数量词:X{n,}
含义:代表的是X出现至少 n 次
例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a
数量词:X{n,m}
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a{5,8}",那么需要匹配的内容是有5个字符a 到 8个字符a之间
例:
规则:"[0-9]{6,12}"
该规则需要匹配的内容是:长度为6位到12位的数字。
规则:"1[34578][0-9]{9}"
该规则需要匹配的内容是:11位的手机号码,第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字
规则:"a*b"
该规则需要匹配的内容是:在多个a或零个a后面有个b;b必须为最后一个字符
正则表达式的常用方法
5.Date类
导包:java.util.Date
获取当前日期的毫秒值:long time = System.currentTimeMillis();
时间原点:公元1970年1月1日,午夜0:00:00 毫秒值就是0
把毫秒值转成日期对象:Date time1=new Date(1539615506796L);
将日期转为毫秒值:
Date time=new Date();
long time2 = time.getTime();
System.out.println(time2);
6.DateFormat类(对日期格式化) SimpleDateFormate
DateFormat(java.text.DateFormat)是抽象类,我们需要使用其子类SimpleDateFormat(java.text.SimpleDateFormat)来创建对象
日期模式:
yyyy 年份
MM 月份
dd 天数
HH 0-23小时
mm 小时中的分钟数
ss 秒
String=>Date 用parse
Date=>String 用formate
formate(将毫秒数格式化为指定格式的日期)
例:SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf.format(new Date()));
parse(将字符串解析为日期对象) //时间和日期的模式必须和字符串中的日期匹配
例:String str = ”2020年12月11日”;
SimpleDateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
Date date = df.parse( str );
7.Calendar类
Calendar类写了静态方法getInstance()直接返回子类对象
不需要new,通过静态方法直接获取
Calendar calendar = Calendar.getInstance();
Calendar的get方法:获取日历字段的值
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));//获取年份
System.out.println(c.get(Calendar.MONTH)+1);//获取月份
System.out.println(c.get(Calendar.DAY_OF_MONTH));//日
System.out.println(c.get(Calendar.HOUR));//时
System.out.println(c.get(Calendar.MINUTE));//分
System.out.println(c.get(Calendar.SECOND));//秒
Calendar的set方法:获取日历字段的值
//设置时间为2020年5月20日
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2020);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DATE, 20);
Calendar的add方法:日历的偏移量
public void add(int field,int amount) //指定字段增加某值
例:Calendar c = Calendar.getInstance();
//修改当前时间为3天后
c.add(Calendar.DATE, 3);
//修改当前时间为5小时后
c.add(Calendar.HOUR, 5);
8.基本数据类型包装类
Integer类中有很多方法:
parseInt(String s)返回基本数据类型 //要求:字符串必须是数字格式的
例:int i = Integer.parseInt("123");