java中的String 以及其方法(超详细!!!)

news2024/12/23 0:49:26

文章目录

  • 一、String类型是什么
    • String不可变的原因(经典面试题)
    • String不可变的好处
  • 二、String的常用构造形式
    • 1.使用常量串构造
    • 2.使用newString对象构造
    • 3.字符串数组构造
  • 三、常用方法
    • 1. length() 获取字符串的长度
    • 2. charAt() 获取字符串中指定字符的值 (代码单元)
    • 3. codePointAt() 获取字符串中指定字符的值的代码点(编码值) (Ascll码值)
    • 4.equals() 比较字符串是否相等
      • 【补充】(扩展) == 与 equals的区别
    • 5.substring(a,b) 字符串截取 要a不要b 要头不要尾
    • 6.indexOf() 查找某个子字符串所在的位置 ,如果存在 返回第一次出现子串的具体位置的索引值,如果不存在 返回-1
    • 7. lastIndexOf() 查找某个子字符串所在最后一次的位置,如果存在 返回最后一次出现子串的具体位置的索引值,如果不存在 返回-1
    • 8.startsWith() 是否是以某个字串开头的 ,如果是 返回true 如果不是 返回false
    • 9.endsWith() 是否是以某个字串结尾的 , 如果 是 返回true 如果 不是 返回false
    • 10.contains() 是否包含某个字串 , 如果 是 返回true 如果 不是 返回false
    • 11.replace(olderchar,newchar)替换某个子字符串 replaceAll()替换所有
      • 【扩展】[replace 与 replaceAll 的区别](https://blog.csdn.net/qq_55846232/article/details/140401676?spm=1001.2014.3001.5502)
    • 12.toUpperCase() 把字母转换成大写
    • 13.toLowerCase() 把字母转换成小写
    • 14.trim() 去字符串开头结尾空格

一、String类型是什么

String类型其实就是定义字符串的一种类型,它可以直接定义我们想要表示的字符串
String是不可变类型

String不可变的原因(经典面试题)

在这里插入图片描述

1.String是final类型的类,value也是final类型的数组,但这不是String不可变的根本原因,String不可变是因为value是private,且并没有提供对外的get和set
2.底层char[]数组有final修饰,意味着这个数组不能扩容等,来达到存更多的字符,final修饰char类型数组,保证数组一旦被赋值 不能在重新赋值,修改char类型数组后,地址不能改变,内容可变,但是没有具体的方法去修改内容
3.char[]数组是私有的,我们程序员无法直接操作这个char[]数组,而且String没有提供这样的方法,来修改char[]数组的元素的值。

String不可变的好处

可以共享,也是为了安全

二、String的常用构造形式

1.使用常量串构造

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

运行结果:

asd

2.使用newString对象构造

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

运行结果:

asdasd

3.字符串数组构造

public static void main(String[] args) {
        char[] array = {'h','e','l','l','o'};
        String s1 = new String(array);
        System.out.println(s1);
    }

运行结果:

hello

需要注意的是字符串数组里的数据要用单引号不要使用双引号

三、常用方法

1. length() 获取字符串的长度

String test = "asdasdasdasd";
System.out.println(test.length());

运行结果

12

2. charAt() 获取字符串中指定字符的值 (代码单元)

String test = "asdasdasdasd";
System.out.println(test.charAt(0));

运行结果

a

3. codePointAt() 获取字符串中指定字符的值的代码点(编码值) (Ascll码值)

String test = "asdasdasdasd";
System.out.println(test.codePointAt(0));

运行结果

97

4.equals() 比较字符串是否相等

String test = "asdasdasdasd";
String test1 = "aaaadddd";
System.out.println(test.equals(test1));

运行结果

false

【补充】(扩展) == 与 equals的区别

String str3 = new String(“123”) 在内存中传递过程 会开辟两个或三个空间
String str1 = “123” 与String str3 = new String(“123”)不相同 是因为地址不同
== 在java中的含义是比较地址
首先 ,equals方法是不能作用与基本数据类型的变量
如果没有对equals 方法进行重写,则它比较的是引用类型变量的地址
像String、Data等类对equals方法进行了重写的话,比较的是所指向的对象的内容

public static void main(String[] args) {
        String test = "asdasdasdasd";
        String test1 = new String("asdasdasdasd");
        System.out.println(test == test1);
        System.out.println(test.equals(test1));
    }

运行结果

false
true

5.substring(a,b) 字符串截取 要a不要b 要头不要尾

String s1 = "asdasdasdasd";
System.out.println(s1.substring(0,4));

运行结果

asda

6.indexOf() 查找某个子字符串所在的位置 ,如果存在 返回第一次出现子串的具体位置的索引值,如果不存在 返回-1

String s1 = "asdasdasdasd";
System.out.println(s1.indexOf("a"));
System.out.println(s1.indexOf("a",1));  //1的意思是跳过一个字符  就是跳过a字符 在寻找

运行结果

0
3

7. lastIndexOf() 查找某个子字符串所在最后一次的位置,如果存在 返回最后一次出现子串的具体位置的索引值,如果不存在 返回-1

String test = "asdasdasdasd"
System.out.println(test.lastIndexOf("d"));

运行结果

11

8.startsWith() 是否是以某个字串开头的 ,如果是 返回true 如果不是 返回false

String s1 = "asdasdasdasd";
System.out.println(s1.startsWith("as"));
System.out.println(s1.startsWith("sd"));

运行结果

true
false

9.endsWith() 是否是以某个字串结尾的 , 如果 是 返回true 如果 不是 返回false

String s1 = "asdasdasdasd";
System.out.println(s1.endsWith("as"));
System.out.println(s1.endsWith("sd"));

运行结果

false
true

10.contains() 是否包含某个字串 , 如果 是 返回true 如果 不是 返回false

 String s1 = "asdasdasdasd";
System.out.println(s1.contains("as"));

运行结果

true

11.replace(olderchar,newchar)替换某个子字符串 replaceAll()替换所有

String s1 = "asdasdasdasd,\r";
System.out.println(s1.replace("as","11"));
System.out.println(s1.replaceAll("\r","*"));

运行结果

11d11d11d11d,
asdasdasdasd,*

【扩展】replace 与 replaceAll 的区别

12.toUpperCase() 把字母转换成大写

String s1 = "asdasdasdasd";
System.out.println(s1.toUpperCase());

运行结果:

ASDASDASDASD

13.toLowerCase() 把字母转换成小写

String s1 = "aSdAsDasdasd";
System.out.println(s1.toLowerCase());

运行结果

asdasdasdasd

14.trim() 去字符串开头结尾空格

String s1 = " aSdAsDasdasds";
System.out.println(s1);
System.out.println(s1.trim());

运行结果
在这里插入图片描述

感谢大家的收看和支持 ,欢迎大家来指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1929322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES快速开发,ElasticsearchRestTemplate基本使用以及ELK快速部署

最近博主有一些elasticsearch的工作,所以更新的慢了些,现在就教大家快速入门,并对一些基本的查询、更新需求做一下示例,废话不多说开始: 1. ES快速上手 es下载:[https://elasticsearch.cn/download/]()这…

记录|C#连接PLC通讯

参考视频C#连接S71200PLC 参考资料 目录 前言一、使用工具二、博图PLC1.创建好PLC设备Step1. 创建新设备Step2. 自动配置CPUStep3. 配置IP协议和连接机制隐藏步骤:重置解决PLC硬件版本和PLCSim创建的PLC版本不兼容Step4. 通过HslDemo来测试是否连通Step5. 配置DB数据…

C语言课程回顾:十、C语言之 指针

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 C语言之 指针 10 指针10.1 地址指针的基本概念10.2 变量的指针和指向变量的指针变量10.2.1 定义一个指针变量10.2.2 指针变量的引用10.2.3 指针变量作为函数参数10.2.4 指针变…

性能测试中唯一标识的JMH测试

前文分享了几种性能测试中常用到的生成全局唯一标识的案例,虽然在文中我猜测了几种方案设计的性能,并根据自己的经验给出了适用的场景。 但对于一个性能测试工程师来讲,有真是测试数据才更有说服力。这让我想起来之前学过的Java微基准测试框…

记录些MySQL题集(2)

MySQL 不使用limit的分页查询 limit问题:limit,offset递增问题。随着offset的增加,条数不变,耗时却增加了。 limit 0,10 耗时1ms limit 300000,10 耗时152ms limit 600000,10 耗时312ms 毫秒级别可能没感觉。假…

java:aocache 与Spring Aop兼容问题

本文适用于所有AspectJ与Spring AOP混用的场景。 Spring AOP 是基于动态代理的实现AOP,基于 JDK代理和CGLib代理实现运行时织入(runtime weaving)。 Spring AOP的切面定义沿用了ASpectJ的注解体系,所以在Spring体系中注解定义切面…

Java 将图片转base64和base64转图片

工具 Base64 和 图片互转。 导入的依赖 <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>4.0.5</versi…

【Hot100】LeetCode—118. 杨辉三角

目录 题目1- 思路2- 实现⭐118. 杨辉三角——题解思路 3- ACM 实现 题目 原题连接&#xff1a;118. 杨辉三角 1- 思路 思路 爬楼梯&#xff1a;动规五部曲 2- 实现 ⭐118. 杨辉三角——题解思路 class Solution {List<List<Integer>> res new ArrayList<&g…

嵌入式全栈设计思路:STM32G4+ChibiOS+FreeRTOS+PID控制+PFC算法构建高效智能电源管理系统(附代码示例)

智能电源管理系统是一个基于STM32G4微控制器的高性能数字电源控制解决方案。本项目旨在设计一个功能全面、高效稳定的电源管理系统,可广泛应用于工业控制、新能源、通信设备等领域。 1.1 系统主要特点 高精度数字电源控制&#xff1a;利用STM32G4的高性能ADC和定时器,实现精确…

2024年肥西县“北斗·劳技科普进校园”赛事活动圆满举行

2024年6月13日肥西县“北斗劳技科普进校园”赛事活动在肥西实验高级中学圆满举行。本次赛事由肥西县关心下一代工作委员会和肥西县教育体育局主办&#xff0c;肥西县航空航海模型协会承办&#xff0c;肥西县实验高级中学协办&#xff0c;并得到了赛哆哆、凡尼科技中心和肥西艾瞳…

为什么渲染农场渲染的是帧,而不是视频?

在3D动画产业的壮阔画卷中&#xff0c;渲染农场作为幕后英雄&#xff0c;以其庞大的计算能力支撑起无数视觉奇观的诞生。这些由高性能计算机集群构成的系统&#xff0c;通过独特的逐帧渲染策略&#xff0c;解锁了单机难以企及的创作自由与效率。本文将深入剖析这一策略背后的逻…

springcloud使用微服务的搭建

微服务的搭建 1.配置对应信息 Springboot 、springcloud、springcloud alibaba对应关系 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2.pom.xml的配置 2.1 总项目pom.xml引入依赖 <parent><groupId>org.sprin…

从库存超卖问题分析锁和分布式锁的应用(二)

本文从一个经典的库存超卖问题分析说明常见锁的应用&#xff0c;假设库存资源存储在Redis里面。 假设我们的减库存代码如下&#xff1a; Autowired StringRedisTemplate redisTemplate;public void deduct(){String stock redisTemplate.opsForValue().get("stock"…

docker desktop历史版本安装

1.安装choco Windows安装 choco包管理工具-CSDN博客 2.通过choco安装 下面例子为安装旧版2.3.0.2,其它版本类似 Chocolatey Software | Docker Desktop 2.3.0.2 https://download.docker.com/win/stable/45183/Docker%20Desktop%20Installer.exe choco install docker-des…

linux高级编程(网络)(www,http,URL)

数据的封包和拆包 封包&#xff1a; 应用层数据&#xff08;例如HTTP请求&#xff09;被传递给传输层。传输层&#xff08;TCP&#xff09;在数据前添加TCP头部&#xff08;包含端口号、序列号等&#xff09;。网络层&#xff08;IP&#xff09;在TCP段前添加IP头部&#xff…

【从0到1进阶Redis】主从复制 — 主从机宕机测试

上一篇&#xff1a;【从0到1进阶Redis】主从复制 测试&#xff1a;主机断开连接&#xff0c;从机依旧连接到主机的&#xff0c;但是没有写操作&#xff0c;这个时候&#xff0c;主机如果回来了&#xff0c;从机依旧可以直接获取到主机写的信息。 如果是使用命令行&#xff0c;来…

底软驱动 | 大厂面试爱考的C++内存相关

文章目录 C内存相关C内存分区C对象的成员函数存放在内存哪里 堆和栈的区别堆和栈的访问效率“野指针”有了malloc/free为什么还要new/deletealloca内存崩溃C内存泄漏的几种情况内存对齐柔性数组参考推荐阅读 C内存相关 本篇介绍了 C 内存相关的知识。 C内存分区 在C中&#…

【python学习】numpy第三方库的定义、功能、使用场景和使用以及遇到的一些问题

引言 python学习学习到第三方库知识&#xff0c;首先学习的就是机器学习以及对应的numpy第三方库 文章目录 引言一、numpy第三方库的定义二、numpy第三方库的功能2.1数组操作2.2 线性代数计算2.3 随机数生成2.4 文件读写 三、numpy第三方库的使用场景3.1需要进行数值计算3.2 需…

PyCharm软件初始化配置

安装完pycharm后&#xff0c;需要对其进行个性化设置&#xff0c;分别设置方法如下 目录 一、修改主题二、修改默认字体和大小三、设置拖动滚轮改变字体大小四、常见快捷键 一、修改主题 1、界面右上角点击红框的内容 2、选择Theme选项 3、选择对应的主题 第一二个是白色主题…

通俗易懂多图透彻讲解二叉树的遍历--前序, 中序和后序

二叉树的遍历是一个数据结构中经常会遇到的知识点, 具体又分为前序, 中序和后序三种. 什么是树? 先来理解一下什么是树, 从一个我们相对熟悉的家谱树(Family Tree)说起吧. 家族的根是爷爷, 然后生了两个娃, 大伯和你爸爸. 继续往下, 有堂哥堂姐, 还有你以及你妹, 等等. 一个…