JAVA.long.String类
构造(常用)
- 常量对象构建:
String s1="abc";
- 构造方法
String (String S1); String (char a[]); Stirng (char a[],int StartIndex,int Count); String (byte b[]);
- 其他方法
Stirng s1="abs".toUpperCase();
缺点:字符串对象的不变性
String对象创建后不能被修改,是不可以改变的
修改:创建了新的对象,所指的内存空间不同。
如果频繁改变字符串,使用StringBuffer或者StringBuilder(点击前面查看)
常用方法
提示
src在软件中都是指source,源头。
sub表示相减,英文是subtract
基础
String length();//返回字符串长度
转化
//输入占据位置 System.out.printf("%10d %.2f\n",12002,100.1); String str3=String.format("%10d %.2f",12002,100.1); String toUpperCase();//将字符转化为大写字符 String toLowerCase();//将字符转化为小写字符
比较
boolean String equals(String s2);//比较两者字符序列是否相同 boolean String equalslgnoreCase(String s2)//比较过程中忽略符号大小写 boolean startsWith(String s);//判断当前字符串对象的前缀是否是参数s制定的字符串 boolean endsWith(String s);//判断当前字符串对象的后缀是否是参数s指定的字符串; boolean regionMatches(int firstStart ,String other,int otherStart ,int length);//从当前 字符串索引 firstStart位置处开始,取长度为length的一个字串,并将这个子串个参数other指定的一个子串进行比较。 int compareTo(String s);//比较是否相同 int compareTolgnoereCase(String s);//比较时忽略大小写
截取连接
//截取 String substring (int startpoint);//截取字符 String substring (int startpoint ,int end);//左闭右开 //连接 String concat(String s)//将s连接到字符串后 //concat->concatenate
查询
String charAt(index);//返回索引处的char值 boolean contains(String s)//判断字符串中是否包含指定的字符或字符串。 int indexOf(String str);//判断str串是不是目标串的子串,如果是返回位置,否返回-1 int indexOf(String str,int fromlndex);//从fromlndex开始匹配 int lastIndexOf(String s); //返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 int lastIndexOf(String s,int fromlndexs);//从指定位置开始
与其他数据类型转换
与基本数据类型
//"100"-->100 String str1="100"; int i=Integer.parseInt(str1,10); // 前面写需要转化的字符串,后面写进制 System.out.println(i); //100->"100" String str21=100+""; String str211=""+100; String str22=String.valueOf(100);//转化成字符串的方法 System.out.println(str21); System.out.println(str211); System.out.println(str22); //Integer和Long 将数值转化为某进制的字符串 String str22=String.valueOf(100,10); // 前面写需要转化的数值,后面写进制
与数组
与字符数组
//char[] -> String(构造方法) String (char[]);//全部字符 String(char[],int offset,int length);//使用部分字符 //String -> char[](成员方法) char[] toCharArray();//存放全部字符串 void getChars(int start,int end,char c[],int offset);//存放部分字符串 public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
与其他数组
//数组->String String str1="123"; byte[] bytes=str1.getBytes(); System.out.println(Arrays.toString(bytes));//输出: //String->数组 String str13=new String(bytes);
字符串池(String Pool)
目的
JVM为了提高性能,减少内存开销,避免 字符串对象的重复创建。
在程序执行时,对于符合条件的字符串对象,先在String pool中查询是否存在
- 如果找到就返回
- 找不到,就创建新对象,然后返回
存放的对象
- 字符串常量
- 有限个字符串常量进行“+”运算的结果 (加号链接的是字符串的引用,不是常量相加)
- String的
intern()
方法返回的字符串对象
intern()方法
执行过程:
在程序执行时,
先在String pool中查询是否存在相同内容的String对象
- 如果有,取出引用并返回
- 如果没有,就创建新对象放入String Pool,然后返回新对象引用
测试代码
//提示“==”比较的是地址 public class Main { public static void main(String[] args) { //测试字符串常量 String str1="123123"; String str11="123123"; String str12="123"; String str2=new String("123123"); String str22=new String("123123"); System.out.println(str1==str11);//true System.out.println(str1==str12);//false System.out.println(str1==str2);//false System.out.println(str1==str22);//false System.out.println(str2==str22);//false //测试有限个常量“+”运算 String str3="123"; String str33="456"; String str4="123"+"456"; String str44="123456"; System.out.println(str4==str44);//true String str5=str3+str33; System.out.println(str4==str5); /* *结果:false *原因:str3,str33不是字符串常量,是字符串引用 */ //测试String.intern()方法 String str6=str5.intern(); System.out.println(str6==str4);//true } }
拼接、替换与分解
拼接
String str31="123"; String str32="456"; String str33=str31+str32; System.out.println(str33); for(int k=0;k<10;k++) { str1+=String.valueOf(k); //会产生大量无用序列,此时应该为 StringBUffer(保证线程安全,较慢)/StringBuilder(不保证线程安全,较快) System.out.println(str1); }
正则表达式(regex):
定义:
是对字符串操作的一中逻辑公式;是用事先定义好的一些特定字符及其组合,组成的“规则字符串”;用来表达对字符串的一种过滤逻辑。
是一种文本模式,描述在搜索文本时要匹配的1个或多个字符串。
作用: 作为分割(或其他作用)的标记
组成:
- 一些普通字符:
-
- 包括:大小写的字母和数字
- 和一些元字符:
注解:\x中第一个“\”代表转转义符,后面“\x”才是表达式
常用正则表达式
- “\d”代表0-9中的任何一个数字
- “\D”代表非数字字符
- “\d+”截取非数字
- “\D+”截取数字
相关方法
public boolean matches(String regex)
判断当前字符串对象是否和参数regex指定的正则表达式匹配
分解及替换方法
public boolean matches(String regex) //判断当前字符串对象是否和参数regex指定的正则表达式匹配 //分解 public String[] split(String regex); //替换 public String[] replaceFirst(String regex,String replacement //只替换第一个,用regex规则替换成replacement public String[] replaceAll(String regex,String replacement // 替换所有,用regex规则替换成replacement
注意:
如果分割后和没有发生变化,则不会产生新的对象,不同则产生新的对象,原理对象还存在
转StringBuffer
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15472893.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步