String类讲解(1)

🐵本篇文章将讲解String类及其包含的方法


一、介绍String类

String属于引用类型,String类是Java的一个内置类,用于表示字符串,String类中具有许多方法,可以用来操作和处理字符串

二、字符串的构造

下面介绍三种构造字符串的方法:

public static void main(String[] args) {//1.使用常量串直接赋值String str = "hello";System.out.println(str); //hello//2.使用new关键字创建字符串对象String str1 = new String("world");System.out.println(str1); //world//3.通过字符数组构造字符串char[] arr = {'a', 'b', 'c'};String str = new String(arr);System.out.println(str); //abc}

以上述代码的第二个例子为例画图讲解:

求字符串的长度和判断字符串是否为空:

public static void main(String[] args) {String str1 = "hello";System.out.println(str1.length()); //计算字符串str1的长度String str4 = "";System.out.println(str4.isEmpty()); //判断引用所指向的对象的内容是否为空,若为空返回true,否则返回falseString str5 = null;System.out.println(str5.isEmpty()); //空指针异常
}

三、字符串比较

3.1 ==

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);

由于s1和s2都属于引用类型,所以上述代码实际比较的是s1和s2引用的对象的地址,打印结果为false

但是在以下这种情况会返回true,这涉及到了字符串常量池,以后会讲

String s3 = "hello";
String s4 = "hello";
System.out.println(s3 == s4); //字符串常量池

3.2 boolean equals(Object o)方法

equals方法是Object类中的方法,在Object类中equals方法的功能就是比较两个对象的地址,而在String类中重写了equals方法,其功能是比较字符串对象的内容,若相等返回true,否则返回false

String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1.equals(s2)); //true

3.3 int compareTo(String s)方法

该方法和C语言中strcmp函数功能基本一致

        String s1 = new String("abc");String s2 = new String("abcd");String s3 = new String("azc");System.out.println(s1.compareTo(s2)); //-1(字符数的差)//1.s1>s2 返回一个大于0的数(s1的ASCII值减去s2的ASCII值)//2.s1<s2 返回一个大于0的数(s1的ASCII值减去s2的ASCII值)//3.s1=s2 返回0System.out.println(s1.compareTo(s3)); //-24

3.4 int compareToIgnoreCase(String s)方法

比较两个字符串但忽略大小写

String s1 = new String("hello");
String s2 = new String("HELLO");
System.out.println(s1.compareToIgnoreCase(s2)); //true

四、字符串查找

<方法> char charAt(int index)

<功能>返回字符串下标为index的字符,如果index为负数或导致越界,则抛出异常

String s1 = new String("hello");
System.out.println(s1.charAt(2)); //l

<方法> int indexOf(int ch)

<功能> 返回ch第一次出现的下标,如果字符串中没有ch则返回-1

String s1 = new String("hello");
int index = s1.indexOf('e');
System.out.println(index); //1

<方法> int indexOf(int ch, int fromIndex)

<功能> 从下标为fromIndex的位置处开始找ch,返回ch第一次出现的下标,若没有则返回-1

String s1 = new String("hello");
int index = s1.indexOf('l', 3);
System.out.println(index); //3

<方法> int indexOf(String str)

<功能> 返回str第一次出现的位置,没有则返回-1,和C语言的strstr用法基本一样

String s = new String("abcdbcd");
int index = s.indexOf("bcd"); //1

<方法> int indexOf(String str, int fromIndex)

<功能> 从fromIndex位置开始找str第一次出现的位置并返回,没有则返回-1

String s = new String("abcdefabc");
int index = s2.indexOf("abc", 3);
System.out.println(index); //6

<方法> int lastIndexOf(int ch)

<功能> 从后往前找,返回ch第一次出现的位置,没有返回-1

String s2 = new String("hello");
int i = s2.lastIndexOf('l'); //3

<方法> int lastIndexOf(int ch, int fromIndex)

<功能> 从fromIndex位置开始从后往前找,返回ch第一次出现的位置,没有返回-1

String s2 = new String("hello");
int i = s2.lastIndexOf('l', 2); //2

<方法> int lastIndexOf(String s)

<功能> 从后往前找,返回字符串第一次出现的位置,没有返回-1

String s2 = new String("abcdefabc");
int i = s2.lastIndexOf("abc");
System.out.println(i); //6

<方法> int lastIndexOf(String s, int fromIndex)

<功能> 从fromIndex位置开始从后往前找从后往前找,返回字符串s第一次出现的位置,没有返回-1

String s2 = new String("abcdefabc");
int i = s2.lastIndexOf("abc", 3);
System.out.println(i); //0

五、字符串转化

5.1 数字与字母之间的转化

