Java (六、String类和StringBuffer)

Java String 类

字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

创建字符串

        // ==比较的是字符串在栈中存放的首地址,而equals()比较的是两个字符串的内容是否相同     //普通的声明字符串的方法,只会在字符串常量池里开辟空间,并且开辟空间之前,会检查字符串常量池里是否已存在
        //相同的数据,如果有,直接指向已存在的数据,如果没有会在字符串常量池里开辟一个新的空间
        String s = "ccy";
        String s2 ="ccy";
        System.out.println(s == s2);
        System.out.println(s.equals(s2));

        //实例化声明字符串的方法,会先在堆中存放数据,将数据的首地址保存在栈内,然后检查字符串常量池是否存在
        //相同的数据,如果没有则会在字符串常量池中开辟一个新的空间来存放字符串数据,如果有则声明完毕。
        String s3 = new String("jredu");
        String s4 = new String("jredu");
        System.out.println(s3 == s4);
        System.out.println(s3.equals(s4));

        String s5 = "jereh";
        String s6 = new String("jereh");
        System.out.println(s5 == s6);
        System.out.println(s5.equals(s6));        

运行图:

关于字符串在内存空间中存放的示例图:

String 方法:

1、字符串长度

用于获取有关对象的信息的方法称为访问器方法。

String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。

String string = new String("字符串长度");
int length = string.length();
System.out.println(length);

运行图:

2、连接字符串

String 类提供了连接两个字符串的方法:

1、string1.concat(string2);返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法

2、更常用的是使用‘+‘操作符来连接字符串

下面是一个例子:

public class Demo06 {
    public static void main(String[] args) {
        String s = new String("张三,");
        String hello = new String("你好!");
        String sentence = s.concat(hello);
        System.out.println(sentence);
    }
}

运行图:

3、分割字符串成数组

string.split(参数);参数指从哪个字符分割

例子:

package day6;
import java.util.Arrays;
public class Demo09 {
    public static void main(String[] args) {
        String sing = "长亭外 古道边 芳草碧连天 晚风拂柳笛声残 夕阳山外山 ";
        String[] printsing;
        printsing = sing.split(" ");
        System.out.println(Arrays.toString(printsing));
    }
}

运行图:

4、 toUpperCase()让小写的字符串变为大写的字符串

toLowerCase()让大写的字符串变为小写的字符串

equalsIgnoreCase()字符串忽略大小写进行比较

例子:

public class test {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "ABC";
        String s3 = s1.toUpperCase();
        String s4 = s2.toLowerCase();
        System.out.println(s3);
        System.out.println(s4);
        System.out.println(s1.equals(s4));
        System.out.println(s2.equals(s3));
        System.out.println(s1.equalsIgnoreCase(s2));
    }
}

运行图:

5、其他常用的方法

a、indexOf()获取字符串中某个字符或字符串首次出现的位置,若没有出现则返回-1

b、lastIndexOf()获取字符串中某个字符或字符串最后一次出现的位置,若没有出现则返回-1

c、substring()从字符串的那个索引开始截取,获得一个新的字符串;两个参数的第一个参数是截取开 始的位置(包含),第二个参数是结束的位置(不包含)

d、trim()去掉字符串或者字符前后的空格

例子:

public class Demo08 {
    public static void main(String[] args) {
        String s = "我爱北京天安门!天安门上太阳升!";
        //indexOf()获取字符串中某个字符或字符串首次出现的位置,若没有出现则返回-1
        System.out.println(s.indexOf("天"));
        //lastIndexOf()获取字符串中某个字符或字符串最后一次出现的位置,若没有出现则返回-1
        System.out.println(s.lastIndexOf("天"));
        //substring()从字符串的那个索引开始截取,获得一个新的字符串
        String newS = s.substring(8);
        System.out.println(newS);
        //两个参数的第一个参数是截取开始的位置(包含),第二个参数是结束的位置(不包含)
        String newS3 = s.substring(2, 4);
        System.out.println(newS3);
        //trim()去掉字符串或者字符前后的空格
        String s2 = "   杰 瑞 教 育        ";
        String newS4 = s2.trim();
        System.out.println(s2);
        System.out.println(newS4);
    }
}

运行图:

StringBuffer 类

当对字符串进行修改的时候,需要使用 StringBuffer

