详解javaString类上

简介: 详解javaString类上

一、String类

在C语言中要表示字符串只能使用字符数组或者字符指针,在java中专门提供了String类.

1. String初始化

1.常量串构造

public static void main(String[] args) {
        String str1 = "dachang";
    }

2.new String对象

 public static void main(String[] args) {
        String str2 = new String("dachang");
    }

3.使用字符数组构造

public static void main(String[] args) {
        char[] ch = {'d','a','c','h','a','n','g'};
        String str3 = new String(ch);
    }

2. String具体存储形式

String是引用类型,内部不存储字符串本身,而是存储的一个地址.我们打开String的源码看一下
在这里插入图片描述
字符串由两部分组成char[ ]和hash两部分组成,String实际保存在char数组中.

public static void main(String[] args) {
        String s1 = new String("dachang");
        String s2 = new String("woyao");
        String s3 = s1;
    }

我们具体看一下在堆栈上是如何存储的.
在这里插入图片描述

二、String中的比较

  1. ==比较是否引用同一个对象
public static void main(String[] args) {
        String s1 = new String("dachang");
        String s2 = new String("dachang");
        System.out.println(s1 == s2);
    }

在这里插入图片描述
2.equals方法.按照具体字符串内容比较.
在这里插入图片描述
我们可以发现Object中的equals方法是按照==方式,比较的是引用地址.
在这里插入图片描述
String类中重写了Object中的equals方法,按照字符串中的内容比较.

 public static void main(String[] args) {
        String s1 = new String("dachang");
        String s2 = new String("dachang");
        System.out.println(s1.equals(s2));
    }

在这里插入图片描述

  1. compareTo方法.
    equals只能比较两个字符串是否相等,返回一个boolean类型.但如果你要知道谁大谁小这时候equals就不能满足了.

    1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
  2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
    在这里插入图片描述
    我们发现String类是实现了Comparable接口的.
public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("abb");
        System.out.println(s1.compareTo(s2));
    }

在这里插入图片描述
忽略大小写的比较:
compareToIgnoreCase方法与comparaTo相同但忽略大小写.

public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ABC");
        System.out.println(s1.compareToIgnoreCase(s2));
    }

在这里插入图片描述

三、字符串查找

1. charAt(int index)

public static void main(String[] args) {
        String str = new String("hello");
        System.out.println(str.charAt(2));
    }

charAt()方法是返回index下标的字符
在这里插入图片描述
2.indexOf(int ch)

public static void main(String[] args) {
        String str = new String("hello");
        System.out.println(str.indexOf('l'));
    }

indexOf()方法是返回ch字符第一次出现的位置,没有返回-1
在这里插入图片描述
3.indexOf(String str)

public static void main(String[] args) {
        String str = new String("hello");
        System.out.println(str.indexOf("el"));
    }

indexOf()方法返回str字符串第一次出现的位置,没有返回-1
在这里插入图片描述
4.lastIndex(int ch)

public static void main(String[] args) {
        String str = new String("hello");
        System.out.println(str.lastIndexOf('l'));
    }

lastindexOf()方法是从后往前找返回ch字符第一次出现的位置,没有返回-1
在这里插入图片描述
5.lastIndex(String str)

public static void main(String[] args) {
        String str = new String("hello");
        System.out.println(str.lastIndexOf("lo"));
    }

lastindexOf()方法是从后往前找返回str字符串第一次出现的位置,没有返回-1
在这里插入图片描述

目录
相关文章
|
11月前
|
Java 编译器
|
6天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
11 1
Java——String类详解
|
23天前
|
缓存 安全 Java
Java String类
Java String类
14 0
|
3月前
|
存储 Java API
Java基础之String类
Java的String类是引用类型,用于创建和操作字符串。字符串对象在`java.lang`包中,不可变。创建方式包括字面量和`new`关键字。字符串池存储字符串常量,避免重复。比较字符串用`equals()`(区分大小写)和`equalsIgnoreCase()`(不区分大小写)。`length()`返回长度,`concat()`或`+`拼接,`substring()`截取,`indexOf()`和`lastIndexOf()`查找,`replace()`替换,`split()`分割。这些是常用的字符串API。
24 0
|
4月前
|
Java C语言 Python
javaString类超详解-2
javaString类超详解
28 0
|
4月前
|
存储 Java C语言
javaString类超详解-1
javaString类超详解
39 0
|
4月前
|
Java
JAVAString类
JAVAString类
26 0
|
4月前
|
缓存 安全 Java
Java String类(2)
Java String类(2)
|
4月前
|
存储 Java C语言
Java String类(1)
Java String类(1)
|
存储 Java C语言
Java String类【超详细】
Java String类【超详细】
42 0