当前位置:首页 > 芯闻号 > 充电吧
[导读]关于Java中的:String字符串、StringBuffer 、StringBuilder                  --------- android培训、java培训、java学习型技

关于Java中的:String字符串、StringBuffer 、StringBuilder                  --------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
--< java.lang >-- String字符串:   String类概述   字符串这类事物,被看成是一个对象,字符串对象   就有描述这个对象类,java.lang.String类   是被final修饰的类,不能去继承String类   String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。   java中,写上 "" 就是String类的对象实例


java中用String类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见数据进行方便的操作。对象封装后,可以定义N多属性和行为。

如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象。

特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。

//===============================================================

String s1 = "abc"; // s1指向的内存中只有一个对象abc。

String s2 = new String("abc"); // s2指向的内容中有两个对象abc、new 。

System.out.println(s1==s2);//false

System.out.println(s1.equals(s2));//true ,字符串中equals比较的是字符串内容是否相同。

//===============================================================

字符串的方法:

1:构造方法:将字节数组或者字符数组转成字符串。 new String()

  A. 将字节数组转成字符串      String(byte[] bytes)将所有的元素转成字符串对象,但是查询本机默认码表GBK      String(byte[] bytes,int start,int length)将字节数组一部分转成字符串对象,查询GBK   B. 将字符数组转成字符串      String(char[] ch)将所有的元素转成字符串对象,不查询编码表      String(char[] ch,int start ,int length)将字符串数组一部分转成字符串对象,不查编码表

     String s1 = new String();//创建了一个空内容的字符串。 

     String s2 = null;//s2没有任何对象指向,是一个null常量值。

     String s3 = "";//s3指向一个具体的字符串对象,只不过这个字符串中没有内容。

     //一般在定义字符串时,不用new。

     String s4 = new String("abc");

     String s5 = "abc"; 一般用此写法


2. String的判断方法,结果都是布尔   A. equals(Object obj)比较两个字符串是否完全相等   B. equalsIgnoreCase(String s)比较两个字符串是否完全相等,忽略大小写   C. startsWith(String s)判断一个字符串是否以另一个字符串开头   D. endsWith(String s)判断一个字符串是否以另一个字符串结尾   E. isEmpty()判断一个字符串是否有内容,一个字符都没有结果就是真   F. contains(String s)判断一个字符串是否包含另一个字符串3. String类的获取方法   A. char charAt(int)传递索引,返回单个字符   B. int indexOf(char ch)传递字符,返回第一次出现索引,找不到返回<0   C. int indexOf(char ch,int fromindex)传递字符,返回第一次出现索引,找不到返回<0,指定开始查找位置   D. int indexOf(String s)   E. int indexOf(String s,int fromindex)   F. int lastIndexOf(char ch)传递字符,返回最后次出现索引,找不到返回<0,反向索引   G. int lastIndexOf(char ch,int fromindex)传递字符,返回最后次出现索引,找不到返回<0     第二个参数,过滤这个索引以后的全部内容   H. int lastIndexOf(String s)   I. int lastIndexOf(String s,int fromindex)   J. int length()获取字符串中字符串个数,字符串的长度   K. String substring(int start,int end)获取字符串一部分,包含头,不包含尾   L. String substring(int index)获取一部分,从这个索引开始,后面全要 //截取4. String类的转换方法   A. getBytes() 将字符串转成字节数组,查询编码表   B. toCharArray()字符串转成字符数组,不查询编码表   C. toUpperCase()转成大写   D. toLowerCase()转成小写   E. static valueOf()任意类型转成字符串5. String类的其他方法   A. String[] split()切割字符串   B. String replace()替换字符串  注意:修改后变成新字符串,并不是将原字符串直接修改。   C. String trim()去掉两端空格   D. int compareTo()字典顺序比较字符串       //如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个      //小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。   E .String concat(string); //对字符串进行追加。


//===============================================================

--< java.lang >-- StringBuffer字符串缓冲区:

构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。

特点:

1:可以对字符串内容进行修改。

2:是一个容器。

3:是可变长度的。

4:缓冲区中可以存储任意类型的数据。

