目录
七、判断字符串是否相等(内存,内容是否一致,返回类型为boolean)
9.2、CompareTo()方法只有在equals(Object)方法返回true时才返回
11.2、Split(String sign,int limit)
12.2、format(Local l,String format,Object...args)
一、声明字符串
在Java语言中字符串必须包含在(双引号中)””(两种方式)
String a = “abcd”;
Stirng a = new string(“abcd”) 两者可视与等价String str = [null]
Str 标识符,字符串的变量名称
String 变量的类型
Null 如果省略,表示str未初始化,否则表示声明的字符串值等于null
声明String必须初始化才能使用,否则编译器会报错(变量未被初始化错误)
二、创建字符串
String类的常用构造方法(数组)
(1)String(char a[])
Char a[] = {“g”,“o”,“o”,“d”}
String s = new String(a)
等价于
String s = new String(“good”);
(2)String(char[]value)
该构造方法可分配一个新的String对象,使其表示字符数组中所有元素连接的结果
Char a[] ={“s”,“t”,“u”,“d”,“e”,“n”,“t”};
String s = new String(a);
等价于String s = new String(“student”);
(3)String(char a[] int offset,int length);
Char a[]={“s”,“t”,“u”,“d”,“e”,“n”,“t”};
String s = new String(a,2,4);
等价于
String s = new String(“uden”);
Offset表示开始截取字符串的位置
Length表示截取字符串的长度
三、引用字符串常量来创建字符串变量
String str1,str2;
str1 = “We are students”
str2 =”We are students”
Str1与str2引用相同的字符串常量具有相同的实体
四、连接字符串
(1)连接多个字符串
(2)多个字符串使用“+”连接字符串
(3)Java中一对双引号内的字符串不能分开两行
(4)连接其他数据类型
可以与基本类型数据进行连接,连接是基本数据类型直接转换为字符串类型
五、获取字符串信息
(1)获取字符串长度:str.length();
//将字符串str的长度输出
System.out.println("字符串str的长度:" + str.length());
(2)字符串查找:
(1)indexOf();搜索字符或字符串首次出现的索引位置
(2)lastIndexOf();搜索字符或字符串最后一次出现的索引位置
获取指定字符串索引位置
//将空字符串在str中的索引位置赋值给变量size
int size = str.lastIndexOf(" ");
//将变量输出
System.out.println("空字符在字符串str中的索引位置是:" + size)
获取指定位索引位置的字符
Str.charAt(int index)
String str = "helloworld";//定义str字符串
char mychar = str.charAt(5);//将字符串str中位置是5的字符串返回
六、操作字符串
(1)获取字符串:
(1)String的subString()方法对字符串进行截取
Str.substring( int beginIndex)
beginIndex:截取字符的索引开始位置
String str = "Hello world";
String substr = str.substring(3);
Substring(int beginIndex,int endIndex)
endIndex:截取字符索引的结束位置
String substr = str.substring(0,3)
(2)去除空格:trim()忽略前导空格,和尾部空格
Str.trim();
Str为任意字符串对象
String str = “java class”;
System.out.printin(“字符串原来的长度:” + str.length());
System.out.printin(“去掉空格后的长度” + str.trim().length());
(3)字符串替换:str.replace(char oldchar, char newchar);
String str = "address";
String newstr = str.replace("a","A");
System.out.println(newstr);
六、判断字符串的开始结尾
(1)startsWith();判断当前字符串的前缀是否是是参数指定的字符串
Str.startsWith(Stirng prefix);
Prefix:前缀的字符
(2)endsWith();判断当前字符串的后缀是否是是参数指定的字符串
Str.endsWith(String suffix);
Sufifix:后缀字符
String mun = “22045612”;
Boolean b = num1.startsWith(“22”);
String num1 ="22015614";
String num2 = "214021378";
boolean b =num1.startsWith("22");
boolean b2 = num1.endsWith("78");
boolean b3 = num2.startsWith("22");
boolean b4 = num2.endsWith("78");
System.out.println("字符串num1是以“22”开始的吗?" + b);
System.out.println("字符串num1是以“78”结束的吗" + b2);
System.out.println("字符串num2是以“22”开始的吗?" + b3);
System.out.println("字符串num2是以“78”结束的吗?" + b4);
七、判断字符串是否相等(内存,内容是否一致,返回类型为boolean)
7.1、equalsIgnoreCase()
字符串比较是忽略大小写
Str.equalsIgnoreCase(String otherstr)
Str,Otherstr:是参加比较的字符串对象
7.2、Equals()
字符串比较是区分大小写
Str.equals(String otherstr)
String s1 = new String("abc");
String s2 = new String("ABC");
String s3 = new String("abc");
boolean b= s1.equals(s2);
//使用equals比较s1,s2
boolean b2 = s1.equalsIgnoreCase("s2");
//使用equalsIgnoreCase比较s1,s2
System.out.println(s1 + "equals" + s2 +":" + b);
System.out.println(s1 + "equalsIgnoreCase" + s2 + ":" + b2);
九、按字典顺序比较两个字符串
该比较基于字符串各个字符的Unicode值
9.1、compareTo();
Str.compare To(String otherstr)
Str,othestr 参加比较的两个字符串对象
9.2、CompareTo()方法只有在equals(Object)方法返回true时才返回
String str2 = new String("a");
String str3 = new String("c");
System.out.println(str + "compareTo" + str2 + ":" + str.compareTo(str2));
//将str与str2的比较结果输出
System.out.println(str + "compareTo" + str3 + ":" +str.compareTo(str3));
//将str与str3的比较结果输出
十、字符串的大小转换
(1)toLowerCase();
String newstr = str.toLowerCase();
//实现小写转换
(2)toUpperCase();
String newstr2 = str.toUpperCase();
//实现大写转换
十一、字符串分割
11.1、Split(String sign);
Sign为分割字符串的分割符,也可是正则表达式
11.2、Split(String sign,int limit)
Limit:限制的分割次数
String str = new String("abc,def,ghi,gkl");
String[] newstr = str.split(",");
for(int i=0;i< newstr.length;i++){
System.out.println(newstr[i]);
}
String[] newstr2 = str.split(",",2);
for(int j=0;j<newstr2.length;j++){
System.out.println(newstr2[j]);
}
十二、格式化字符串
12.1、Format()创建格式化的字符串
format(String format,Object...args);
Format 格式字符串
Args 格式字符串中由格式说明符引用的参数,如果还有格式说明符以外的参数,则忽略这些额外的参数,此参数的数目是可变的,可以为0
12.2、format(Local l,String format,Object...args)
L :格式化过程中要应用的语言环境,如果1为null,则不进行本地化
Format:格式化字符串
Args:
12.3、日期和时间字符串格式化
12.3.1、常用日期格式转换符
转换符 | 说明 | 示列 |
%te | 一个月中的某一天(1--31) | 2 |
%tb | 指定语言环境的月份简称 | Feb(二月) |
%tB | 指定语言环境的月份全称 | February(二月) |
%tA | 指定语言环境的星期几全称 | Monday(三月) |
%ta | 指定语言环境的星期几简称 | Mon(三月) |
%tc | 包括全部日期的时间信息 | 星期二 三月 25 13:27:22 |
%tY | 4位年份 | 2008 |
%tj | 一年中的第几天 | 085 |
%tm | 月份 | 03 |
%td | 一个月中的第几天(01 -- 31) | 02 |
%ty | 2为年份 | 08 |
Date date = new Date();
String year = String.format("%tY",date);
String month = String.format("%tb", date);
String day = String.format("%td", date);
System.out.println("今年是:" + year + "年");
System.out.println("现在是:" + month);
System.out.println("今天是:" + day + "号");
12.3.2、时间格式化
时间格式转化符
转换符 | 说明 | 示例 |
%tH | 2位数字的24小时制的小时(00 -- 23) | 14 |
%tI | 2位数的12小时制的小时(01 -- 12) | 05 |
%tk | 2位数字的24小时制的小时(0 -- 23) | 5 |
%tl | 2位数字的12小时制的小时(1 --12) | 10 |
%tM | 2位数的分钟(00 -- 59) | 02 |
%tS | 2位数的秒数(00 --60) | 12 |
%tL | 3位数字的毫秒数(000 --999) | 920 |
%tN | 9位数的毫秒数 |
|
%tp | 指定语言环境下上午或下午的标记 | PM(英文),上午(中文) |
%tz | 相对于GMT RFC 82 格式的数字区偏移量 | + 0800 |
%tZ | 时区缩写形式的字符串 | CST |
%ts | 1970-01-01 00:00:00至现在的经过的秒数 |
|
%tQ | 1970-01-01 00:00:00至现在的经过的毫秒数 |
|
时间格式化 时间格式化
转换符 | 说明 | 示例 |
%tF | “年-月-日”格式(四位年份) |
|
%tD | “年/月/日”格式(两位年份) |
|
%tc | 全部日期和时间信息 | 星期二 三月 25 16:20:00 CST 2008 |
%tr | “时:分:秒:PM(AM)”格式(12时制) | 03:33:15 下午 |
%tT | “时:分:秒:”格式(24时制) | 15:13:50 |
%tR | “时:分”格式(24时制) | 15:12 |
12.4、常规类型格式化
12.4.1、常规转换符
转换符 | 说明 | 示例 |
%b %B | 结果被格式化为布尔型 | True |
%h %H | 结果被格式化为散列码 | A05A5198 |
%s %S | 结果被格式为字符串类型 | “abcd” |
%c %C | 结果被转为字符类型 | ‘a’ |
%d | 结果被格式化为十进制 |
|
%o | 结果被格式化为八进制 |
|
%x %X | 结果被格式化为十六进制 |
|
%e |
|
|
|
|
|
|
|
|
十三、使用正则表达式
13.1 正则表达式中的元字符
元字符 | 正则表达式中的元字符写法 | 意义 |
\d | \\d | 代表任意一个字符 |
\D | //D | 代表0 --9的任何一个数字 |
\s | \\s | 代表空白字符,“\t”,”\n” |
\S | \\S | 代表非空白字符 |
\w | \\w | 代表可用作标识符的字符,但不包括“$” |
\W | \\W | 代表不可用作表示符的字符 |
\p{Lower} | \\p{Lower} | 代表任何小写字母a --z |
\P{Upper} | \\p{Upper} | 代表大写字母A --Z |
\p{ASCII} | \\p{ASCII} | ASCII字符 |
\{Alpha} | \\p{Alpha} | 字符字母 |
\p{Digit} | \\p{Digit} | 十进制数字,即0 --9 |
\p{Alnum} | \\p{Alnum} | 数字或字母字符 |
\p{Punct} | \\p{Punct} | 表点符号 |
\p{Graph} | \\p{Graph} | 可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} | \\p{Print} | 可打印字符:[\p{Graph}\x20] |
\p{Blank} | \\p{Blanck} | 空格或制表符:[\t] |
\p{cntrl} | \\{cntrl} | 控制字符:[\x00-\xlF\x7F] |
使用正则表达式必须要使用转意字符(\),否则代表的是普通意思
元字符:正则表达式中可以用[](中括号)括起若个字符来表示,该元字符可以代表方括号中任意一个元字符
- [^456]:代表4,5,6之外的任意一个字符
- [a - r]:代表a - r中的任意一个字符
- [a-d&&[^bc]]:代表字母a,d(差运算)
- [a-o&&[def]]:代表字母d,e,f(交运算)
- [a - e[g - z]]:代表a -e 或g -z 中的任何一个字母(并运算)
正则表达式中允许使用限定修饰符来限定元字符出现的次数 限定修饰符
限定修饰符 | 意义 | 实例 |
? | 0次或1次 | A? |
* | 0次或多次 | A* |
+ | 一次或多次 | A+ |
{n} | 正好出现n次 | A{2} |
{n,} | 至少出现n次 | A{3,} |
{n,m} | 出现n到m次 | A{2,6} |
Matches():检测匹配的字符串是否满足给定的字符串;调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同Pattern.matches(regex,str )
Regex:匹配字符串的正则表达式
if(str1.matches(regex)){
//判断字符串变量是否与正则表达式匹配
System.out.println(str1 + "是一个合法的E_mail地址格式" );
}
字符串生成器
成功创建的字符串,其长度是固定的,内容是不能被改变的和编译的。
(1)SringBuilder() 初始容量16个字符,可指定字符长度,能根据附加的字符自动增长容量(当附加的字符长度超过16个字符)
toString()可动态的执行添加,删除,插入等编辑操作
Int,char,boolean,String,double,通过该方法的多个重载形式,可实现接受任何类型的数据
append(content); 向字符串生成器中追加内容
Insert(int offset arg);向字符串生成器中的指定位置插入数据
Delete(int start,int end);移除此序列的子字符串中的字符,该子字符串从指定的start处开始,一直到索引end -1处的字符,如果不存在这样的字符,则一直到序列的尾部,如果start等于end,则不发生任何改变
快捷键
新建:shift + alt + N
关闭当前编辑框:ctrl + w
关闭所有编辑框:ctrl + shift + w
查找/替换:ctrl +F