Java笔记——String类各种方法的使用总结(附带实例)

news2024/11/29 12:30:23

String类的获取方法

String类实现获取功能的方法有

int length() —— 获取字符串长度

char charAt(int index) —— 获取指定索引处的字符值

int indexOf(int ch) —— 获取指定字符第一次出现的索引位置

int indexOf(String str) —— 获取指定字符串第一次出现的索引位置

int indexOf(int ch,int fromIndex) —— 从指定位置开始获取指定字符第一次出现的索引位置

int indexOf(String str,int fromIndex) —— 从指定位置开始获取指定字符串第一次出现的索引位置

String substring(int start) —— 截取字符串,范围是从start到最后

String substring(int start,int end) —— 截取字符串,范围是【start,end)

package test.StringDemo;

public class demo6 {

public static void main(String[] args) {

String s = “helloworld”;

//int length() 获取字符串的长度

System.out.println(s.length()); // 10

System.out.println(“=============”);

//public char charAt(int index)返回char指定索引处的值

//索引值的范围是从0开始到length()-1

System.out.println(s.charAt(0)); // h

System.out.println(s.charAt(9)); // d

//System.out.println(s.charAt(10)); //字符串下标越界异常

System.out.println(“=============”);

//public int indexOf(int ch)返回指定字符第一次出现的字符串内的索引。

//括号里面传入的是指定字符对应的ASCII码值,具体写的时候写ASCII码值和直接写字符都可以

System.out.println(s.indexOf(104)); // 0

System.out.println(s.indexOf(‘l’)); // 2

System.out.println(s.indexOf(‘a’)); //不存在,返回-1

System.out.println(“=============”);

//public int indexOf(String str)

//返回括号中指定的子字符串第一次出现的索引

System.out.println(s.indexOf(“owo”)); // 4

System.out.println(s.indexOf(“ovo”)); //不存在,返回-1

System.out.println(“=============”);

// public int indexOf(int ch,int fromIndex)

// 返回指定字符第一次出现的索引,以指定的索引开始搜索,搜索范围包括指定的索引

System.out.println(s.indexOf(‘l’,4)); // 8

System.out.println(s.indexOf(‘e’,1)); // 1

System.out.println(s.indexOf(‘h’,1)); //不存在,返回-1

System.out.println(“=============”);

//int indexOf(String str,int fromIndex)

//返回指定字符串第一次出现的索引,以指定的索引开始搜索

System.out.println(s.indexOf(“owo”,2)); // 4

System.out.println(s.indexOf(“owo”,8)); //不存在,返回-1

System.out.println(“=============”);

//public String substring(int beginIndex) 截取一段字符串

// 子字符串以指定索引处的字符开头,包括指定索引处,并扩展到该字符串的末尾。

System.out.println(s.substring(3)); // loworld

// 索引超出范围,返回空字符串

String ss = s.substring(10);

System.out.println(ss.equals(“”)); // true

System.out.println(“=============”);

//public String substring(int beginIndex,int endIndex)

//子串截取范围左闭右开,开始于指定beginIndex并延伸到字符索引endIndex-1

System.out.println(s.substring(1,3)); // el

//System.out.println(s.substring(1,12)); //数组下标越界异常

}

}

String类的转化方法

String类实现转换功能的方法有

byte[] getBytes() —— 转换为字节数组

char[] toCharArray() —— 转换为字符数组

static String valueOf(char[] chs) —— 字符数组转换为字符串

static String valueOf(int i) —— int值转换为字符串

String toLowerCase() —— 字符串全部小写

String toUpperCase() —— 字符串全部大写

String concat(String str) —— 将指定字符串连接到原字符串的后面

package test.StringDemo;

import java.util.Arrays;

