Object: 它是所有类的超类,祖宗类。java中所有的类都直接或间接的继承这个类
l 方法
public String toString() 返回当前对象中的内容, 对于Object类默认操作来说,返回的对象的类型+@+内存地址值
public boolean equals(Object obj) 比较两个对象内容是否相同,对于Object类默认操作来说,比较的是地址值
l String: 字符串类,字符串是常量;它们的值在创建之后不能更改
l 方法
boolean equals(Object obj) 判断两个字符串中的内容是否相同
boolean equalsIgnoreCase(String str) 判断两个字符串中的内容是否相同, 忽略大小写
boolean contains(String str) 判断该字符串中 是否包含给定的字符串
boolean startsWith(String str) 判断该字符串 是否以给定的字符串开头
boolean endsWith(String str) 判断该字符串 是否以给定的字符串结尾
boolean isEmpty() 判断该字符串的内容是否为空的字符串 “”
int length() 获取该字符串的长度
char charAt(int index) 获取该字符串中指定位置上的字符
String substring(int start) 从指定位置开始,到末尾结束,截取该字符串,返回新字符串
String substring(int start,int end) 从指定位置开始,到指定位置结束,截取该字符串,返回新字符串
int indexOf(int ch ) 获取给定的字符,在该字符串中第一次出现的位置
int indexOf(String str) 获取给定的字符串,在该字符串中第一次出现的位置
int indexOf(int ch,int fromIndex) 从指定位置开始,获取给定的字符,在该字符
byte[] getBytes() 把该字符串 转换成 字节数组
char[] toCharArray() 把该字符串 转换成 字符数组
String replace(char old,char new) 在该字符串中,将给定的旧字符,用新字符替换
String replace(String old,String new) 在该字符串中, 将给定的旧字符串,用新字符串替换
String trim() 去除字符串两端空格,中间的不会去除,返回一个新字符串
String toLowerCase() 把该字符串转换成 小写字符串
String toUpperCase() 把该字符串转换成 大写字符串
int indexOf(String str,int fromIndex) 从指定位置开始,获取给定的字符串,在该字符串中第一次出现的位置
l StringBuffer/StringBuilder:
l 方法
public StringBuffer append(String str) 在原有字符串缓冲区内容基础上,在末尾追加新数据
public StringBuffer insert(int offset,String str) 在原有字符串缓冲区内容基础上,在指定位置插入新数据
public StringBuffer deleteCharAt(int index) 在原有字符串缓冲区内容基础上,删除指定位置上的字符
public StringBuffer delete(int start,int end) 在原有字符串缓冲区内容基础上,删除指定范围内的多个字符
public StringBuffer replace(int start,int end,String str)在原有字符串缓冲区内容基础上,将指定范围内的多个字符 用给定的字符串替换
public StringBuffer reverse() 将字符串缓冲区的内容 反转 “abc”----“cba”
public String substring(int start) 从指定位置开始,到末尾结束,截取该字符串缓冲区,返回新字符串
public String substring(int start,int end) 从指定位置开始,到指定位置结束,截取该字符串缓冲区,返回新字符串
正则表达式
1.1 正则表达式的概念
正则表达式(英语:Regular Expression,在代码中常简写为regex)。
正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
1.2 正则表达式的匹配规则
参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母。我们来学习语法规则。
正则表达式的语法规则:
字符: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 ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线
边界匹配器:^
含义:代表的是行的开头
例如:匹配规则为1[0-9]$ ,那么需要匹配的内容从[abc]这个位置开始, 相当于左双引号
边界匹配器:$
含义:代表的是行的结尾
例如:匹配规则为2[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之间
逻辑运算符:XY
含义:代表的是X后跟Y
例如:匹配规则为"ab",那么需要匹配的字符串内容就是 ”ab”
逻辑运算符:X|Y
含义:代表的是X 或 Y
例如:匹配规则为"a|b",那么需要匹配的字符串内容就是 ”a”或”b”
逻辑运算符:(X)
含义:代表的是()括号内的数据作为一组数据出现,(X)的方式称为正则表达式中的组
例如:匹配规则为"(hello)+",那么需要匹配的内容是组内数据要出现多次,如”hellohellohello”;或者组内数据出现一次,如”hello”。
l 注意实现:
l 在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\1来进行使用
例如:正则表达式的匹配规则为"(a) == \1";
使用数据"a == a"进行匹配结果为true;使用数据"a == b"进行匹配结果为false。
1.3 正则表达式规则匹配练习
请写出满足如下匹配规则的字符串:
规则:"[0-9]{6,12}"
该规则需要匹配的内容是:长度为6位到12位的数字。
如:使用数据"123456789"进行匹配结果为true;
使用数据"123456"进行匹配结果为false。
规则:“1[34578][0-9]{9}”
该规则需要匹配的内容是:11位的手机号码,第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字。
如:使用数据"12345678901"进行匹配结果为false;
使用数据"13312345678"进行匹配结果为true。
规则:“a*b”
该规则需要匹配的内容是:在多个a或零个a后面有个b;b必须为最后一个字符。
如:使用数据"aaaaab"进行匹配结果为true;
使用数据"abc"进行匹配结果为false。
1.4 字符串类中涉及正则表达式的常用方法
public boolean matches(String regex) //判断字符串是否匹配给定的规则
举例:校验qq号码.
1: 要求必须是5-15位数字
2: 0不能开头
代码演示:
String qq = “604154942”;
String regex = “[1-9][0-9]{4,14}”;
boolean flag2 = qq.matches(regex);
举例:校验手机号码
1:要求为11位数字
2:第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字。
代码演示:
String phone = “18800022116”;
String regex = “1[34578][0-9]{9}”;
boolean flag = phone.matches(regex);
l public String[] split(String regex) //根据给定正则表达式的匹配规则,拆分此字符串
举例:分割出字符串中的的数字
代码演示:
String s = “18-22-40-65”;
String regex = “-”;
String[] result = s.split(regex);
代码演示:
String s = “18 22 40 65”;
String regex = " ";
String[] result = s.split(regex);
l public String replaceAll(String regex,String replacement) //将符合规则的字符串内容,全部替换为新字符串
举例:把文字中的数字替换成*
代码演示:
String s = “Hello12345World6789012”;
String regex = “[0-9]”;
String result = s.replaceAll(regex, “*”);
1.5 正则表达式练习
l 匹配正确的数字
匹配规则:
匹配正整数:”\d+”
匹配正小数:”\d+\.\d+”
匹配负整数:”-\d+”
匹配负小数:”-\d+\.\d+”
匹配保留两位小数的正数:”\d+\.\d{2}”
匹配保留1-3位小数的正数:”\d+\.\d{1,3}”
l 匹配合法的邮箱
匹配规则:
”[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\.[a-zA-Z_0-9]+)+”
”\w+@\w+(\.\w+)+”
l 获取IP地址(192.168.1.100)中的每段数字
匹配规则:
”\.”
l 匹配abc==abc这样的字符串,即要求等号左右两边一致
匹配规则:
”(\w+)==\1”
知识点总结
l 正则表达式:用来定义匹配规则,匹配一系列符合某个句法规则的字符串。
正则表达式的匹配规则
请参见1.2 正则表达式的匹配规则
正则表达式的常用方法:
public boolean matches(String regex) //判断字符串是否匹配给定的规则
public String[] split(String regex) //根据给定正则表达式的匹配规则,拆分此字符串
public String replaceAll(String regex,String replacement) //将符合规则的字符串内容,全部替换为新字符串
l Date: 日期/时间类
构造方法:
public Date()// 系统当前日期时间
public Date(long date) 得到一个1970年1月1日 0点这个时间基础上,加上参数date 毫秒值对应的日期时间
方法:
public long getTime() 获取日期所对应的毫秒值
l DateFormat:是日期/时间格式化子类的抽象类, 使用其子类SimpleDateFormat 实例化
构造方法:
public SimpleDateFormat() 默认的格式化操作
public SimpleDateFormat(String pattern) 按照指定的格式,进行日期格式化
日期和时间模式
y 年
M 年中的月份
d 月份中的天数
H 一天中的小时数(0-23)
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
方法:
public final String format(Date date) 把日期 格式化成字符串
public Date parse(String source) 把日期字符串 转换成 日期对象
l Calendar:日历类,可获取日期中指定字段的值
方法:
public static Calendar getInstance() //获取日期对象
public int get(int field) //获取时间字段值
public void add(int field,int amount) //指定字段增加某值
public final void set(int field,int value)//设置指定字段的值
public final Date getTime() //获取该日历对象转成的日期对象
基本类型包装类
大家回想下,在第二天我们学习Java中的基本数据类型时,说Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难。怎么办呢?
1.1 基本类型包装类概述
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
8种基本类型对应的包装类如下:
其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。
基本数据类型对象包装类特点:用于在基本数据和字符串之间进行转换。
l 将字符串转成基本类型:
parseXXX(String s);其中XXX表示基本类型,参数为可以转成基本类型的字符串,如果字符串无法转成基本类型,将会发生数字转换的问题 NumberFormatException
System.out.println(Integer.parseInt(“123”) + 2);
//打印结果为 125
l 将基本数值转成字符串有3种方式:
l 基本类型直接与””相连接即可;34+""
l 调用String的valueOf方法;String.valueOf(34) ;
自动装箱拆箱
在需要的情况下,基本类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型。
比如:
基本类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。
相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
l 自动拆箱:对象转成基本数值
l 自动装箱:基本数值转成对象
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; 加法运算完成后,再次装箱,把基本数值转成对象。
练习
Integer a = 10; //10这个基本类型值自动装箱成了引用类型
int b = new Integer(“10”); //引用数据类型自动拆箱成了基本类型
Integer c = b + a; //计算时,a自动拆箱为基本类型,结果自动装箱成引用类型。
l 自动装箱(byte常量池)细节的演示
当数值在byte范围之内时,进行自动装箱,不会新创建对象空间而是使用原来已有的空间。
Integer a = new Integer(3);
Integer b = new Integer(3);
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
System.out.println("---------------------");
Integer x = 127;
Integer y = 127;
//在jdk1.5自动装箱时,如果数值在byte范围之内,不会新创建对象空间而是使用原来已有的空间。
System.out.println(x==y); //true
System.out.println(x.equals(y)); //true
基本类型包装类
l 8种基本类型对应的包装类
基本类型 包装类
byte Byte
short Short
int Integer
log Long
float Float
double Double
char Character
boolean Boolean
l 自动装箱、自动拆箱
l 自动装箱:基本数值转成对象(int à Integer)
l 自动拆箱:对象转成基本数值(Integer à int)
l 常用方法
public int parseInt(String str):把字符串转成基本类型int
public static String valueOf(int x):把基本类型int转成字符串
l System类: 系统属性信息工具类
l public static long currentTimeMillis():获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
l public static void exit(int status):用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态
l public static void gc():用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。
l public static Properties getProperties() //获取JVM属性信息
l
l Arrays类:数组操作工具类
l public static void sort方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序)
l public static String toString方法,用来返回指定数组元素内容的字符串形式
l public static void binarySearch方法,在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组
l Math类:数学运算工具类
l abs方法,结果都为正数
l ceil方法,结果为比参数值大的最小整数的double值
l floor方法,结果为比参数值小的最大整数的double值
l max方法,返回两个参数值中较大的值
l min方法,返回两个参数值中较小的值
l pow方法,返回第一个参数的第二个参数次幂的值
l round方法,返回参数值四舍五入的结果
l random方法,产生一个大于等于0.0且小于1.0的double小数