JAVA字符串(三)

一、Java String类

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

1.1创建字符串

创建字符串最简单的方法如下:

 

    String   yunban="云班教育";

 

在代码中遇到字符串常量时,这里的值是 "云班教育"",编译器会使用该值创建一个 String 对象。

和其它对象一样,可以使用关键字和构造方法来创建 String 对象。

String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串,比如提供一个字符数组参数:

 

实例:

   public class StringDemo{

   public static void main(String args[]){

      char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};

      String helloString = new String(helloArray);  

      System.out.println( helloString );

   }

}

以上实例运行结果如下:

                    ronoob

注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了

1.2、字符串长度 

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

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

实例:

public class StringDemo {

    public static void main(String args[]) {

        String site = "www.baidu.com";

        int len = site.length();

        System.out.println( "百度网址长度 : " + len );

   }

}

以上实例运行结果如下:

             百度网址长度:13

1.3、连接字符串

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

string1.concat(string2);

返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法,如:

"我的名字是 ".concat("Runoob");

 

更常用的是使用'+'操作符来连接字符串,如:

"Hello," + " runoob" + "!"

结果如下:

Hello,runoob!

实例:

   public class StringDemo {

    public static void main(String args[]) {     

        String string1 = "百度网址:";     

        System.out.println("1、" + string1 + "www.baidu.com");  

    }

}

以上实例运行结果如下:

                     百度网址:www.baidu.com

1.4、创建格式化字符串

我们知道输出格式化数字可以使用 printf() 和 format() 方法。

String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。

String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

如下所示:

System.out.printf("浮点型变量的值为 " +

                  "%f, 整型变量的值为 " +

                  " %d, 字符串变量的值为 " +

                  "is %s", floatVar, intVar, stringVar);

也可以这样写:

 String fs;

fs = String.format("浮点型变量的值为 " +

                   "%f, 整型变量的值为 " +

                   " %d, 字符串变量的值为 " +

                   " %s", floatVar, intVar, stringVar);

二、String方法  

2.1、String说明

Java 中使用 String 这个类来表示多个字符,表示方式是用双引号把要表示的字符串引起来,字符串里面的字符数量是任意多个。字符本身符合Unicode标准,且上述char类型的反斜线符号(转义字符)适用于String。与C和C++不同,String不能用 \0作为结束。String 的文字应用双引号封闭。

如下所示: 

“The quick brown fox jumped over the lazy dog.” char和String类型变量的声明和初始化如下所示:

char ch = ‘A'; // 声明并初始化一个字符变量  

char ch1,ch2 ; //声明两个字符变量

// 声明两个字符串变量并初始化它们

 String greeting = "Good Morning !! \n" ;

 String err_msg = "Record Not Found !" ;

 String str1,str2 ; // 声明两个字符串变量

 String s = “12abc”; //基本的字符串型

 String s = “”; //表示空串  

注意:

1)String 不是原始的数据类型,而是一个类(class) 

2)String 包含的字符数量是任意多个,而字符类型只能是一个。要特别注意:”a” 表示的是字符串,而’a’表示的是字符类型,它们具有不同的功能。 

3)String 的默认值是 null

               

2.2、String方法

下面是String 支持的方法

2.3、String 解析实例                                                 

String 类是不可改变的解析,例如:

String s = "Google";

System.out.println("s = " + s);

s = "Runoob";

System.out.println("s = " + s);

 

以上实例运行结果如下:

        Google

        Runoob

从结果上看是改变了,但为什么门说String对象是不可变的呢?

原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。

 

2.2、length()和size()的区别

  1)length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;

 2)length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性;

 3)java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看。

  实例:       

public static void main(String[] args) {

    String []list={"ma","cao","yuan"};

    String a="macaoyuan";

    System.out.println(list.length);

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

    List array=new ArrayList();

    array.add(a);

    System.out.println(array.size());

}   

以上实例输出结果如下:

                     3

                     9

                     1                      

 

三、Java StringBuffer 和 StringBuilder 类

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

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

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

实例:

public class Test{

  public static void main(String args[]){

    StringBuffer sBuffer = new StringBuffer("百度官网:");

    sBuffer.append("www");

    sBuffer.append(".baidu");

    sBuffer.append(".com");

    System.out.println(sBuffer);  

  }

}

以上实例运行结果如下:

            百度官网:www.baidu.com

   3.1StringBuffer方法

 StringBuffer主要方法:

 

 

 

    3.2、String和StringBuffer的区别

1)Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的

2)String 长度大小不可变

   StringBuffer 和 StringBuilder 长度可变

   StringBuffer 线程安全 StringBuilder 线程不安全

   StringBuilder 速度快

猜你喜欢

转载自blog.csdn.net/weixin_39236183/article/details/80169062