和 String 类不同的是,StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuffer的创建

例子:

StringBuffer sBuffer = new StringBuffer("青春无悔");
System.out.println(sBuffer);

运行图:

StringBuffer和String的区别:

Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的

concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!

StringBuffer和String之间的转换:

例子:

public static void main(String[] args) {
        String s = "conversion"
        //String ---> StringBuffer
        StringBuffer sb = new StringBuffer(s);
        //StringBuffer ---> String
        String s2 = sb.toString();
        System.out.println(sb);
  System.out.println(s2);
        scanner.close();
    }

运行图:

StringBuffer的常用方法:

a、append(string s)将指定的字符串追加到此字符序列。

public static void main(String[] args) {
        StringBuffer buffer = new StringBuffer("abcde");
        buffer.append("f");
        System.out.println(buffer);
}

运行图:

b、 reverse() 将此字符序列用其反转形式取代。

public static void main(String[] args) {
        StringBuffer sBuffer = new StringBuffer("abcde");
        sBuffer.reverse();
        System.out.println(sBuffer);
    }

运行图:

c、 delete(int start, int end) 移除此序列的子字符串中的字符。

public class Demo04 {
    public static void main(String[] args) {
        StringBuffer sBuffer = new StringBuffer("abcde");
        sBuffer.delete(1, 3);
        System.out.println(sBuffer);
    }

运行图:

d、 insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。

public static void main(String[] args) {
        StringBuffer sBuffer = new StringBuffer("abcde");
        sBuffer.insert(2,"!");
        System.out.println(sBuffer);
    }

运行图:

e、replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。

public static void main(String[] args) {
        StringBuffer sBuffer = new StringBuffer("abcde");
        sBuffer.replace(1, 4,"*");
        System.out.println(sBuffer);
    }

运行图:

时间: 2024-10-21 07:23:24

Java (六、String类和StringBuffer)的相关文章

Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱

Java的知识点21--String类.StringBuffer和StringBuilder.不可变和可变字符序列使用陷阱 原文链接 https://blog.csdn.net/qq_39368007/article/details/84033272 String类 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串. String测试代码 pac

【java】String类和StringBuffer类常用操作

String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类.所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. String类主要方法的使用一.创建并初始化字符串: String s = "hello!"; //使用字符串常量直接初始化 String(); //使用构造方法

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始

新手学JAVA(二)----String类与StringBuffer类的区别

在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类). 下面先简单的说一下两者的区别. String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同. (1) String类 该类一旦产生一个字符串,其对象就不可变.String类的内容和长度是固定的.如果程序需要获得字符串的信息需要调用系统提供的各种字符串操作方法实现.虽然通过各种系统方法可以对字符串施加操作,但这并不改变对象实例本身,而是生成一个新的实例.系统为Stri

Java中String类StringBuffer类和StringBuilder类的区别

首先阐述String类和StringBuffer类的区别,String类是常量,不能添加,而StringBuffer则是一个字符缓冲区,可以往里面添加字符串.比如说: <span style="font-size:18px;">String str = "helloworld"; str += "welcome";</span> 这里其实过程是这样的:生成了String对象 "helloworld" 引

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

【java】String类的基本方法

Java的String类基本方法 一.构造函数 函数 返回值 作用 String(byte[] bytes) String 通过byte数组构造字符串对象 String(char[] chars) String 通过char数组构造字符串对象 String(String string) String 拷贝一个值为string的字符串对象 String(StringBuffer buffer) String 通过StringBuffer构造字符串对象 二.String类的基本方法 函数 返回值 作

Java中String类学习总结

java中String类的使用频率非常高,本人在学习此模块时,认为下列几点知识值得注意: 一.String是不可变对象 java.lang.String类使用了final修饰,不能被继承.Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的.String是常量,其对象一旦构造就不能再被改变.换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容.而最

【转载】Java中String类的方法及说明

转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(Strin

深入分析Java的String类的方法与特点

字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 JDK中提供一个名为String的类,对应字符串这个变量类型. 源码分析 既然JDK中的String类对应了字符串变量类型,为了熟练地掌握Java中字符串相关的技能,我们必须深入地分析和研究一下这个类.编码界有一句名言叫做 "源码面前,了无秘密",因此,我们第一步就是来看看String类