java = stringbuffer_Java String StringBuffer

1、String类

(1)概述:

String类代表字符串,字符串是常量,创建之后不能更改,一旦这个字符串确定了,就会在内存中(堆中的常量池)生成这个字符串,字符串本身不能改变,但变量的地址是能够改变的,字符串的本质是一个字符的数组。

(2)字符串的构建

字符串中有大量的的重载构造方法,通过String类的构造方法可以完成字符穿的构建,还可以通过双引号的方式进行创建对象

两者的是否相同?

package com.oracle.demo02;

public class Demo02 {

public static void main(String[] args) {

String str1="aaabbb";

String str2=new String("aaabbb");

System.out.println(str1==str2);

System.out.println(str1.equals(str2));

}

}

8ea8d0463177cbd173368668356121cc.png

str1创建在内存中只有一个对象

str2创建在内存中有两个对象,一个 new的对象在堆中,一个字符串本身对象,在字符串常量池中

(3)String构造方法

-------------------String()初始化一个新创建的String对象,表示一个空字符序列

例如:String s1 = new String(); //创建String对象,字符串中没有内容

------------------- String(byte[  ] bytes)通过平台使用的默认字符解码指定byte数组,构建新的String

例如:byte[] bys = new byte[]{97,98,99,100};

String s2 = new String(bys);

--------------------String(byte[  ] bytes  int offset  ,int  length )通过平台使用的默认字符解码指定byte子数组,构建新的String

例如:String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素

--------------------String(char[ ] values) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。

例如:

char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};

String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容

--------------------分配一个新的 String,它包含取自字符数组参数一个子数组的字符。

例如:

String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

42aced4cd2f7ddf16513b24846abd65b.png

(4)String类的方法查找

---------------length()返回字符串的长度

String aaa="abcdefgrthajnsdjkcv";

int b=aaa.length();

System.out.println(b);

44e1d568e2444317abddace6d54f95cb.png

----------------------获取部分字符串substring(int beginindex)或者substring(int beginIndex ,  int endIndex)

---------------------判断是否以xxx为开头starsWith(xxx)返回值为true或false

----------------------判断是否以xxx为结尾endsWith(xxx)返回值为true或false

----------------------判断字符串是否包含另一个字符contains( char   s)判断是否包含指定字符串,包含返回true,不包含返回false

String str = "abcde";

int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1

boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false

----------------------- 将字符串转成一个字符数组。或者字节数组。.getBytes()转换成一个数组。toCharArray()转换成一个字符数组

String str = "abcde";

char[] chs = str.toCharArray();

byte[] bytes = str.getBytes();

3917efb587aaf4476f8b86bfaef9cd52.png

-------------------------- 判断两个字符串中的内容是否相同equals()

--------------------------判断两个String是否相等,不考虑大小equalsIgnoreCase()

String str = "abcde";

String str2 = "abcde";

String str3 = "hello";

boolean b1 = str.equals(str2);

boolean b2 = str.e/quals(str3);

---------------------------------获取该字符串的内容toString()

public class Demo02 {

public static void main(String[] args) {

String str = new String("hello");

System.out.println( str.toString() );

System.out.println(str);

}

}

4d783f0c75d7f3d7db3da449c3c78192.png

还有:

l 判断该字符串的内容是否为空的字符串

l 获取给定的字符,在该字符串中第一次出现的位置

l 获取该字符串中指定位置上的字符

l 把该字符串转换成 小写字符串

l 把该字符串转换成 大写字符串

l 在该字符串中,将给定的旧字符,用新字符替换

l 在该字符串中, 将给定的旧字符串,用新字符串替换

l 去除字符串两端空格,中间的不会去除,返回一个新字符串

public class Demo03 {

public static void main(String[] args) {

String str="hellojavanihaojava.txt";

//求字符串长度

System.out.println(str.length());

//截取字符串

System.out.println(str.substring(3));

System.out.println(str.substring(3,5));

//判断前缀

System.out.println(str.startsWith("b"));

//判断结尾

System.out.println(str.endsWith(".txt"));

//判断一个字符串中是否包含另一个字符串

System.out.println(str.contains("java"));

//返回一个字符串在另一个字符串中第一次出现的索引值

//如果不存在该字符串则返回-1

System.out.println(str.indexOf("5"));

String str1="nihaojava";

//将字符串转为字节数组

byte[] b1=str1.getBytes();

for(int i=0;i

System.out.print(b1[i]+" ");

}

//将字符串转为字符数组

char[] c1=str1.toCharArray();

for(int j=0;j

System.out.print(c1[j]+" ");

}

//判断两个字符串是否内容相同(忽略大小写)

System.out.println(str1.equalsIgnoreCase("NiHaojava"));

}

}

String类方法使用练习

题目一:获取指定字符串中,大写字母、小写字母、数字的个数。

package demo01;