public class demo7 {

public static void main(String[] args) {

String s = “helloWORLD”;

//public byte[] getBytes()

// 使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。

byte[] b = s.getBytes();

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

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

}

//也可以像下面这样打印,只需要一行

//[104, 101, 108, 108, 111, 87, 79, 82, 76, 68]

System.out.println(Arrays.toString(b));

System.out.println(“===============”);

//char[] toCharArray()将此字符串转换为新的字符数组。

//由原先的字符串变成字符数组

char[] chars = s.toCharArray();

for(char c:chars){

System.out.println©;

}

//[h, e, l, l, o, W, O, R, L, D]

System.out.println(Arrays.toString(chars));

System.out.println(“===============”);

//将字符数组转换为字符串

//static String valueOf(char[] chs)

System.out.println(String.valueOf(chars)); //helloWORLD

//同理这里也可以将int类型的数据转换为字符串类型

String ss = String.valueOf(20);

System.out.println(ss); //20

System.out.println(“===============”);

//String toLowerCase() 将字符串内容全部转化成小写

System.out.println(s.toLowerCase()); //helloworld

// String toUpperCase(),将字符串内容全部转大写

System.out.println(s.toUpperCase()); //HELLOWORLD

System.out.println(s); //helloWORLD,s自身的值并没有被改变

System.out.println(“===============”);

//public String concat(String str)将指定的字符串连接到该字符串的末尾

System.out.println(s.concat(“java”)); //helloWORLDjava

//这里同样需要注意的是

String s2 = null;

//这里会报空指针异常的错误

//System.out.println(s2.concat(“nothing”));

}

}

字符串的替换方法

实现替换功能的方法

String replace(char old,char new)

String replace(String old,String new)

package test.StringDemo;

public class demo10 {

public static void main(String[] args) {

String s = “helloworld”;

//String replace(char old,char new)替换字符

//将字符串中所有的l替换成a,返回一个新的字符串

String s1 = s.replace(‘l’,‘a’);

System.out.println(s1); //heaaoworad

//String replace(String old,String new)替换字符串

String s2 = s.replace(“owo”,“ovo”);

System.out.println(s2); //hellovorld

//如果被替换的字符串不存在,返回原来的字符串

String s3 = s.replace(“abc”,“efg”);

System.out.println(s3); //helloworld

}

}

去除字符串两边的空格

String trim()

package test.StringDemo;

public class demo11 {

public static void main(String[] args) {

//去除字符串两边的空格

String s = " hello ";

System.out.println(s);

System.out.println(s.trim());

}

}

在这里插入图片描述

按字典顺序比较两个字符串

int compareTo(String str) —— 按位置比较字符串

int compareToIgnoreCase(String str) ——按位置比较字符串,忽略大小写

package test.StringDemo;

public class demo12 {

public static void main(String[] args) {

//当前面的字符不相同时

String s1 = “hello”; //h的ASCII码值为104

String s2 = “hello”;

String s3 = “java”; //j的ASCII码值为106

String s4 = “apache”; //a的ASCII码值为97

System.out.println(s1.compareTo(s2)); //0

System.out.println(s1.compareTo(s3)); //-2

System.out.println(s1.compareTo(s4)); //7

//当前面的字符相同时

String ss1 = “hel”;

String ss2 = “helloworld”;

System.out.println(s1.compareTo(ss1)); //2

System.out.println(s1.compareTo(ss2)); //-5

//忽略大小写

String s5 = “Hello”; //H的ASCII码值为72

System.out.println(s1.compareTo(s5)); //32

System.out.println(s1.compareToIgnoreCase(s5)); //0

}

}

这里可以来看一下compareTo的源码

public int compareTo(String anotherString) {

int len1 = value.length;

int len2 = anotherString.value.length;

int lim = Math.min(len1, len2);

char v1[] = value;

char v2[] = anotherString.value;

int k = 0;

while (k < lim) {

char c1 = v1[k];

char c2 = v2[k];

if (c1 != c2) {

return c1 - c2;

}

k++;

}

return len1 - len2;

}

这里可以简单的总结为,

当对应位置的字符不相同时,返回的值是ASCII码值相减的结果。

当对应位置的字符都相同,但是字符个数不相同时,返回的是字符串长度相减的结果。

练习用的题目

题目一:统计一个字符串中大写字母,小写字母,数字出现的次数

package test.StringDemo;

