详解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
在这里插入图片描述

目录
相关文章
|
前端开发
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
2391 2
|
Web App开发 移动开发 前端开发
Chrome各个版本小常识
Chrome各个版本小常识
|
9月前
|
机器学习/深度学习 缓存 人工智能
【AI系统】QNNPack 算法
QNNPACK是Marat Dukhan开发的量化神经网络计算加速库,专为移动端优化,性能卓越。本文介绍QNNPACK的实现,包括间接卷积算法、内存重排和间接缓冲区等关键技术,有效解决了传统Im2Col+GEMM方法存在的空间消耗大、缓存效率低等问题,显著提升了量化神经网络的计算效率。
245 6
【AI系统】QNNPack 算法
|
10月前
|
存储 人工智能 SEO
全开源免费AI网址导航网站源码
Aigotools 可以帮助用户快速创建和管理导航站点,内置站点管理和自动收录功能,同时提供国际化、SEO、多种图片存储方案。让用户可以快速部署上线自己的导航站。
1367 1
|
SQL 缓存 NoSQL
乐观锁的实现
乐观锁的实现
209 4
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的宠物医院微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的宠物医院微信小程序附带文章和源代码部署视频讲解等
143 3
|
XML Java 网络架构
Webservice使用
Webservice使用
259 2
|
人工智能 Cloud Native 大数据
阿里云蒋江伟:什么是云原生芯片?
阿里云蒋江伟:什么是云原生芯片?
313 2
|
编解码 开发工具 git
ffmpeg 常用的批处理文件(windows版)
ffmpeg 常用的批处理文件(windows版)
678 0
|
搜索推荐 数据挖掘 Android开发
数据驱动性能体验优化
数据驱动性能体验优化
284 0