public class Demo03 {

public static void main(String[] args) {

String str="ADSFGbaersg1123125337";

int bigCount = 0; //大写字母的个数

int smallCount = 0; //小写字母的个数

int numberCount = 0; //数字的个数

for (int i=0; i < str.length(); i++) {

char ch = str.charAt(i); //获取指定位置上的字符

if (ch>='A' && ch<='Z') {

bigCount++;

} else if (ch>='a' && ch<='z') {

smallCount++;

} else if (ch>='0' && ch<='9') {

numberCount++;

}

}

System.out.println("大写字母个数:"+bigCount);

System.out.println("小写字母个数:"+smallCount);

System.out.println("数字个数:"+numberCount);

}

}

19c0527d21a4477ab4d120a3eae1d28d.png

l 题目二:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。

package demo01;

public class Demo04 {

public static void main(String[] args) {

String str="aA";

//获取第一部分为字符串

String start = str.substring(0,1);

//获取第二部分为字符串

String end = str.substring(1);

//把第一部分字符串转换成大写字母,把第二部分字符串转换成小写字母

String big = start.toUpperCase();

String small = end.toLowerCase();

//把两部分字符串连接在一起,得到一个完整的字符串

System.out.println(big+small);

}

}

4dc028de6fd85b7851b13fd925ba2b69.png

l 题目三:查询大字符串中,出现指定小字符串的次数。如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。

public static int getCount(String big, String small){

int count = 0; //出现小串的次数

int index = -1;//出现小串的位置

/*

while的循环条件三步骤:

步骤一. big.indexOf(small) 获取小串在大串中出现的位置

步骤二. 把小串出现的位置,赋值给变量index

步骤三. 判断出现的位置是否为-1, 如果位置等于-1,说明大串中已经查询不到小串了;如果位置不等于-1,那么,进行循环,完成次数累加与修改大串的操作

*/

while ((index = big.indexOf(small)) != -1 ){

count++;//出现次数+1

//更改大串内容

big = big.substring(index+1);

}

return count;

}

练习2

用代码演示String类中的以下方法的用法

(1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true

(2)char charAt(int index): 返回索引上的字符

(3)String toLowerCase(): 字符串转成小写

(4)String toUpperCase(): 字符串转成大写

(5)String replace(char oldChar, char newChar): 将字符串中的老字符,替换为新字符

(6)String repalce(String old, String newstr): 将字符串中的老字符串,替换为新字符串

(7)String trim(): 去掉字符串两端空格

public static void main(String[] args) {

//(1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true

String str1=new String();

boolean a=str1.isEmpty();

System.out.println(a);

//(2)char charAt(int index): 返回索引上的字符

String str2="abcde";

char b=str2.charAt(2);

System.out.println(b);

//(3)String toLowerCase(): 字符串转成小写

String str3="ABCDEFG";

String c=str3.toLowerCase();

System.out.println(c);

//(4)String toUpperCase(): 字符串转成大写

System.out.println(c.toUpperCase());

//(5)String repalce(char oldChar, char newChar): 将字符串中的老字符,替换为新字符

String str4="abc";

String d=c.replace("b","s");

System.out.println(d);

//(6)String repalce(String old, String newstr): 将字符串中的老字符串,替换为新字符串

String e=d.replace(d, "falg");

System.out.println(e);

//(7)String trim(): 去掉字符串两端空格

String str5=" ffff ";

System.out.println(str5);

String f=str5.trim();

System.out.println(f);

}//main

}/

2、字符串缓冲区

字符串缓冲区支持可变的字符串,

StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

(1)StringBuffer类

StringBuffer方法的使用:

fa7ff0d725f8149e0fcc6198cefdf95a.png

-----------------append():将指定字符串添加到此字符序列

----------------delete(int start,int end)删除从start到end的字符

-----------------insert(int offset ,String str)将str插入该字符串中

-----------------replace(int start ,int end .String str)使用str替换该字符串中从start到end的字符

-----------------reverse()将字符串使用反序取代

-----------------toString()返回此序列中数据的字符串表现形式

创建一个字符串缓冲区对象。用于存储数据。

StringBuffer sb = new StringBuffer();

sb.append("haha"); //添加字符串

sb.insert(2, "it");//在指定位置插入

sb.delete(1, 4);//删除

sb.replace(1, 4, "cast");//替换指定范围内的内容

String str = sb.toString();

练习:int[] arr = {34,12,89,68};将一个int[]中元素转成字符串  格式 [34,12,89,68]

public static String toString_2(int[] arr) {

StringBuffer sb = new StringBuffer();

sb.append("[");

for (int i = 0; i < arr.length; i++) {

if(i!=arr.length-1){

sb.append(arr[i]+",");

}else{

sb.append(arr[i]+"]");

}

}

return sb.toString();

}

StringBuilder类它也是一个可变的字符序列它比 StringBuffer 要快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值