Java之String类

一、String类常用方法 

1.引用类型的比较

我们知道在Java中两个引用遍历是不能用" == "号来比较的,而String类重写了父类objects的equals方法, 实现了引用类型的比较

例子

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

String str1 = "hello world";

String str2 = "hello world";

String str3 = "hello xiao_yu_er";

// equals方法返回值是boolean类型,相等返回true,不等返回false

System.out.println(str1.equals(str2)); // true

System.out.println(str1.equals(str3)); // false

}

}

除了equals,String还为我们提供了一些其他的字符串比较方法

compareTo方法:按照字典序进行比较
与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:

1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

例子

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

String str1 = "hello a";

String str2 = "hello z";

String str3 = "hello anna";

// 返回类型是int,前几个字符都相同,最后一个不同——返回'a'和'z'字符的Ascii码的差值

System.out.println(str1.compareTo(str2)); // -25

// str1所有的字符和str3都相同,但str3多了几个不同的字符,返回值str1和str3两个字符串长度差值

System.out.println(str1.compareTo(str3)); // -3

}

}

 compareToIgnoreCase:与compareTo方式相同,但是忽略大小写比较

2.字符串查找方法

方法功能carAt(int index)

返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常

indexOf(String str返回str第一次出现的位置,没有返回-1

lastIndexOf(String str)

从后往前找,返回str第一次出现的位置,没有返回-1
 

例子 

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

String str1 = "hello world!";

char ch = str1.charAt(0); // 获取0下标的字符

System.out.println("该字符串中0下标的字符为:" + ch);

int index1 = str1.indexOf("l"); // 记录字符串”l“在str1中第一次出现的位置,从前往后找,没有返回-1

System.out.println("从前往后找,字符串”l“第一次出现的位置是:" + index1);

int index2 = str1.lastIndexOf("l"); // 从后往前找,返回“l”第一次出现的位置,没有返回-1

System.out.println("从后往前找,字符串“l”第一次出现的位置是:" + index2);

}

}

3.字符串与数组、数字之间的转换

方法介绍都在代码中:

import java.util.Locale;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

// 数字和字符串之间的转换

String str1 = String.valueOf(1234); // 将数字1234转换成字符串"1234"

double date1 = Double.parseDouble("76.2"); // 将字符串"76.2"转换成double类型的数字:76.2

System.out.println(str1);

System.out.println(date1);

// 大小写转换

String s1 = "XIAO YU ER";

String s2 = "student";

String s3 = s1.toLowerCase(); // 大写转小写

System.out.println("大写转小写的转换结果是:" + s3);

System.out.println("小写转大写的转换结果是:" + s2.toUpperCase()); // 小写转大写

// 字符串和字符数组之间的转换

String str2 = "hello word";

char[] ch1 = str2.toCharArray(); // 字符串转字符数组

for (char tmp:

ch1) {

System.out.print(tmp + " ");

}

System.out.println("======我是分割线=======");

char[] ch2 = new char[]{'a','b', 'c', 'd', 'e'};

String str3 = new String(ch2); // 字符数组转字符串

System.out.println("字符数组转字符串的转换结果是:" + str3);

}

4. 字符串替换


使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下

方法功能(返回类型是String) replaceAll(String regex, String replacement)替换所有的指定内容(返回类型是String) replaceFirst(String regex, String replacement)替换首个内容

例子 

public class String_method_Test {

public static void main(String[] args) {

String str1 = "hello world!";

System.out.println("替换全部的”l“后的结果是:" + str1.replaceAll("l", "*"));

System.out.println("替换掉第一个”l“后的结果是:" + str1.replaceFirst("l", "&"));

}

}

 注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串

5.字符串的拆分 

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串

方法功能split(String regex)  (返回值的类型:String[]  )将字符串全部拆分split(String regex, int limit)  (返回值的类型:String[]  )将字符串以指定的格式,拆分为limit组

例子 

public class String_method_Test {

public static void main(String[] args) {

String str1 = "hello xiao yu";

String[] s1 = str1.split(" "); // 以空格,来进行全部拆分

for (String tmp :

s1) {

System.out.println(tmp);

}

System.out.println("=====我是分割线======");

String[] s2 = str1.split(" ", 2); // 按空格,拆分为两组

for (int i = 0; i < s2.length; ++i) {

System.out.println(s2[i]);

}

}

}

拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义.
 

例子: 拆分IP地址

public class String_method_Test {

public static void main(String[] args) {

String str1 = "127.0.0.1";

String[] s = str1.split("\\."); // 注意一定要加上转义字符

for (int i = 0; i < s.length; ++i) {

System.out.println(s[i]);

}

System.out.println("====我是分割线====");

String str2 = "name=小鱼儿&age=19";

String[] s2 = str2.split("&");

// 多次拆分

for (int i = 0; i < s2.length; ++i) {

String[] tmp = s2[i].split("=");

for (int j = 0; j < tmp.length; ++j) {

System.out.println(tmp[j]);

}

}

}

}

 注意事项:
1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .
2. 而如果是 "\" ,那么就得写成 "\\\\" .
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

6.字符串截取

从一个完整的字符串之中截取部分内容:

方法功能String substring(int beginIndex)从指定索引截取到结尾String substring(int beginIndex, int endIndex)截取部分内容

例子 

public class String_method_Test {

public static void main(String[] args) {

String str1 = "hello xiaoyu";

// 从指定索引截取到结尾

String s1 = str1.substring(6);

System.out.println(s1);

// 截取部分内容

String s2 = str1.substring(6, 10);

System.out.println(s2);

}

}

注意事项:
1. 索引从0开始
2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标

 其他一些操作方法

方法功能String trim()去掉字符串中的左右空格,保留中间空格String toUpperCase()字符串转大写String toLowerCase()字符串转小写

trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)
 

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

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

相关文章

遭遇.halo勒索病毒怎么办?如何识别和应对.halo勒索病毒

导言&#xff1a; 近年来&#xff0c;网络安全问题愈发严峻&#xff0c;其中勒索病毒成为了威胁企业和个人数据安全的重要隐患。在2023年初&#xff0c;一种新的勒索病毒——.halo勒索病毒开始在网络上肆虐&#xff0c;给广大用户带来了极大的困扰。本文91数据恢复将对.halo勒…

c3 笔记6 认识css样式表

<link>与import应该如何选择?事实上&#xff0c;使用link与import链接外部样式文件的效果看起来是一样的&#xff0c;区别在于<link>是HTML标记而import属于CSS语法。<link>标记有rel、type与href属性&#xff0c;可以指定CSS样式表的名称&#xff0c;这样就…

C#中override与重载的区别

在C#中&#xff0c;override和重载&#xff08;通常通过定义具有相同名称但不同参数列表的方法来实现&#xff09;是两个不同的概念&#xff0c;它们在用途和行为上有所区别。下面是关于override和重载的主要区别&#xff1a; override&#xff08;重写&#xff09; 定义&…

控制台调试 hover 后才出现的元素

调试 hover后才出现的元素 打开开发者工具&#xff0c;鼠标放在hover时才出现的元素上&#xff0c;然后点击右键&#xff1b; 不要选中任何选项&#xff0c;将鼠标移动到开发者工具的调试面板中&#xff1b; 按下N键&#xff0c;此时悬浮的元素不会消失&#xff0c;定位成功。…

知到java笔记(4.1--继承的用法以及this和super的用法)

格式&#xff1a; 例子&#xff1a; get set获取父类的私有变量 private属性 this和super区别&#xff1a; this用法 super用法 例子

计算机毕设

随着社会和国家的重视&#xff0c;大学对于大学生毕业设计越来越重视。 做软件设计设计方面&#xff0c;前后端分离是必不可少的&#xff0c;代码管理工具&#xff0c;前后端接口测试是项目中必须要用到的工具。做大数据设计方面&#xff0c;主要是要用到爬虫进行数据爬取&…

yum下载安装包

一、背景 对于连接网络的centos系统&#xff0c;可以直接通过yum install安装应用。 对于不能连接外部网络的centos系统&#xff0c;显然yum无法使用&#xff0c;需要将安装包拷贝到机器上安装&#xff0c;但去哪里去寻找和下载安装包呢。 二、yum downloads yum工具贴心的…

【数据分析面试】36.SAAS公司邮件营销策略分析(业务分析)

题目 假设你在一个B2B SAAS公司营销团队工作。本季度即将结束&#xff0c;但当前收入距离预期目标还差10%。营销团队的一个高管要求负责电子邮件营销的人向所有客户群发邮件&#xff0c;要求他们购买更多产品。这是个好主意吗&#xff1f;为什么&#xff1f; 提示1&#xff1…

