字符串及字符串操作

本文讲解了Java中字符串的不可变性质,介绍了如何创建、初始化字符串变量,字符串连接、输入处理,以及字符串操作如比较、长度获取、字符访问和子串提取。重点讨论了字符串作为不可变对象的特性及其实例应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串

  • 字符串变量和数组变量类似,它并不存放字符串,不是字符串的所有者,它是字符串的管理者。

    Java的字符串还是一种特殊的“不可变”对象,所有的字符串操作都是产生一个新的字符串,而不是对原来的字符串的修改。

  • 用双引号括起来的0个或多个字符就是一个字符串字面量

  • "hello"

  • "1"

  • ""

字符串变量

 

注意:包裹类型的第一个字母也是大写的

new = 创建

String s = new String("a string"); //s去管理 a string内容的字符串

创建了一个String的对象

用”a string“初始化这个对象

创建管理这个对象的变量s

让s管理这个对象

初始化字符串变量

  • String s = "hello";
  • 编译器帮你创建一个String类的对象交给s来管理

字符串连接

 

 

// 运算顺序从左到右 (都是+时)

  • "age"+1+2 //左边"age"+1是string字符串,而2为整数,结果为string,若要得到"age3"的结果,需改为"age"+(1+2)

输入字符串

  • in.next(); 读入一个单词,单词的标志是空格

  • 空格包括空格、tab和换行

  • in.nextLine();读入一整行

import java.util.Scanner;
​
public class Demo06 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s;
        s = in.next();
        System.out.println(s);
    }
}
// 输入This is a test.
// 结果为This
// 若s = in.next() 改为 s = in.nextLine()
// 输入This is a test.
// 结果为This is a test.

对象变量的赋值

 

//上面:指a和b共同管理了原来a管理的字符串

//下面:指b得到了a的值,这为两个独立变量

比较两个String

if( input == "bye"){
    ...
}
// 比较是否同一个
if( input.equals("bye")){
    ...
}
// 比较内容是否相同
  • Strings应该用 .equals 来比较

例:

import java.util.Scanner;
​
public class Demo06 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s;
        s = in.next();
        System.out.println(s);
        System.out.println(s=="bye");
        System.out.println(s.equals("bye"));
    }
}
// 输入bye
// 输出bye
      false
      true
  • == 比较是否同一个

  • equals 比较内容是否相同

字符串操作

 

Strings大小的比较

 

import java.util.Scanner;
​
public class Demo07 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "abc";
        String s2 = "abb";
        System.out.println(s1.compareTo(s2));
        System.out.println("abb".compareTo(s2));
    }
}

获得String的长度

  • 用length() 函数

 

访问String里的字符

import java.util.Scanner;
​
public class Demo08 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "abc";
        System.out.println(s1.charAt(3)); //运行错误
        System.out.println(s1.charAt(0)); //a
    }
}

如何将s1的每一个字符单独打出来?

import java.util.Scanner;
​
public class Demo08 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "abc";
        for( int i = 0; i < s1.length(); i++ )
        {
            System.out.println(s1.charAt(i));
        }
    }
}

得到子串

 

import java.util.Scanner;
​
public class Demo09 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "0123456789汉字";
        System.out.println(s1.substring(2)); 
        //第2个数之后的数 输出:23456789汉字
        System.out.println(s1.substring(2,4)); 
        //第2个数之后的数,第4个数之前的数 输出:23
    }
}

寻找字符

 

import java.util.Scanner;
​
public class Demo09 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s2 = "0123A56789汉字";
      
        System.out.println(s2.indexOf('4')); //-1 (不存在)
        System.out.println(s2.indexOf('A')); //4
    }
}

找字符所在位置

import java.util.Scanner;
​
public class Demo10 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "0123A56739汉字";
        int loc = s1.indexOf('3');
        System.out.println(s1.indexOf('3',loc+1)); 
        //找第二个3  输出结果:8
        System.out.println(s1.indexOf("A56"));
        // 输出结果:4
    }
}

其他String操作

 

 

不可变的String

 

例:

import java.util.Scanner;
​
public class Demo10 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s1 = "abcd";
        String s2 = s2.toUpperCase();
        System.out.println(s2); // ABCD
    }
}

在switch—case中使用字符串

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值