//数字转换为字符串
String s1 = String.valueOf(100);
String s2 = String.valueOf(12.4);
String s3 = String.valueOf(true);
System.out.println(s1 +' '+ s2 +' '+ s3); //100 12.4 true 这些都为字符串//字符串转换为数字
int i = Integer.parseInt("123"); //Integer为包装类型,后面会讲
double d = Double.parseDouble("3.14");
System.out.println(i);
System.out.println(d);

5.2 大小写转换

String s = new String("hello");
String ret = s.toUpperCase();
System.out.println(ret); //HELLOString s1 = new String("HeLLO");
String ret1 = s1.toLowerCase();
System.out.println(ret1); //hello//若要转换的字符串不是字母,则原样输出

5.3 字符串与数组之间的转换

//字符串转换为数组
String s = new String("hello");
char[] ch = s.toCharArray();
//遍历并打印数组
for (char c : ch) {System.out.print(c);
}//数组转换为字符串
s = new String(ch);
System.out.println(s);

六、字符串替换

String s1 = new String("hehello");
String ret = s1.replaceAll("he", "aa"); //将字符串章所有的he替换为aa
System.out.println(ret); //aaaalloString ret1 = s1.replaceFirst("he", "aa"); //将字符串中第一个he替换为aa
System.out.println(ret1); //aahello

七、字符串拆分

<方法> String[] split(String regex)

<功能>以regex为分隔符,将整个字符串拆分,若字符串中没有该分隔符则原样输出

String s = new String("undertale&Sans");
String[] ret = s.split("&"); //返回类型为String[]
for (int i = 0; i < ret.length; i++) {System.out.print(ret[i] +" "); //undertale Sans
}

<方法> String[] split(String regex, int limit)

<功能>以regex为分隔符,将整个字符串拆分为limit组,若字符串中没有该分隔符则原样输出

String s1 = new String("hello world hello Sans");
String[] ret1 = s1.split(" ", 3); //分成3部分
for (int i = 0; i < ret1.length; i++) {System.out.println(ret1[i]);
}

<特殊1>若分隔符为". * +",则要进行转义,在前面加上\\

String s = new String("192.168.1.1");
String[] ret = s1.split("\\."); 
for (int i = 0; i < ret.length; i++) {System.out.print(ret[i] +" "); //192 168 1 1
}

<特殊2>

String s1 = new String("192\\168\\1\\1");
String[] ret = s1.split("\\\\"); 
for (int i = 0; i < ret.length; i++) {System.out.print(ret[i] + " "); //192 168 1 1
}

<特殊3>若有多个分隔符,则可以用 "|" 将分隔符隔开

String s2 = new String("name=Sans&age=18");
String[] ret3 = s2.split("=|&");
for (int i = 0; i < ret3.length; i++) {System.out.print(ret3[i] +" "); //name Sans age 18
}

八、字符串截取

<方法> String subString(int beginIndex)

<功能> 从beginIndex开始截取到字符串结尾

String str = new String("abcdef");
String ret = str.substring(2); // cdef

<方法> String subString(int beginIndex, int endIndex)

<功能> 以区间[beginIndex, endIndex)截取字符串

String str = new String("abcdef");
String ret = str.substring(2, 5); // cde

<其他> String trim()

<功能> 删除字符串开头和结尾的空格

String str = "   abc d f    ";
System.out.println(str);
String ret = str.trim();
System.out.println("["+ ret +"]");


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

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

相关文章

蓝桥杯每日一题2023.11.27

题目描述 星系炸弹 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目一一枚举即可 #include<bits/stdc.h> using namespace std; bool is_r(int n) {if((n % 4 0 && n % 100 ! 0)|| n % 400 0)return true;return false; } int mm[13] {0, 31, 28, 31, 30, 3…

万字详解,和你用RAG+LangChain实现chatpdf

像chatgpt这样的大语言模型(LLM)可以回答很多类型的问题,但是,如果只依赖LLM,它只知道训练过的内容,不知道你的私有数据:如公司内部没有联网的企业文档,或者在LLM训练完成后新产生的数据。(即使是最新的GPT-4 Turbo,训练的数据集也只更新到2023年4月)所以,如果我们…

Docker入门教程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

微服务--02--Nacos注册中心

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 服务注册和发现手动发送Http请求的方式存在问题注册中心原理 Nacos注册中心配置服务注册服务发现小结&#xff1a; 服务注册和发现 手动发送Http请求的方式存在问题…

Compensated Summation/Kahan‘s Summation的理解

阅读《Efficient Generation of Error-Inducing Floating-Point Inputs via Symbolic Execution》这篇论文时&#xff0c;文中提到的Commpensated Summation没看太懂&#xff0c;代码如下&#xff1a; 查阅资料发现Compensated Summation也叫Kahan’s Summation&#xff0c;该…

Termius 一款优秀的跨平台 SSH 客户端工具