public class demo8 {

public static void main(String[] args) {

String s = “helloHello123World”;

char[] chars = s.toCharArray();

int Bigcount = 0;

int Smallcount = 0;

int Numcount = 0;

for(char c:chars){

if(c>=‘A’&&c<=‘Z’){

Bigcount++;

}

else if(c>=‘a’&&c<=‘z’){

Smallcount++;

}

//这里注意一下,不能用(int)c的方式,因为字符’1’对应的int值是49

else if(c>=‘0’&&c<=‘9’){

Numcount++;

}

}

System.out.println(“大写字母个数”+Bigcount

+“小写字母个数”+Smallcount

+“数字个数”+Numcount);

}

}

在这里插入图片描述

题目二:把一个字符串的首字母转成大写,其余的都是小写

package test.StringDemo;

public class demo9 {

public static void main(String[] args) {

String s = “helloWORLD”;

String sHead = s.substring(0,1);

System.out.println(sHead);

String sTail = s.substring(1);

System.out.println(sTail);

String sLower = sTail.toLowerCase();

String sUpper = sHead.toUpperCase();

String sWhole = sUpper+sLower;

System.out.println(sWhole);

//也可以合成进一步里面写

String ss = s.substring(0,1).toUpperCase()

.concat(s.substring(1).toLowerCase());

System.out.println(ss);

}

}

在这里插入图片描述

题目三,反转字符串

package test.StringDemo;

public class demo13 {

public static void main(String[] args) {

String s = “hello”;

char[] chars = s.toCharArray();

char[] c = new char[chars.length];

String s1 = “”;

for(int i=chars.length-1;i>=0;i–){

s1 += chars[i];

}

System.out.println(s1);

}

}

在这里插入图片描述

题目四:统计某一段字符串出现的次数

package test.StringDemo;

