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

文章目录

  • 一、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.mzph.cn/web/44704.shtml

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

相关文章

水的几个科学问题及引发的思考

水的几个科学问题及引发的思考 两个相同的容器A和B,分别装有同质量的水,然后,在A容器中加入水,在B容器中加入冰,如果加入水和冰的质量相同。问,容器B的水位将与容器A的水位相同吗(假设冰未融化时…

【ZooKeeper学习笔记】

1. ZooKeeper基本概念 Zookeeper官网:https://zookeeper.apache.org/index.html Zookeeper是Apache Hadoop项目中的一个子项目,是一个树形目录服务Zookeeper翻译过来就是动物园管理员,用来管理Hadoop(大象)、Hive&…

AR0132AT 1/3 英寸 CMOS 数字图像传感器可提供百万像素 HDR 图像处理(器件编号包含:AR0132AT6R、AR0132AT6C)

AR0132AT 1/3 英寸 CMOS 数字图像传感器,带 1280H x 960V 有效像素阵列。它能在线性或高动态模式下捕捉图像,且带有卷帘快门读取。它包含了多种复杂的摄像功能,如自动曝光控制、开窗,以及视频和单帧模式。它适用于低光度和高动态范…

QML界面控件加载与显示顺序

一、QML界面控件加载顺序 QML在界面加载时的顺序和我们认知的有很大的不同,有时候会对我们获取参数以及界面实现造成很大的困扰 1、加载顺序 import QtQuick 2.12 import QtQml 2.12 import QtQuick.Window 2.12 import QtQuick.VirtualKeyboard 2.4Window {id: …

九盾安防:如何调控叉车限速器的报警速度呢

在繁忙的物流仓储和制造业环境中,叉车是不可或缺的搬运设备。然而,其高速行驶也带来了潜在的安全隐患。为了确保作业人员和货物的安全,又车限速器的设置显得尤为关键。那么,如何调控叉车限速器的报警速度呢? 叉车限速器的速度调整…

复制vmware虚拟机文件并改名(文件名使用python替换)得到一台新的虚拟机

文章目录 需求实验复制文件夹并重命名使用python将所有文件名“WinSer2022”字符替换成“wingetmac”修改虚拟机配置文件(.vmx)打开新的虚拟机成功 需求 将已有的Winser2022虚拟机复制成wingetmac并开机 实验 复制文件夹并重命名 将"WinSer2022…

了解并缓解 IP 欺骗攻击

欺骗是黑客用来未经授权访问计算机或网络的一种网络攻击,IP 欺骗是其他欺骗方法中最常见的欺骗类型。通过 IP 欺骗,攻击者可以隐藏 IP 数据包的真实来源,使攻击来源难以知晓。一旦访问网络或设备/主机,网络犯罪分子通常会挖掘其中…

1559. 二维网格图中探测环

1559. 二维网格图中探测环 给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的环。 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径。对于一个给定的格子,你可以移动到它上、下、左、右…

【Qt 初识】QPushButton 的详解以及 Qt 中的坐标

文章目录 1. Qt 中的信号槽机制 🍎2. 通过图形化界面的方式实现 🍎3. 通过纯代码的方式实现按钮版的HelloWorld 🍎4. 设置坐标 🍎 1. Qt 中的信号槽机制 🍎 》🐧 本质就是给按钮的点击操作,关联…

GuLi商城-商品服务-API-品牌管理-OSS获取服务端签名(续)

如何进行服务端签名直传_对象存储(OSS)-阿里云帮助中心 gulimall-third-party服务的代码: package com.nanjing.gulimall.thirdparty.controller;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.utils.BinaryUtil; impor…

Linux开发:Fuse介绍

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持,开发者只需要根据fuse提供的接口实现具体的文件操作时所对应的回调函数,就可以实现一个文件系统。由于其主要实现代码位于用户空间中,因此不需要重新编译内…

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二)

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二) 0. 引言1. 关于m_geodesic2. 关于mygrid_sand23. 结语 0. 引言 通过前面篇节已经将m_map绘图工具中大多绘图有关的函数进行过介绍,已经能够满足基本的绘图需求,本节…

个人倒计时页面源码,实用倒计时单页源码

一、源码描述 这是一款非常实用的个人倒计时页面,支持设置未来一年时间,支持设置背景音乐,支持自定义下拉页面,点击向下箭头查看。 二、源码截图 三、源码下载

深入探讨【C++容器适配器】:现代编程中的【Stack与Queue】的实现

目录 一、Stack(栈) 1.1 Stack的介绍 1.2 Stack的使用 1.3 Stack的模拟实现 二、Queue(队列) 2.1 Queue的介绍 2.2 Queue的使用 2.3 Queue的模拟实现 三、容器适配器 3.1 什么是适配器 3.2 为什么选择deque作为stack和…

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂,传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案,能够将系统拆分为独立、…

解决pycharm无法识别miniconda

解决pycharm无法识别miniconda 找到miniconda安装目录下condabin/conda.bat文件,点击load即可识别codna环境 a环境

仕考网:没有学位证能考公务员吗?

公务员考试需要满足报名条件才能参加,没有学位证能考公吗? 没有学位证书的考生也有机会参与公务员考试虽然可以选择的岗位比较少,但可以报考参加那些不设定学位要求的岗位。当发布的公务员招录信息中某一职位的学位要求标注为“无要求”时,…

【C++】:继承[下篇](友元静态成员菱形继承菱形虚拟继承)

目录 一,继承与友元二,继承与静态成员三,复杂的菱形继承及菱形虚拟继承四,继承的总结和反思 点击跳转上一篇文章: 【C】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数…

MATLAB Gazebo联合仿真

准备仿真环境:在Gazebo中设置仿真场景,包括机器人模型、环境布局、传感器和执行器等。编写MATLAB脚本:在MATLAB中编写控制算法和数据处理脚本,用于接收Gazebo中的传感器数据,并生成控制命令。建立通信:通过…

DEBUG:jeston卡 远程ssh编程

问题 jeston 打开网页 gpt都不方便 而且只需要敲命令就行 解决 下载MobaXterm(window执行) liunx需要虚拟机 软件 远程快速复制命令