JavaSE——String类

一、字符串构造

注意:String是引用类型,内部并不存储字符串本身。

有三种方式:

public class Test1 {public static void main(String[] args) {// 使用常量串构造String s1 = "hello java";System.out.println(s1);// 直接newString对象String s2 = new String("hai java");System.out.println(s2);// 使用字符数组进行构造char[] arr = {'h','e','l','l','o'};String s3 = new String(arr);System.out.println(s3);}
}

运行结果:

二、String对象的比较

1. ==比较是否引用同一个对象。

对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。

// 对于基本类型变量,==比较两个变量中存储的值是否相同int a = 10;int b = 20;int c = 10;System.out.println(a==b);System.out.println(a==c);


对于引用类型变量,==比较两个引用变量引用的是否为同一个对象 。

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


 2. boolean equals(Object anObject) 方法:按照字典序比较。

String s1 = new String("hello java");String s2 = new String("hello java");String s3 = new String("party");System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));

 虽然s1与s2引用的不是同一个对象,但是两个对象中放置的内容相同,因此输出true。
 s1与s3引用的不是同一个对象,而且两个对象中内容也不同,因此输出false 。

 3. int compareTo(String s) 方法

与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。

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

String s1 = new String("abc");String s2 = new String("ac");String s3 = new String("abc");String s4 = new String("abcdef");System.out.println(s1.compareTo(s2));  // 不同输出字符差值-1System.out.println(s1.compareTo(s3));  // 相同输出 0System.out.println(s1.compareTo(s4));  // 前k个字符完全相同,输出长度差值 -3

4.int compareToIgnoreCase(String str) 方法:与compareTo方式相同,但是忽略大小写比较

  String s1 = new String("abc");String s2 = new String("ac");String s3 = new String("ABc");String s4 = new String("abcdef");System.out.println(s1.compareToIgnoreCase(s2));  // 不同输出字符差值-1System.out.println(s1.compareToIgnoreCase(s3));  // 相同输出 0System.out.println(s1.compareToIgnoreCase(s4));  // 前k个字符完全相同,输出长度差值 -3

三、字符串查找

由于String类的方法较多,这里就不给大家一一演示了,感兴趣的可以参考一下官方文档。

Overview (Java Platform SE 8 ) (oracle.com)

四、转化

1.数字转字符串

       String s1 = String.valueOf(1234);String s2 = String.valueOf(12.34);String s3 = String.valueOf(true);System.out.println(s1);System.out.println(s2);

2.字符串转数字

int num1 = Integer.parseInt("123");double num2 = Double.parseDouble("123.45");System.out.println(num1);System.out.println(num2);

3. 大小写转换

String s1= "hello JAVA";String s2 = "HAI google";System.out.println(s1.toUpperCase());System.out.println(s2.toLowerCase());

 4. 字符串转数组

     String s1 = "hello JAVA";char[] arr = s1.toCharArray();for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]);}

5. 数组转字符串

//数组转字符串String s2 = new String(arr);System.out.println(s2);

五、字符串替换

方法功能
String replaceAll(String regex, String replacement)替换所有的指定内容
String replaceFirst(String regex, String replacement)替换首个内容
String str = "hello java";System.out.println(str.replace("l","6"));System.out.println(str.replaceFirst("l","J"));

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

六、字符串拆分

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

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

1.拆分处理

String s1 = "hello java get good work";String[] arr = s1.split(" ");//按照空格拆分for (String s:arr) {System.out.println(s);}

2.部分拆分

String s1 = "hello java get good work";String[] arr = s1.split(" ",2);//按照空格拆分for (String s:arr) {System.out.println(s);}

 3.拆分IP地址


String str = "192.168.1.1" ;
String[] result = str.split("\\.") ;
for(String s: result) {System.out.println(s);
}

1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" 。

2. 而如果是 "\" ,那么就得写成 "\\\\" 。
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.。

七、字符串截取

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

截取部分内容

String str = "hello java";System.out.println(str.substring(0));System.out.println(str.substring(0,5));

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

八、消除空格

方法:String trim()

功能:去掉字符串中的左右空格,保留中间空格。

public class Test1 {public static void main(String[] args) {String str = "    hello java    ";System.out.println(str.trim());}
}

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

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

相关文章

20240921全国计算机二级Python考试(大头博士计算二级)

一、背景需求&#xff1a; 20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级&#xff08;Python语言程序设计&#xff09;考试。 时隔多年&#xff0c;再次来到大学校园&#xff0c;恍若隔世 扫码找考场在哪里 考场须知 1、进考场&#xff0c;先刷身份证…

局域网内远程桌面怎么设置?3个远程桌面2个小技巧搞定!

在局域网内设置远程桌面&#xff0c;主要可以通过Windows系统自带的远程桌面功能来实现。 同时也可以借助一些专业的远程桌面软件来增强功能和安全性。 以下是详细的设置步骤及两个小技巧&#xff1a; 一、Windows系统自带远程桌面设置 1.启用远程桌面 在被控制的电脑上&am…

剑指offer JZ54 二叉搜索树的第k个节点

描述&#xff1a; 给定一棵结点数为n 二叉搜索树&#xff0c;请找出其中的第 k 小的TreeNode结点值。 1.返回第k小的节点值即可 2.不能查找的情况&#xff0c;如二叉树为空&#xff0c;则返回-1&#xff0c;或者k大于n等等&#xff0c;也返回-1 3.保证n个节点的值不一样 如…

李宏毅机器学习2023HW12—Reinforcement Learning强化学习

