IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

[Java基础教程]第八章-Java字符串

孙豪杰的博客 2016-02-21 11:32:24 累计浏览 2,406 次
本机暂存

Java的字符串类(java.lang.String)也被称为第九种基础数据类型,它是jdk中最常用的类,没有之一。在第四章我们为了向控制台输出"Hello World"创建的类HelloWorldObject有一个String hello的属性,这个就是字符串的应用。我们可以使用
String hello = "hello world";
String hello = new String("hello world");
两种方式为初始化字符串,比较常用的是第一种。

前面学习数学运算符的时候在控制台输出了所有运算的结果值,我们输出结果值的时候同时也输出了方程式结果会更清晰,比如"3 + 7 = 10"。字符串之间使用"+"就是拼接,比如'System.out.println(variable1 + " + " + variable2 + " = " + sum);'语句中的"variable1 + " + " + variable2 + " = " + sum"。这个语句中variable1、variable2 、sum是int类型,系统仍然按照字符串处理了,因为存在字符串"+"和"=",当语句中“+”并且存在字符串时,所有的变量做字符串处理。字符串的拼接还有另外一种方式,使用StringBuilder工具类。

//定义变量
intvariable1 = 3;
intvariable2 = 7;
//加法
intsum = variable1 + variable2;
StringBuilder stringBuilder = newStringBuilder();
stringBuilder.append(variable1).append(" + ").append(variable2).append(" = ").append(sum);
System.out.println(stringBuilder.toString());  

这两种的方式都比较常用,StringBuilder性能要高一些,但是操作比较麻烦。建议链接的字符串个数超过5个以上使用StringBuilder的方式。

前面我们一起学习过几次数据类型,那么基础数据类型和String之间是怎么转换的呢?

String intString = "10";
intnum = 11;
System.out.println(String.valueOf(num));
System.out.println(Integer.valueOf(intString));  
System.out.println(Integer.parseInt(intString));  

int类型转换为String除了前面提到的使用+字符串,还可以使用String.valueIf(int)的方法。String向int转换可以使用int的包装类Integer.valueOf(String)和Integer.parseInt(String)两种方法。其他的几种基础数据类型与String的转换和int类似,都是调用String.valueOf和包装类的valueOf和parseXXX的方法,大家可以试试其他的转换。

"=="比较运算符是判断符号两侧的变量是否相等,如果两个字符串直接比较会是什么结果呢。

//字符串的比较
String abc = "abc";
String abc2 = "abc";
String abc3 = newString("abc");
System.out.println("abc == abc2:"+ (abc == abc2));  
System.out.println("abc == abc3:"+ (abc == abc3));    

输出结果为:
abc == abc2:true
abc == abc3:false
只所以出现这样的结果,和String再java虚拟机的存储有很大的关系,这部分涉及的知识太比较深,这里就不在叙述了。我们期待的结果都是true,因为都是字符串"abc",所以字符串的比较不能使用"==",需要使用String的equals方法,代码如下:

System.out.println("abc.equals(abc2):"+ abc.equals(abc2));
System.out.println("abc.equals(abc3):"+ abc.equals(abc3));  

输出结果为:
abc.equals(abc2):true
abc.equals(abc3):true

字符串其他常用的方法还包括:
获取字符串长度length(),字符串截取substring(begin,end),index位置上的字符charAt(index),这里的begin,end和Index都是字符在字符串中的位置,起始inex为0,这点需要注意,具体的代码如下:

System.out.println("abc.length():"+ abc.length());
System.out.println("abc.substring(1, 2):"+ abc.substring(1, 2));
System.out.println("abc.charAt(1):"+ abc.charAt(2));  

小练习:作业 打印以下文字中英文字母a-z(不区分大小写)分别的出现次数
* The class <code>String</code> includes methods for examining
* individual characters of the sequence, for comparing strings, for
* searching strings, for extracting substrings, and for creating a
* copy of a string with all characters translated to uppercase or to
* lowercase. Case mapping is based on the Unicode Standard version
* specified by the {@link java.lang.Character Character} class.

课程中的代码如下:

packagecom.sunhaojie.learntest.eighth;
/**
 * @ClassName StringTest
 * @Description 字符串的测试类
 *
 * @author sunhaojie 3113751575@qq.com
 * @date 2016年2月1日 上午10:44:40
 */
publicclassStringTest {
    /**
     * @Title main
     * @Description 字符串测试
     * @param args
     * @return void
     *
     * @author sunhaojie 3113751575@qq.com
     * @date 2016年2月1日 上午10:44:40
     */
    publicstaticvoidmain(String[] args) {
        //定义变量
        intvariable1 = 3;
        intvariable2 = 7;
        //加法
        intsum = variable1 + variable2;
        StringBuilder stringBuilder = newStringBuilder();
        stringBuilder.append(variable1).append(" + ").append(variable2).append(" = ").append(sum);
        System.out.println(stringBuilder.toString());
        //类型转换
        String intString = "10";
        intnum = 11;
        System.out.println(String.valueOf(num));
        System.out.println(Integer.valueOf(intString));
        System.out.println(Integer.parseInt(intString));
        //字符串的比较
        String abc = "abc";
        String abc2 = "abc";
        String abc3 = newString("abc");
        System.out.println("abc == abc2:"+ (abc == abc2));
        System.out.println("abc == abc3:"+ (abc == abc3));
        System.out.println("abc.equals(abc2):"+ abc.equals(abc2));
        System.out.println("abc.equals(abc3):"+ abc.equals(abc3));
        //其他常用字符串的方法
        System.out.println("abc.length():"+ abc.length());
        System.out.println("abc.substring(1, 2):"+ abc.substring(1, 2));
        System.out.println("abc.charAt(1):"+ abc.charAt(2));
    }
}

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,894)
  2. Java开发岗位面试题归类汇总 (累计阅读 22,155)
  3. android 开发入门 (累计阅读 19,527)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,146)
  5. HashMap解决hash冲突的方法 (累计阅读 12,652)
  6. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,178)
  7. Java程序员应该知道的10个eclipse调试技巧 (累计阅读 8,011)
  8. 如何让员工忠于公司? (累计阅读 7,938)
  9. Java技术路线 (累计阅读 7,725)
  10. 聊聊ThoughtWorks面试 (累计阅读 7,614)