回顾:
1.api是开发的一个帮助文档
2. 类与库 :
第一种: jdk
第二种:自己封装
第三种:第三方提供
3.用第三方库的步骤:
1.下载
2.导包
3.新建lib,加入依赖
4. 用类与方法
object:
所有的类的直接父类与间接父类
基础方法
hashCode()
获取哈希值
getClass().getName
获取包名加上类名
toString( )
默认返回的
恒等于(==) 与equals 的区别:
恒等于(==)如果比较基本数据类型是比较值,如果是比较引用数据类型的话比较的是地址;
equals 比较的一直都是内存地址
Scanner
获取键盘里的数据
使用时导包 java.util
StringBuffer :
1.线程安全的可变字符序列(可变的字符串) JDK1.0
2.一个类似于 String 的字符串缓冲区
3. 某些方法调用可以改变该序列的长度和内容 append() insert()添加
String 与 StringBuffer 对比
相同点:都是对字符序列进行操作
不同点:
1.String 的数据是不可变的 ,而StringBuffer 的内容是可变的
2. StringBuffer 自带缓存区,读取数据块,效率更高
StringBuffer的构造:
1.StringBuffer( ) 无参的构造 :
默认会给16个字符大小的缓冲区
2.capacity( )
是获取缓冲区容量的大小
3.StringBuffer(int capacity)
会默认给一个容量的大小值
StringBuffer常规的一次方法
追加:
1.append( )
向末尾追加数据
2. insert(int offset, char c)
向指定位置追加数据 offset 参数传递的是追加的索引 char 传递的是追加的字符
删除 :
1.deleteCharAt(int index)
根据索引进行删除
2.delete(int start, int end)
根据区间进行删除 start:开始区间 end:结束区间 索引从0 开始( 包头不包尾)
获取
1.charAt(int index)
根据索引获取字符
2.indexOf(String str)
查找是否存在这个字符,存在返回当前的索引,不存在返回-1
3.length( )
获取字符串的长度
4.replace(int start, int end, String str)
替换的方法, 根据区间来进行替换
5.reverse( )
控制翻转的方法
6.toString()
转换成String类型的方法
StringBuffer 与 String的相互转换
1.String转换成一个StringBuffer的几种方法:
1.通过构造方法
new StringBuffer("abc");
2.通过调用其append方法
new StringBuffer().append("abc")';
2. StringBuffer转换成一个String的几种方法
1.通过方法
toString( )
2.通过String构造方法
new String(sb)
StringBuilder
一个可变的字符序列(与StringBuffer方法相同)
StringBuffer与StringBuilder的区别
1.版本不一样:StringBuffer 是jdk1.0 ;StringBuilder是jdk1.5
2.安全性:StringBuffer多线程安全;StringBuilder 多线程不安全
3.效率性: StringBuffer效率低 (开发里使用这个多一点);StringBuilder 效率高
包装类
包装类型 int ==>Integer ;char ==> Character
其它的包装类型都是把首字母换成大写
包装类型的好处:
1.能够使用包装类型的方法
2. 类型能够相互转换
3. 集合里的数据类型都必须是引用数据类型
Integer:
类在对象中包装了一个基本类型 int 的值,Integer 类型的对象包含一个 int 类型的字段
构造方法:
1.public Integer(int value)
2.public Integer(String s) (传递的参数是 String类型, 但是必须是数字)
否则会出现这个异常 : java.lang.NumberFormatException
常量:(所有包装类都有这三个常量)
public static final int MAX_VALUE
获取int类型最大的值
public static final int MIN_VALUE
获取int类型最小的值
public static final int SIZE
获取 int 类型的位数
常规的方法 :
public byte byteValue()
返回值是一个byte值1.相互转换的时候不要超过最大的范围
静态方法:
public static int parseInt(String s)
把String转换成int类型的方法(最常用)
public static String toBinaryString(int i)
把int 类型转换成 二进制
public static String toOctalString(int i)
把 int 类型转换成 八进制
public static String toHexString(int i)
int 类转换为 16进制
public static Integer valueOf(int i)
把int 类型转换成包装类
String int Integer
数据类型的相互转换
String转换成int类型的三种方式
1.通过构造:new Integer( )
2.通过: parseInt ( String s)(常用)
3. valueOf( String str )
int 类型转换成String类型
1.new String(int i)
2.拼接 +""(常用)
3. toString()方法
int 类型转换成 Integer 类型
1.通过构造方法 new Integer()
2. valueOf(int i)
Integer转换成 int 类型
intValue( ) 直接赋值(Integer i =数字)
自动包装 :把基本数据类型转换成包装类 (穿了一层衣服)
自动拆箱: 把包装类转换成 基本数据类型(脱了这一层衣服)
手动装箱 :Integer integer = new Integer(10);
手动拆箱 : intValue( );
正则表达式:
是一个字符串 (校验规则的字符串),主要是做验证,
优点:把复杂的问题的简单化
坏处:记忆量大,同时还不一定写对
语法: matches(String regex)
检验这个正则与该字符串是否匹配
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
正则的三个方法 :
1.比较 matches(str)
2.split("")
3. replaceAll(reg,"")
总结
今天学习了StringBuffer类的方法和包装类以及正则,这三个东西抽象性比较强,很难说死记硬背把他们背下来,但是可以通过敲更多的代码熟悉它们的使用,其中正则表达式还需要理解其中的意思才能不容易写错,这都需要我们锻炼自身的记忆以及运用的能力,同时在面对需求的时候能狗第一时间滤清思路
疑问
正则表达式的概念还不是十分明确,同时其他方法还是很难第一时间想到需要用什么。