JAVA基础5.1

5.1 String类

String类表示字符串,Java 程序中的所有字符串都作为此类的对象。String类不是基本数据类型,它是一个类。因为对象的初始化默认值是null,所以String类对象的初始化默认值也是null。String是一种特殊的对象,具有其他对象没有的一些特性。

String字符串是常量,字符串的值在创建之后不能更改。

String类是最终类,不能被继承。

String类的概念

首先要定义并初始化字符串。String类包括以下常用的构造方法。

  • String(String s):初始化一个新创建的String对象,使其表示一个与参数相同的字符序列。
  • String(char[] value):创建一个新的String对象,使其表示字符数组参数中当前包含的字符序列。
  • String(char[] value, int offset, int count):创建一个新的String对象,它包含取自字符数组参数的一个子数组的字符序列。offset参数是子数组第一个字符的索引(从0开始建立索引),count 参数指定子数组的长度。
String stuName0 = "王云";

String stuName1 = new String("王云");

char[] charArray = {'刘','静','涛'};

String stuName2 = new String(charArray);

String stuName3 = new String(charArray,1,2);//从'静'字开始,截取2个字符,结果是“静涛”

在实际编程过程中,需要在一个字符串后面增加一些内容, String类提供了一个concat(String str)的方法,可以在String类字符串后面增加字符串。

class TestString2 
{
    public static void main(String[] args) 
    {
        String stuName1 = new String("王云");
        stuName1.concat("同学");
        System.out.println(stuName1);//输出结果是“王云”,而不是“王云同学”
    }
}

字符串的值在创建之后不能更改。concat(String str)方法的输出是,创建了一个新String字符串,用来存stuName1字符串加上“同学”的结果,而不是在原来stuName1字符串的后面增加内容,对于stuName1而言,它是常量,内容并没有变化。所以,如果想输出“王云同学”,可以将stuName1.concat(“同学”)表达式的结果赋给一个新的字符串,然后再输出该字符串即可。

class TestString3 {
    public static void main(String[] args) {
        String stuName1 = new String("王云");
        System.out.println(stuName1);//王云
        stuName1 = "刘静涛";
        System.out.println(stuName1);//刘静涛
    }
}

不是说String字符串是不可变的常量吗?怎么两次输出stuName1,却发生变化了呢?究其原因,主要是这里说的不可变是指在堆内存中创建出来的String字符串不可变。事实上,stuName1 = “刘静涛”;语句已经新创建了一个String字符串,并让stuName1指向了这个新的String字符串,原来存放“王云”的这个String字符串没有发生变化。

String类的使用

连接字符串

采用public String concat(String str)方法连接字符串。事实上,采用最多的方法是使用“+”进行String字符串连接.

public class TestStringConcat {
    public static void main(String[] args) {
        //使用"+"进行字符串连接
        String s1 = "您好";
        s1 = s1 + ",蒋老师!";//创建一个新字符串用来连接两个字符串,并让s1指向这个新字符串
        System.out.println(s1);//您好,蒋老师!
        
        //使用public String concat(String str)方法连接
        String s2 = "您好";
        //创建一个新字符串用来连接两个字符串,但没有变量指向这个新字符串
        s2.concat(",田老师!");
        //创建一个新字符串用来连接两个字符串,并让s3指向这个新字符串
        String s3 = s2.concat(",田老师!");
        System.out.println(s2);//您好
        System.out.println(s3);//您好,田老师!
    }
}
比较字符串

比较字符串常用的两个方法是运算符“==”和String类的equals方法。

使用“==”比较两个字符串,是比较两个对象的地址是否一致,本质上就是判断两个变量是否指向同一个对象,如果是则返回true,否则返回false。

而String类的equals方法则是比较两个String字符串的内容是否一致,返回值也是一个布尔类型。

public class TestStringEquals {
    public static void main(String[] args) {
        String s1 = "Java基础";
        String s2 = "Java基础";
        System.out.println(s1 == s2);     //返回true
        System.out.println(s1.equals(s2));//返回true
        String s3 = new String("前端技术");
        String s4 = new String("前端技术");
        System.out.println(s3 == s4);     //返回false
        System.out.println(s3.equals(s4));//返回true
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值