[论文笔记]Longformer: The Long-Document Transformer

引言 今天带来论文Longformer: The Long-Document Transformer的笔记。 基于Transformer的模型由于其自注意力操作而无法处理长序列&#xff0c;该操作随着序列长度呈二次扩展。为了解决这一限制&#xff0c;本篇工作提出了Longformer&#xff0c;其注意力机制随着序列长度呈…

花一个月时间为 vue3 重制了 vue-styled-components

花一个月时间为 vue3 重制了 vue-styled-components 前言 styled-components 在 React 是一个超级热门的 css in js 工具库。其实 styled-components 也有 Vue 版本&#xff08;vue-styled-components&#xff09;&#xff0c;可惜的是只支持 Vue2&#xff0c;并且该项目已有…

接口测试之Mock测试方法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、关于Mock测试 1、什么是Mock测试&#xff1f; Mock 测试就是在测试过程中&#xff0c;对于…

跟TED演讲学英文:How to govern AI — even if it‘s hard to predict by Helen Toner

How to govern AI — even if it’s hard to predict Link: https://www.ted.com/talks/helen_toner_how_to_govern_ai_even_if_it_s_hard_to_predict? Speaker: Helen Toner Date: April 2024 文章目录 How to govern AI — even if its hard to predictIntroductionVocabu…

Python的创建和使用自定义模块

Python 的模块是组织代码的基本单元&#xff0c;它可以包含变量、函数、类等&#xff0c;并且可以被其他 Python 程序引用和重用。除了使用 Python 提供的标准库和第三方库外&#xff0c;开发者还可以创建自定义模块&#xff0c;用于组织和管理自己的代码。本文将详细介绍如何创…

美业SaaS系统多门店收银系统源码-【分润常见问题】讲解(一)

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 ▶ 分润常见问题&#xff1a; 1、分润金额基数 所有分润计算的基数均为平台订单中各个商…

解决 java: 非法字符: ‘\ufeff‘

【报错解释】&#xff1a; 该错误通常发生在尝试编译Java源代码文件时&#xff0c;文件开头的字符是一个字节顺序标记&#xff08;Byte Order Mark&#xff0c;BOM&#xff09;&#xff0c;即\ufeff。在Java中&#xff0c;\ufeff不是一个合法的字符&#xff0c;因此编译器会报…

不考408的985,不想考408的有福了!吉林大学计算机考研考情分析

吉林大学&#xff08;Jilin University&#xff09;简称吉大&#xff0c;位于吉林长春&#xff0c;始建于1946年&#xff0c;是中华人民共和国教育部直属的综合性全国重点大学&#xff0c;国家“双一流”、“211工程”、“985工程”、“2011计划”重点建设的著名学府&#xff0…

open-webui+ollama本地部署Llama3

前言 Meta Llama 3 是由 Meta 公司发布的下一代大型语言模型&#xff0c;拥有 80 亿和 700 亿参数两种版本&#xff0c;号称是最强大的开源语言模型。它在多个基准测试中超越了谷歌的 Gemma 7B 和 Mistral 7B Instruct 模型。 安装 1.gpt4all https://github.com/nomic-ai/…

[Unity常见小问题]打包ios后无法修改模型透明度

问题 在Editor下可以使用如下代码去修改模型的材质的透明度&#xff0c;但是打包ios后无法对透明度进行修改且没有任何warning和error using System.Collections; using System.Collections.Generic; using UnityEngine;public class NewBehaviourScript : MonoBehaviour {[R…

【RYG】Python技能练习场—查漏补缺(一)

1、列表删除元素 remove() 方法&#xff1a;该方法可以删除列表中指定的元素。例如&#xff1a;my_list.remove(3) 将删除列表中第一个出现的元素3。 pop() 方法&#xff1a;该方法可以删除指定位置的元素&#xff0c;并返回被删除的元素。例如&#xff1a;my_list.pop(0) 将…

【stm32-3】对射式红外传感器计次旋转编码器计数

1.对射式红外传感器计次 void EXTI_DeInit(void); //把EXTI配置都清除&#xff0c;恢复到上电默认状态 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct//指向EXTI_InitTypeDef结构体的指针&#xff0c;其中包含了EXTI外设的基本信息); //初始化 void EXTI_S…