字符串例子java_Java字符串详解的实例介绍

1.创建对象

对于java程序中的字符串直接常量,JVM会使用一个字符串池来保存它们。当第一次使用某个字符串直接常量时,JVM会将它放入字符串池中进行缓存。在一般情况下,字符串池中的字符串对象不会被垃圾回收。当程序再次需要使用该字符串时,无需重新创建一个新的字符串就可以直接让引用变量直接指向字符串中已有的字符串。而使用new操作创建的字符串对象不指向字符串池中的对象,但是可以使用intern()方法使其指向字符串池中的对象。

public class StringDemo1 {

public static void main(String[] args){

String str1 ="abc";

String str2 ="abc";

String str3 =new String("abc");

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

System.out.println(str1==str3);//false

}

}

常见问题

String str3 =new String("abc");

创建了几个对象?

答:两个

String str ="ab"+"cd";

创建了几个对象?

答:一个。"ab"和"cd"都是常量被放在字符串池中。因此只创建了一个abcd字符串池中并将字符串abcd保存在字符串池中。

public class StringDemo1 {

public static void main(String[] args){

String str1 ="ab";

String str2 ="cd";

String str3 ="ab"+"cd";//创建对象并加入字符串池

String str4 =str1+str2;

String str5 =str1+"cd";

System.out.println(str3==str4);//false

System.out.println(str3==str5);//false

}

}

由上面代码可知:只有引号包含文本的方式才创建的String对象才能被添加到字符串池中,对于包含new方法新建对象的”+“连接表达式他所产生的新对象不会被加到字符串池中。

但是有一种情况需要引起我们的注意:

public class StringDemo1 {

private final static String str1 ="ab";

private final static String str2 ="cd";

public static void main(String[] args){

String str3 ="ab"+"cd";//创建对象并加入字符串池

String str4 =str1+str2;

String str5 =str1+"cd";

System.out.println(str3==str4);//true

System.out.println(str3==str5);//true

}

}

这又是为什么呢?原因是这样的,对于常量来讲。它的值是固定的,因此在编译期间就能被确定了。

将上面的代码稍加改变看看会出现什么情况。

public class StringDemo1 {

private final static String str1 ;

private final static String str2;

static{

str1="ab";

str2="cd";

}

public static void main(String[] args){

String str3 ="ab"+"cd";//创建对象并加入字符串池

String str4 =str1+str2;

String str5 =str1+"cd";

System.out.println(str3==str4);//false

System.out.println(str3==str5);//false

}

}

str1和str2虽然被定义为常量,但是她们美誉马上赋值,在运算出s的值前,她们何时被赋值,以及被赋什么值都是变数,因此性质和变量一样。只能在运行时被创建。

2.字符串方法

获取方法

•int length()

•char charAt(int index)根据位置获取某个字符

•int indexOf(int ch) 返回的是ch在字符串中第一次出现的位置

•int indexOf(int ch,int fromIndex)从fromIndex指定位置开始,获取ch在字符串中第一次出现的位置

•int indexOf(String str)

•int indexOf(String str,int fromIndex)

•int lastIndexOf(int ch)

判断方法

•boolean contains(String str) 另一种判断方法:if(str.index(str)!=-1)

•boolean startsWith(String str)

•boolean endsWith(String str)

•bolean isEmpty(String str)

•boolean equals(String str)

•boolean equalsIgnoreCase(String str);

转换方法

•将字符数组转换为字符串

构造函数

1.String(char[] chs)

2.String(char[] chs,offset,count)将字符数组中的一部分转成字符串。

静态方法

1.static String copyValueOf(char[] chs)

2.static String copyValueOf(char[] chs,int offset,int count)

3.static String valueOf(char[] )

4.static String valueOf(char[] chs,int offset,int count)

•将字符串转换成字符数组

char[] toCharArray

•将字符数组转换成字符串

•将字符串转换成字节数组

byte[] toBytes

替换方法

String replace(olderStr,newStr)

切割方法

String split(regex)

获取子串[编辑分类]

String subString(begin)

String subString(begin,end)包含头不包含尾

将字符串转换成大小写Android(10)

String toUpperCase()

String toLowerCase()

将字符串两端的空格去除

String trim()

对两个字符串进行自然顺序的比较

int compareTo(String str)

3.String 练习

1.字符串翻转

public class StringDemo2 {

public static void main(String[] args){

String str = "avdkfasjks";

reverseMethod_1(str);

}

public static void reverseMethod_1(String str){

for(int i=str.length();i>0;i--){

System.out.print(str.charAt(i-1));

}

}

}

2.获取最大相同子串

public class StringDemo2 {

public static void main(String[] args){

String str1 = "avdkfasjks";

String str2 = "ewavdrtte";

System.out.println(commonMaxSubstring(str1, str2));

}

public static String commonMaxSubstring(String str1,String str2){

int len = str1.length();

String str3 = null;

outer:

//i为子串的长度

for(int i = len;i>0;i--){

//j为子串的脚标

for(int j=0;j

str3=str1.substring(j,j+i);

if(str2.contains(str3))

break outer;

}

}

return str3;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C 语言中,可以使用函数库中的函数来实现字符串替换,例如使用 `strtok()` 函数来分割字符串,使用 `strcpy()` 和 `strcat()` 函数来拷贝和连接字符串。 以下是一个示例代码,用于在字符串中替换指定的字符串实例: ```c #include <stdio.h> #include <string.h> void replace(char *str, char *orig, char *rep) { char buffer[100]; char *p; while ((p = strstr(str, orig))) { strncpy(buffer, str, p - str); buffer[p - str] = '\0'; strcat(buffer, rep); strcat(buffer, p + strlen(orig)); strcpy(str, buffer); } } int main() { char str[100] = "hello world! hello world! hello world!"; char orig[] = "world"; char rep[] = "universe"; printf("Before: %s\n", str); replace(str, orig, rep); printf("After: %s\n", str); return 0; } ``` 输出结果如下: ``` Before: hello world! hello world! hello world! After: hello universe! hello universe! hello universe! ``` 在上面的代码中,`replace()` 函数接收三个参数:原始字符串 `str`、要替换的字符串 `orig` 和替换字符串 `rep`。该函数使用 `strstr()` 函数找到字符串 `str` 中第一个出现的字符串 `orig` 的位置,然后使用 `strncpy()` 函数将位置之前的字符串复制到缓冲区 `buffer` 中,并在缓冲区中添加替换字符串 `rep`。然后使用 `strcat()` 函数将剩余的字符串添加到缓冲区中,并使用 `strcpy()` 函数将缓冲区中的字符串复制回原始字符串 `str` 中。这样就可以将字符串中所有出现的字符串 `orig` 替换为字符串 `rep`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值