0x01:在Java中,形如"9.732","A String","你好",这样的字符串,其实都是常量。
(1)String的构造函数
String()
String(String original)
String(char value[])
String(char value[], int offset, int count)
String(int[] codePoints, int offset, int count)//unicode编码
String(byte ascii[], int hibyte, int offset, int count)
String(byte ascii[], int hibyte)
String(byte bytes[], int offset, int length, String charsetName)
String(byte bytes[], int offset, int length, Charset charset)
String(byte bytes[], String charsetName)
String(byte bytes[], Charset charset)
String(byte bytes[], int offset, int length)
String(byte bytes[])
String(StringBuffer buffer)
String(StringBuilder builder)
String str1,str2;
str1="We are students";
str2="We are students";
此时str1与str2具有相同的字符串常量,因此具有相同的实体。
内存示意图
0x02:Java常用的方法
(1)使用"+"运算符可实现连接多个字符串的功能,最终返回一个String对象
(2)当"+"连接其他的数据类型的时候,其他类型的数据会调用toString()方法将其转化成String类型后拼接
(3)通过String对象的length()方法可以获得str字符长度
(4)使用indexOf(str)与lastIndexOf(str)可以分别找出字符串在原字符串中的索引(第一个与最后一个,返回值小于0则不存在)
(5)charAt(index)获得指定位置的字符
(6)substring(beginIndex)与substring(beginIndex,endIndex)截取字符串
(7)trim()去除头部和尾部的空格
(8)replace(oldStr,newStr)替换字符串中的所有的指定字符串
(9)判断字符串的开始与结尾startsWith(str),endsWith(str)
(10)equals(str)与equalsIgnoreCase(str)判断两个字符串是否相等
(11)compareTo(str),按照字典顺序比较两个字符串,最终返回整数值
(12)toLowerCase()与toUpperCase()将字母大小写转换一下
(13)split(sign)与split(sign,limit)将字符串分割并返回拆分后的字符串数组
(14)String类的静态方法String.format(String format,Object ...args)与String.format(Local local,String format, Object ... args)// {local 代表着语言环境}
0x03:Java格式化字符串
Date date=new Date();
Sting s=String.format("%te",date);
日期格式化
Date date=new Date();
String str=String.format("%te",date);
| 转换符 | 说明 |
|---|---|
| %te | 一个月中的某一天(1-31) |
| %tb | 指定环境的月份简称 |
| %tB | 指定环境月份的全称 |
| %ta | 指定环境星期的简称 |
| %tA | 指定环境星期的全称 |
| %tc | 全部日期和时间信息 |
| %ty | 两位年份 |
| %tY | 四位年份 |
| %tm | 月份 |
| %td | 一个月中的第几天(01-31) |
| %tj | 一年中的第几天(001-366) |
时间格式化
| 转换符 | 说明 |
|---|---|
| %tH | 2位的24小时制小时(00-23) |
| %tk | 24小时制时(0-23) |
| %tI | 12小时制小时(01-12) |
| %tl | 12小时制小时(1-12) |
| %tp | 上午/下午(am/pm) |
| %tM | 分钟(00-59) |
| %tS | 秒(00-60) |
| %tL | 毫秒(000-999) |
| %tN | 微秒(000000000-999999999) |
| %tz | 相对与GMT格式的数字偏移量(0800) |
| %tZ | 时区缩写形式的字符串(CST) |
| %ts | 1970到现在的秒数 |
| %tQ | 1970到现在的毫秒数 |
时间日期组合
| 转换符 | 说明 |
|---|---|
| %tF | 年-月-日(4位年份) |
| %tD | 月/日/年(2位年份) |
| %tr | 时:分:秒(12小时制AM/PM) |
| %tT | 时:分:秒(24小时制) |
| %tR | 时:分(24小时制) |
常规格式化
| 转换符 | 说明 |
|---|---|
| %b,%B | boolean类型 |
| %h,%H | 散列码 |
| %s,%S | string |
| %c,%C | char |
| %d | 十进制数 |
| %o | 八进制数 |
| %x,%X | 十六进制数 |
| %e | 十进制科学计数 |
| %a | 十六进制浮点数 |
| %n | 换行符 |
| %% | % |
0x04:Java正则表达式
| 字符 | 意义 |
|---|---|
| . | 任意字符 |
| \d | 0-9 |
| \D | 非数字 |
| \s | 空白符 \t,\n |
| \S | 非空白符 |
| \w | 可以用作标识符的字符($除外) |
| \W | 不可用于标识符的字符 |
| \p{Lower} | a-z |
| \p{Upper} | A-Z |
| \p{ASCII} | ascii字符 |
| \p{Alpha} | 字母 |
| \p{Digit} | 0-9 |
| \p{Alnum} | 0-9与字母 |
| \p{Punct} | 标点符号 |
| \p{Graph} | Alnum+Punct |
| \p{Print} | 可打印字符[\p{Graph}\x20] |
| \p{Blank} | 空格和制表符 |
| \p{Cntrl} | 控制字符 |
[^012] : 除012以外的字符
[a-c] :a,b,c任意一个
[a-zA-Z] :任意英文字母
[a-z&&[abc]] : a,b,c,交运算
[a-z&&[ ^abc]] : 除abc以外的小写字母,差运算
| 限定符 | 意义 |
|---|---|
| ? | 0次或者1次 |
| * | 0次或者多次 |
| + | 1次或者多次 |
| {n} | 正好n次 |
| {n,} | 至少n次 |
| {n,m} | 出现n-m次 |
0x05:StringBuilder
(1)常用方法
append(content)//追加
insert(offset,arg)//指定位置添加
delete(start,end)//删除start->end的字符
toString()//转化为string








网友评论