&#x1f525;&#x1f525;&#x1f525; 作为程序员或者运维管理人员&#xff0c;我们经常需要使用终端工具来进行服务器管理及各种操作&#xff0c;比如部署项目、调试代码、查看/优化服务、管理服务器等。 而实现远程服务器连接需要借助 SSH 协议来进行&#xff0c;SSH&am…

青少年CTF之PHP特性练习(1-5)

青少年CTF-PHP特性练习 文章目录 青少年CTF-PHP特性练习PHP特性01PHP特性02PHP特性03PHP特性04PHP特性05 PHP特性01 看给出的源码&#xff0c;两个变量的值加密后的MD5相同 <?php$s1 "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47…

使用Pytorch从零开始构建Energy-based Model

知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II 在本教程中…

Intel Software Guard Extensions简介

文章目录 前言一、新的基于硬件的控件实现数据安全二、机密计算的挑战三、用于机密计算的增强安全功能四、Enclave验证和数据密封五、数据中心认证参考资料 前言 最近开始研究Intel SGX硬件特性&#xff0c;记录下研究过程。 参考文档&#xff1a;product-brief-SGX 一、新的…

ELK---filebeat日志收集工具

filebeat日志收集工具 filebeat日志收集工具和logstash相同 filebeat的优点&#xff1a; filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小的多 filebeat可以运行在非Java环境。它可以代替logstash在非Java环境上收集…

初刷leetcode题目(8)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

VM安装Centos

文章目录 第2章 VM与Linux的安装2.1 VMWare安装2.2 CentOS安装 第3章 Linux文件与目录结构3.1 Linux文件3.2 Linux目录结构 第4章 VI/VIM编辑器4.1 是什么4.2 测试数据准备4.3 一般模式4.4 编辑模式4.5 命令模式4.6 模式间转换 第5章 网络配置和系统管理操作5.1 查看网络IP和网…

Java根据指定端口关闭进程(端口占用 Web server failed to start. Port 6061 was already in use.)

查询指定端口的pid netstat -ano | findstr 6063杀掉进程 taskkill /f /pid 36804

40.0/jdbc/Java数据连接/jar包运用增删改

目录 40.1. 回顾 40.2. 正文 40.1 为什么需要jdbc 40.2 如何连接mysql数据库 40 .3 jdbc容易出现的错误 40.4 完成删除 40.5 完成修改 40.1. 回顾 1. 自联查询: 自己连接自己的表。注意:一定要为表起别名。 2. 嵌套查询: 把一个查询的结果作为另一个查询的条件值。 3. 组…

mysql处理40w数据脚本执行慢问题

需求背景&#xff1a; 2张表 SS_ZYXX 1w数据&#xff0c;WD_GZPZ 50w数据 SS_ZYXX.id WD_GZPZ.zyxx_id 找到SS_ZYXX表有数据&#xff0c;关联表WD_GZPZ没有数据的SS_ZYXX表的id 处理方案 方案一&#xff1a; 联合查询&#xff1a; 下面sql&#xff0c;在mysql执行时间3…

[带余除法寻找公共节点]二叉树

二叉树 题目描述 如上图所示&#xff0c;由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点&#xff08;编号是1的结点&#xff09;都有一条唯一的路径&#xff0c;比如从10到根结点的路径是(10, 5, 2, 1)&#xff0c;从4到根结点的路径是(4, 2, 1)&#x…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式

更新时间&#xff1a;2023年10月31日 11:37:53 作者&#xff1a;产品人小柒 dbeaver数据库连接工具,可以支持几乎所有的主流数据库.mysql,oracle.sqlserver,db2 等等,这篇文章主要给大家介绍了关于DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问…

yolov5检测(前向)输入视频输出(不在图上画标签形式的原)图片的方法,及设置每隔几帧保存的方式(不每帧保存减少重复)

这些天我忽然有个需求&#xff0c;要更新迭代一个场景的检测模型&#xff0c;甲方爸爸提供的新数据集是监控视频形式的(因为拍视频确实更加的方便)&#xff0c;而我训练模型确实要标注好的图片形式。 根据这些条件的话&#xff0c;思路应该是要这样的&#xff1a;首先使用现有的…

大数据平台/大数据技术与原理-实验报告--实战HDFS

实验名称 实战HDFS 实验性质 &#xff08;必修、选修&#xff09; 必修 实验类型&#xff08;验证、设计、创新、综合&#xff09; 综合 实验课时 2 实验日期 2023.10.23-2023.10.27 实验仪器设备以及实验软硬件要求 专业实验室&#xff08;配有centos7.5系统的linu…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳排放分摊的综合能源服务商交易策略》

这篇文章的标题表明它将讨论一个关于综合能源服务商交易策略的主题&#xff0c;而在这个策略中&#xff0c;特别考虑了碳排放分摊的因素。以下是对标题中各关键词的解读&#xff1a; 综合能源服务商&#xff1a; 这指的是在能源领域提供多种服务的企业或组织&#xff0c;可能涵…