字符串

阅读:168
1.字符串定义

Java中没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类。还记得JRE吗?JRE中有很多Java预定好的标准类库,该类就是位于此类库中。

下面我们定义一个字符串,然后打印出来:

public class TypeTest {
    public static void main(String[] args){
        String str = "Hello world!";
        System.out.println(str);
    }
}

字符串定义用String,字符用双引号括起来。还记得,字符类型吗?char是用单引号括起来。

2.substring方法

该方法可以从大的字符串中截取出一个子串。我们看一个例子:

public class StringTest {
    public static void main(String[] args){
        String str = "Hello world!";
        String sub = str.substring(0,6);
        System.out.println(sub);
    }
}

打印出来的结果为:Hello

substring方法有两个参数,第一个参数,是要截取的开始位置,字符串位置下标是从0开始。第二个参数,是不想截取的位置。

 

3.字符串拼接

Java和其他大部分语言一样,支持用+号,拼接两个字符串。这里有如下几点:

  1. 任何非字符串的值类型的和字符串拼接,都会将会转化为字符串。
  2. 使用静态方法join,可以实现定界符分隔,拼接多个字符串。

 

如下代码:

public class StringTest {
    public static void main(String[] args){
        String hello = "Hello";
        String world = " world!";

        String hw = hello + world;

        int i = 123;

        String hwi = hw + i;

        String joinStr = String.join(" / ","you","i", "me");
        System.out.println(hw);
        System.out.println(hwi);
        System.out.println(joinStr);
    }
}

打印出结果为:

Hello world!
Hello world!123
you / i / me

注:第一个打印是hello和world的拼接;第二个打印,int会转换为String类型,然后拼接;第三个打印是静态拼接。

 

4.字符串不可变

Java字符串是不可以改变的。比如我们定义String str = "hello girl!",你不能修改str = "hello boy!"。这样做有什么好处呢?编译器可以让字符串共享!

通过截取、拼接字符串这些效率都是很低的,请避免使用,后面的教程会有高效的做法。

以后,在编码中,你会发现,我们很少对字符串修改,不可变的字符串共享带来的效率提升的好处,远远高于截取或者拼接带来的弊端。

 

5.如何比较字符串相等

使用equals方法,比较两个字符串相等,区分大小写。

使用equalsIgnoreCase比较字符串相等,不却分大小写。

这里比较字符串,也可以使用字符串的字面量,都是合法的,我们看如下代码:

public class StringEqualsTest {
    public static void main(String[] args){
        String hello = "Hello";
        String hi = "hello";
        System.out.println(hello.equals(hi));
        System.out.println(hello.equalsIgnoreCase(hi));
    }
}

输出结果为:false
					true

注:第一个输出区分大小写所以为false,第二个输出不区分大小写所以为true。

可以用==来比较字符串相等吗?

答案是不可以,==比较的是两个字符串存放的位置是否相等,虽然字符串是共享的,但是完全有可能同一个字符串值有多个共享位置。

假如,虚拟机始终将相同的字符串共享,==就可以使用了。但是在虚拟机中,一般只有字符串常量是共享的。比如我们通过+连接字符串和substring截取字符串都不是共享的。

 

总结:字符串是开发中常用的类型,Java在标准库中封装好了很多好用的API,后期在学习过面向对象会有详细的讲解。


© 版权归知否网(zhifou.net)所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权知否网将依法追究其法律责任。
读后有收获,请作者喝杯咖啡

精彩留言

发表评论
更多精彩内容,请关注微信公众号