文章目录 TaskBaselineSimpleMedium Baseline—Policy GradientStrong Baseline——Actor-CriticBoss Baseline—Mask Task 实现深度强化学习方法: Policy GradientActor-Critic 环境&#xff1a;月球着陆器 Baseline Simple 定义优势函数(Advantage function)为执行完ac…

C++之Person类

首先设置头文件&#xff0c;将题目中的要求完成。 #include <iostream>using namespace std;class Person { public:Person();Person(string name, int id, string address);~Person();void setPerson(string name, int id, string address);void setName(string name);…

Kotlin编程全攻略:从基础到实战项目的系统学习资料

Kotlin作为一种现代、简洁的编程语言&#xff0c;正逐渐成为Android开发的新宠。本文将为您介绍一套全面的Kotlin学习资料&#xff0c;包括学习大纲、PDF文档、源代码以及配套视频教程&#xff0c;帮助您从Kotlin的基础语法到实战项目开发&#xff0c;系统地提升您的编程技能。…

2024年中国研究生数学建模竞赛B题(华为题目)WLAN组网中网络吞吐量建模一

2024年中国研究生数学建模竞赛B题&#xff08;华为题目&#xff09; WLAN组网中网络吞吐量建模 一、背景 无线局域网&#xff08;Wireless Local Area Network&#xff0c;WLAN&#xff09;是一种无线计算机网络&#xff0c;使用无线信道作为传输介质连接两个或多个设备。WL…

什么情况下会导致索引失效?

什么情况下会导致索引失效&#xff1f; 1. 组合索引非最左前缀2. LIKE查询%开头3. 字符串未加引号4. 不等比较5. 索引列运算6. OR连接查询 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1. 组合索引非最左前缀 描述&#xff1a;在组合索引…

Linux之实战命令02:shred应用实例(三十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

python sql中带引号字符串(单双引号)转义处理

描述&#xff1a; 最近在爬取数据保存到数据库时&#xff0c;遇到有引号的字符串插入MySQL报错&#xff1a;1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 转义字符串…

【大模型实战篇】关于Bert的一些实操回顾以及clip-as-service的介绍

最近在整理之前的一些实践工作&#xff0c;一方面是为了笔记记录&#xff0c;另一方面也是自己做一些温故知新&#xff0c;或许对于理解一些现在大模型工作也有助益。 1. 基于bert模型实现中文语句的embedding编码 首先是基于bert模型实现中文语句的embedding编码&#xff0c;…

828华为云征文|Flexus X实例GitLab部署构建流水线-私人一体化代码仓库~

目录 前言Gitlab 环境准备 GitLab部署 拉取GitLab镜像 创建映射目录 运行GitLab容器 修改gitlab.rb配置 开放端口 切换语言 创建项目 添加ssh密钥 克隆代码 CICD 什么是CICD Gitlab中使用CICD 什么是Runner 安装GitLab Runner 获取注册令牌 runner注册 交互…

2024华为杯数学建模竞赛E题

2024年中国研究生数学建模竞赛E题 高速公路应急车道紧急启用模型 高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&…

8-Python基础编程之数据类型操作——字典和集合

Python基础编程之数据类型操作——字典和集合 字典概念定义意义操作增删改查遍历计算和判定 集合概念定义可变集合不可变集合 操作单一集合操作增删查 集合之间操作交集并集差值判定 字典 概念 无序的&#xff0c;可变的键值对的集合 定义 方式一直接定义&#xff1a; per…

Springboot使用ThreadPoolTaskScheduler轻量级多线程定时任务框架

简介&#xff1a; Spring注解定时任务使用不是很灵活&#xff0c;如果想要灵活的配置定时任务&#xff0c;可以使用xxl-job 或者 quartz等定时任务框架&#xff0c;但是过于繁琐&#xff0c;可能成本较大。所以可以使用ThreadPoolTaskScheduler来灵活处理定时任务 ThreadPoolT…

2024 ICPC ShaanXi Provincial Contest —— C. Seats(个人理解)拓扑+dfs

2024 ICPC ShaanXi Provincial Contest —— C. Seats&#xff08;个人理解&#xff09;拓扑dfs 先放个传送门 https://codeforces.com/gym/105257/problem/C ———————————————————————————————————— 思路 可以看到&#xff0c;每一个编…

Vision Based Navigation :针对航天领域的基于视觉导航机器学习应用生成训练数据集

2024-09-18 由欧洲空间局主导&#xff0c;由空客防务与空间公司参与创建Vision Based Navigation &#xff0c; 为空间任务中的基于视觉导航&#xff08;VBN&#xff09;机器学习应用生成训练数据集。 目前遇到的困难和挑战 1、数据集的可用性和充分性&#xff1a; 挑战&#x…

BFS 解决多源最短路问题

文章目录 多源BFS542. 01 矩阵题目解析算法原理代码实现 1020. 飞地的数量题目解析算法原理 1765. 地图中的最高点题目解析算法原理代码实现 1162. 地图分析题目解析算法原理代码实现 多源BFS 单源最短路&#xff1a; 一个起点、一个终点 多源最短路&#xff1a; 可以多个起点…

9.安卓逆向-安卓开发基础-安卓四大组件2

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。 工…

[云服务器13] 如何正确选择云服务器?

【非广告&#xff0c;仅提供建议&#xff0c;没有强制消费引导】 这期我们不讲搭建教程了&#xff0c;因为我想到前面12篇的教程&#xff0c;有关套餐配置的教程好像都有点敷衍…… 所以这期我们主要来说一说服务器的配置选择和不同配置的应用场景。 网站: 雨云 打开后&…