public class demo14 {

public static void main(String[] args) {

String s = “woaijavawoaijavawoaijavawoaijava”;

String minString = “java”;

int index = s.indexOf(minString);

int count = 0;
840c442.png)

题目三,反转字符串

package test.StringDemo;

public class demo13 {

public static void main(String[] args) {

String s = “hello”;

char[] chars = s.toCharArray();

char[] c = new char[chars.length];

String s1 = “”;

for(int i=chars.length-1;i>=0;i–){

s1 += chars[i];

}

System.out.println(s1);

}

}

在这里插入图片描述

题目四:统计某一段字符串出现的次数

package test.StringDemo;

public class demo14 {

public static void main(String[] args) {

String s = “woaijavawoaijavawoaijavawoaijava”;

String minString = “java”;

int index = s.indexOf(minString);

int count = 0;

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

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

相关文章

ArrayDeque源码解析

ArrayDeque源码解析 问题 &#xff08;1&#xff09;什么是双端队列&#xff1f; &#xff08;2&#xff09;ArrayDeque 是怎么实现双端队列的&#xff1f; &#xff08;3&#xff09;ArrayDeque 是线程安全的吗&#xff1f; &#xff08;4&#xff09;ArrayDeque 是有界的…

【正点原子FPGA连载】 第三十五章双目OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第三十五章双目O…

基于jsp+mysql+ssm二手书交易管理系统-计算机毕业设计

项目介绍 这样一个二手书交易网站为用户提供了一个可以在网上买卖图书的平台&#xff0c;用户可以通过二手书交易管理系统进行注册或登录操作&#xff0c;登录成功后可以查看自己已发布的售书信息或者求购信息。同时&#xff0c;用户可以浏览其他用户发布的售书信息和求购信息…

基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改

基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改 仿真图proteus 8.9 程序编译器&#xff1a;keil 4/5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0027 视频演示 基于51单片机的多层电梯(1-16层)运行系统仿真设计演示视频主要功能&#xff1a; 结合实际情…

[附源码]Python计算机毕业设计SSM基于web的学生社团管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计SSM基于的二手房交易系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 Ma…

基于Java+SQL Server2008开发的(WinForm)个人财物管理系统【100010036】

一、需求分析 个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展&#xff0c;计算机在管理方面应用的旁及&#xff0c;利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的&#xff0c;其次对个人财务管理…

2022年12月中国数据库排行榜:OceanBase立足创新登榜首,华为腾讯排名上升树雄心

不经一番寒彻骨&#xff0c;怎得梅花扑鼻香。 2022年12月的 墨天轮中国数据库流行度排行榜 火热出炉&#xff0c;本月共有249个数据库参与排名&#xff0c;相比上月新增3个数据库。本月排行榜前十用一句话可以概括为&#xff1a;榜单前十一片红&#xff0c;TODO 格局重洗牌&…

[附源码]Python计算机毕业设计SSM基于web技术的米其林轮胎管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringBoot中使用Spring-Retry重试框架 - 第454篇

悟纤&#xff1a;最近我看到自己之前的try/catch、while代码进行请求的重试&#xff0c;看着很不舒服。 师傅&#xff1a;确实了&#xff0c;为师以前也是写出过这样的一堆难看的代码。 悟纤&#xff1a;那师傅这个事情有解吗&#xff1f; ​师傅&#xff1a;徒儿&#xff0c;…

博客网页制作基础大二dw作业 web课程设计网页制作 个人网页设计与实现 我的个人博客网页开发

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

2022全年度平板电视十大热门品牌销量榜单

随着社会的发展&#xff0c;近年来&#xff0c;平板电视成为了彩电转型升级的新方向。随着我国传统彩电进入存量竞争阶段&#xff0c;平板电视已成为我国彩电行业结构调整和转型升级的主要方向。 根据鲸参谋数据统计&#xff0c;今年京东平台平板电视的年度累计销量达到1300多万…

< 在element-ui中: 使用el-tree + el-table组件,联动请求用户数据表格组件 (基础版,后续可能更新) >

文章目录&#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、原理&#x1f449; 三、实现代码往期内容 &#x1f4a8;&#x1f449; 前言 在 Vue elementUi 开发中&#xff0c;实现通过树状组织机构&#xff0c;点击查询用户信息联动效果&#xff01; 组件较为简…

MySQL数据库学习(6)

一、MySQL索引简介 索引是一种特殊的数据库结构&#xff0c;由数据表中的一列或多列组合而成&#xff0c;可以用来快速查询数据表中有某一特定值的记录。 通过索引&#xff0c;查询数据时不用读完记录的所有信息&#xff0c;而只是查询索引列。不然的话&#xff0c;数据库系统将…

强化学习_06_pytorch-doubleDQN实践(Pendulum-v1)

环境描述 环境是倒立摆&#xff08;Inverted Pendulum&#xff09;&#xff0c;该环境下有一个处于随机位置的倒立摆。环境的状态包括倒立摆角度的正弦值&#xff0c;余弦值&#xff0c;角速度&#xff1b;动作为对倒立摆施加的力矩(action Box(-2.0, 2.0, (1,), float32))。…

windows11安装cuda+cudnn

安装Nvidia显卡驱动 如需安装显卡驱动&#xff0c;在官方驱动下载网站找到自己的显卡型号对应的驱动下载并安装:官方驱动 | NVIDIA 安装CUDA 前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cu…

Qt扫盲-QLineEdit理论总结

QLineEdit理论总结1. 简述2. 输入模式3. 输入限制4. 文本操作槽函数3. 信号4. 快捷键5. 外观1. 简述 QLineEdit 是一个有用的编辑功能类&#xff0c;主要是处理输入和编辑单行纯文本 &#xff0c;主要是单行哦&#xff0c;就用来输入简单&#xff0c;短小的字符串。内部其实已…

极客时间Kafka - 09 Kafka Java Consumer 多线程开发实例

文章目录1. Kafka Java Consumer 设计原理2. 多线程方案3. 代码实现4. 问题思考目前&#xff0c;计算机的硬件条件已经大大改善&#xff0c;即使是在普通的笔记本电脑上&#xff0c;多核都已经是标配了&#xff0c;更不用说专业的服务器了。如果跑在强劲服务器机器上的应用程序…

JSP ssh科研管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh科研管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myec…

Core Scheduling

Core Scheduling要解决什么问题&#xff1f; core scheduling是v5.14中新增的功能&#xff0c;下图是内核数据结构为该功能所添加的字段。 为什么有core scheduling呢&#xff1f;因为当开启超线程(HyperThreading)时&#xff0c;一个物理核就变成了两个逻辑核&#xff0c;但&…