Java 学习博客_6 入门——字符串类

简介: 以黑马程序员全套Java教程网课为主。

API

JDK 中提供了实现各种功能的封装类,供我们使用。

就像灯的开关,我们只用知道按下开关就能开灯关灯,并不需要弄明白底层原理如何实现。

可以下载一个 java 帮助文档,在其中搜索这些类的具体使用方法。

点击索引,打开输入框

如果只有左侧目录显示,右侧不显示:

右键帮助文档-属性-常规-最下面解除锁定

重新打开帮助文档即可。

AWwYX.png

Pakckage:该类所处的包下(除了 java.lang,其他包都要导包)

下拉还有构造方法、成员方法的详解。

字符串输入

查看 Scanner 的帮助文档可以得知,成员方法 nextLine() 可以获取一整行内容,可用于输入接收字符串。

Scanner sc=new Scanner(System.in);
String line=sc.nextLine();
//这里只输入 sc.nextLine() 然后 alt enter 代码自动补全,就会自动生成左边 String line。

String

String 类型代表字符串。其内容都是被双引号引住的。

在 java.lang 包下,不用导包。

String s="abc";//直接赋值
String s1=new String();//空字符串

char[] c={'a','b','c'};
String s2=new String(c);//根据字符数组创建字符串

byte[] b={97,98,99};//a, b, c 对应的 ascii 码
String s3=new String(b);

字符串一旦创建不能再修改。不过多个字符串的值可以共享s1=s2;

字符串在效果上像字符数组 char[],但(JDK9)以后底层实现方法其实是字节数组 byte[]。

字符串比较:== 和成员方法 equals()

用==判断的比较,是比较 s1 和 s2 的值(即:对应字符串的地址值)是否相同。

基本类型 == 比较的是数据值是否相同,引用类型 == 比较的是地址是否相同。

用字符串的成员方法 equals() 判断,是比较字符串内容是否相同。

char[] c={'a','b','c'};
String s1=new String(c);
String s2=new String(c);
System.out.println(s1==s2);//输出 false,因为 s1 s2 地址不同,只有内容是一样的
System.out.println(s1.equals(s2));//输出 true

String s3="abc";
String s4="abc";
System.out.println(s3==s4);//输出 true,因为对于相同内容的字符串,JVM 会建立一个字符串对象(在堆内存的字符串池中)供它俩参考。
System.out.println(s3.equals(s4));//输出 true

System.out.println(s1==s3);//输出 false
System.out.println(s1.equals(s3));//输出 true

遍历字符串:成员方法 length() 和 charAt()

s.length()可以获取字符串长度

s.charAt(i) 可以获取索引为 i 处的字符

for(int i=0;i<s.length;i++){
    System.out.println(s.charAt(i));
}

字符串拼接

字符串可以直接用 + 号拼接。

String s1="Hello ";
String s2="World";
s1=s1+s2;//Hello World

在内存中,字符串发生拼接后会在堆内存中新建一个字符串(有"Hello ","World","Hello World"三个字符串,而不是直接在"Hello "的位置上拼接"World")。这样操作还是比较费时费空间的。之后介绍的另一个类——StringBuilder 可以更有效地解决这个问题。

endsWith()

查看字符串是否以指定子串结尾。

String s1="hello world";
s1.endsWith("world");

StringBuilder 类

与 String 类相比,最主要的特点在于内容可变。

在 java.lang 包下,不用导包。

构造方法:

构造方法名 说明
StringBuilder() 无参构造方法
StringBuilder(String s) 把给定的 String 字符串转换成 StringBuilder 类型的
成员方法名 说明
append(String s) 在结尾拼接上字符串 s
StringBuilder reverse() 反转字符串
String toString() 把 StringBuilder 类型转换为 String 类型并返回

用 StringBuilder 完成字符串拼接操作:

  1. String 类型转换为 StringBuilder 类型
  2. StringBuilder 类型通过 append() 成员方法拼接字符串
  3. StringBuilder 类型通过 toString() 成员方法转换为 String 类型
String s="Hello ";
StringBuilder sb=new StringBuilder(s);//或者先无参构造,再在结尾拼接 append(s),但有点多此一举
sb.append("World");
String s1=sb.toString();

//骚操作:匿名对象,使用完立刻被垃圾回收器回收,建议少用
String s1=new StringBuilder(s).append("World").toString();

用 StringBuilder 完成字符串反转操作:

String s="Hello World";
String sr=new StringBuilder(s).reverse().toString();
目录
相关文章
|
2天前
|
Java
java的类详解
在 Java 中,类是面向对象编程的核心概念,用于定义具有相似特性和行为的对象模板。以下是类的关键特性:唯一且遵循命名规则的类名;描述对象状态的私有属性;描述对象行为的方法,包括实例方法和静态方法;用于初始化对象的构造方法;通过封装保护内部属性;通过继承扩展其他类的功能;以及通过多态增强代码灵活性。下面是一个简单的 `Person` 类示例,展示了属性、构造方法、getter 和 setter 方法及行为方法的使用。
|
9天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
66 6
【Java学习】多线程&JUC万字超详解
|
6天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
3天前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
4天前
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
|
4天前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
8天前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
11天前
|
算法 Java 开发者
Java 编程入门:从零到一的旅程
本文将带领读者开启Java编程之旅,从最基础的语法入手,逐步深入到面向对象的核心概念。通过实例代码演示,我们将一起探索如何定义类和对象、实现继承与多态,并解决常见的编程挑战。无论你是编程新手还是希望巩固基础的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
2天前
|
Java 程序员
Java编程中的对象和类: 初学者指南
【9月更文挑战第9天】在Java的世界中,对象和类构成了编程的基石。本文将引导你理解这两个概念的本质,并展示如何通过它们来构建你的程序。我们将一起探索类的定义,对象的创建,以及它们如何互动。准备好了吗?让我们开始这段Java的旅程吧!
|
11天前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
28 0