5:最终需要变成字符串。

容器通常具备一些固定的方法:

1,添加。

StringBuffer append(data):在缓冲区中追加数据。追加到尾部。

StringBuffer insert(index,data):在指定位置插入数据。

2,删除。

StringBuffer delete(start,end);删除从start至end-1范围的元素

StringBuffer deleteCharAt(index);删除指定位置的元素

//sb.delete(0,sb.length());//清空缓冲区。

3,修改。

StringBuffer replace(start,end,string);将start至end-1替换成string

void setCharAt(index,char);替换指定位置的字符

void setLength(len);将原字符串置为指定长度的字符串

4,查找。(查不到返回-1)

int indexOf(string); 返回指定子字符串在此字符串中第一次出现处的索引。

int indexOf(string,int fromIndex);从指定位置开始查找字符串

int lastIndexOf(string); 返回指定子字符串在此字符串中最右边出现处的索引。

int lastIndexOf(string,int fromIndex); 从指定的索引开始反向搜索

5,获取子串。

string substring(start); 返回start到结尾的子串

string substring(start,end); 返回start至end-1的子串

6,反转。

StringBuffer reverse();字符串反转




//===============================================================

--< java.lang >-- StringBuilder字符串缓冲区:

JDK1.5出现StringBuiler;构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。

方法和StringBuffer一样;

StringBuffer 和 StringBuilder 的区别:

StringBuffer线程安全。

StringBuilder线程不安全。

单线程操作,使用StringBuilder 效率高。

多线程操作,使用StringBuffer 安全。

//===============================================================

StringBuilder sb = new StringBuilder("abcdefg");

sb.append("ak");  //abcdefgak

sb.insert(1,"et");//aetbcdefg

sb.deleteCharAt(2);//abdefg

sb.delete(2,4);//abefg

sb.setLength(4);//abcd

sb.setCharAt(0,'k');//kbcdefg

sb.replace(0,2,"hhhh");//hhhhcdefg


//想要使用缓冲区,先要建立对象。

StringBuffer sb = new StringBuffer();

sb.append(12).append("haha");//方法调用链。

String s = "abc"+4+'q';

s = new StringBuffer().append("abc").append(4).append('q').toString();

//===============================================================

class  Test{

public static void main(String[] args) {

String s1 = "java";

String s2 = "hello";

method_1(s1,s2);

System.out.println(s1+"...."+s2); //java....hello


StringBuilder s11 = new StringBuilder("java");

StringBuilder s22 = new StringBuilder("hello");

method_2(s11,s22);

System.out.println(s11+"-----"+s22); //javahello-----hello

}

public static void method_1(String s1,String s2){

s1.replace('a','k');

s1 = s2;

}

public static void method_2(StringBuilder s1,StringBuilder s2){

s1.append(s2);

s1 = s2;

}

}



案例:字符串缓冲区自定义翻转 public class StringBufferTest {  public static void main(String[] args) {   StringBuilder builder = new StringBuilder();   builder.append("123true");   myReverse(builder);   System.out.println(builder);  }  //字符串缓冲区翻转,用户传递的就是一个缓冲区,翻转后,返回一个缓冲区  private static StringBuilder myReverse(StringBuilder builder)  {   //将缓冲区转成String类型   String s = builder.toString();   //通过字符串,转成字符数组   char[] ch = s.toCharArray();   //对数组进行翻转   for(int x=0,y=ch.length-1;x<y;x++,y--)   {     char temp = ch[x];     ch[x] = ch[y];     ch[y] =temp;   }   //将数组变成缓冲区返回   return builder.delete(0, builder.length()).append(ch);  }  //使用数组翻转,使用一个int类型数组,实现翻转  private static void method()  {   int[] arr ={3,2,1,5,6,9};   for(int x=0,y=arr.length-1;x<y;x++,y--)   {    //定义零时变量,存储数组的0下标:整体思路就是头和尾互换    int temp = arr[x];    //将数组的    arr[x]=arr[y];    arr[y]= temp;   }   for(int x=0; x<arr.length; x++)   {    System.out.println(arr[x]);   }  } }
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