当前位置: 首页 > news >正文

Java基础知识(六) 字符串

六 字符串

6.1 String字符串

1、String类对象创建

定义String类对象格式:**
1)String 字符串变量名=“字符串常量”;
2)String 字符串变量名=new String(字符串常量);
3)String 字符串变量名;
字符串变量名=“字符串常量”;

public class StringDemo {public static void main(String[] args) {String s1="java is beautiful";//字符串变量String s2=new String("hello java!");String s3;s3="JAVA";System.out.println(s1);System.out.println(s2);System.out.println(s3);}}

2、String类对象的常用基本方法

字符串变量通过点“.”方式调用,即字符串变量.方法名()

1、获取字符串长度方法
length()
2、字符串拼接
concat()
3、字符串比较
equals()
4、字符串代替
replace()
5、去掉字符串首尾空格,返回字符串
trim()
6、返回字符串对象
toString()
7、返回字符串中所有字符转变为大写的新字符串
toUpperCase()
8、获取给定的index处字符串
charAt()public class StringDemo {public static void main(String[] args) {String s1="java is beautiful";//字符串变量String s2=new String("hello java!");String s3;s3="JAVA";String s4 =" java and python ";System.out.println(s1);System.out.println(s2);System.out.println(s3);System.out.println("========================");//获取字符串的长度System.out.println("s1的长度为:"+s1.length());//字符串拼接System.out.println(s1.concat(s2));//s2拼接到s1中//字符串比较System.out.println("JAVA".equals(s3));//两个字符串比较,忽略大小写System.out.println("java".equalsIgnoreCase(s3));//字符串代替 replaceSystem.out.println(s1.replace("java", "JAVA"));//去掉字符串首尾空格,返回字符串System.out.println(s4.trim());//返回字符串对象System.out.println(s4.toString());//返回字符串中所有字符转变为大写的新字符串System.out.println(s4.toUpperCase());//获取给定的index处字符串System.out.println(s4.charAt(1));}}运行结果:
java is beautiful
hello java!
JAVA
========================
s1的长度为:17
java is beautifulhello java!
true
true
JAVA is beautiful
java and pythonjava and python JAVA AND PYTHON 
j

3、遍历字符串中的所有字符,并打印

public class BianliDemo {public static void main(String[] args) {String s1="java is beautiful";for(int i=0;i<s1.length();i++) {System.out.print(s1.charAt(i));}}}运行结果:
java is beautiful

4、单词计数案例

方法一:import java.util.Scanner;// 统计单词的个数。
class CountWords {public static void main(String[] args) {// 输入Scanner sc = new Scanner(System.in);// 输入一行(可以接收一行的数据)String str = sc.nextLine();// 默认有0个单词int wordcount=0;// 从第一个到最后一个字符for(int i=0;i<str.length();i++){// 如果遇到了空格表示一个单词的结束。if(str.charAt(i)==' '){// 累加wordcount++;}}// 输出字符串System.out.println(str);// 输出单词的个数。System.out.println(wordcount+1);}
}方法二:
import java.util.Scanner;public class WordCount {public static void main(String[] args) {//计数器int count = 0 ;System.out.println("输入一系列以空格隔开的字符串");Scanner sc = new Scanner(System.in);//忽略字符串头尾的空白String str = sc.nextLine().trim();String[]  words = str.split(" ");for(int i = 0 ; i < words.length; i++) {if(!words[i].equals("")) {//不为空格时才计数(即只计算单词数)count++;}}System.out.println("一共有"+count+"个单词");sc.close();}}

6.2 StringBuffer类

当String类字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题线程安全的可变字符序列。

1、StringBuffer类对象创建

定义StringBuffer类对象格式:
1)StringBuffer 字符串变量名 =new StringBuffer();//默认长度16字符
2)StringBuffer 字符串变量名 =new StringBuffer(缓冲区长度);
3)StringBuffer 字符串变量名 =new StringBuffer(“字符串常量”);

public class StringBufferDemo {public static void main(String[] args) {StringBuffer s2 =new StringBuffer();//默认长度16字符StringBuffer s3 =new StringBuffer(50);//长度为50StringBuffer s4 =new StringBuffer("i like java");System.out.println("s2="+s2);System.out.println("s3="+s3);System.out.println("s4="+s4);}}public class StringBufferDemo {public static void main(String[] args) {StringBuffer s1 =new StringBuffer();//默认长度16字符System.out.println("s1的缓冲区长度:"+s1.capacity());//查看对象缓冲区长度System.out.println("s1的长度:"+s1.length());StringBuffer s2 =new StringBuffer(50);//缓冲区长度为50System.out.println("s2的缓冲区长度:"+s2.capacity());//查看对象缓冲区长度System.out.println("s2的长度:"+s2.length());StringBuffer s3 =new StringBuffer("i like java python");System.out.println("s3的缓冲区长度:"+s3.capacity());//查看对象缓冲区长度  16+11=27System.out.println("s3的长度:"+s3.length());}}运行结果:
s1的缓冲区长度:16
s1的长度:0
s2的缓冲区长度:50
s2的长度:0
s3的缓冲区长度:34//16+18
s3的长度:18

2、StringBuffer类成员方法

1append():添加、增加public class ChengYuanWay {public static void main(String[] args) {//append:添加StringBuffer S1 =new StringBuffer("i like java");System.out.println("原来的S1:"+S1);//append()  :S1.append()S1.append(",html,web");System.out.println("添加后的S1:"+S1);}}注意:该方法多次重写public class ChengYuanWay {public static void main(String[] args) {//append:添加StringBuffer S1 =new StringBuffer("i like java");System.out.println("原来的S1:"+S1);//append()  :S1.append()S1.append(",html,web").append(",python").append(",php");System.out.println("添加后的S1:"+S1);}}
public class ChengYuanWay {public static void main(String[] args) {//append:添加StringBuffer S1 =new StringBuffer("i like java");System.out.println("原来的S1:"+S1);//append()  :S1.append()S1.append(",html,web").append(",python").append(",php语言").append(12.67);System.out.println("添加后的S1:"+S1);}}2insert():在指定的索引上,插入字符串public class InsertDemo {public static void main(String[] args) {StringBuffer S=new StringBuffer("abcd  祖国  ");System.out.println("原来的S:"+S);//insert添加元素  1)找到位置?  找到位置之后在这个位置添加我们要添加的元素S.insert(0, "F").insert(3, "G");//a索引0:0就是它的位置System.out.println("添加元素后的S:"+S);}
}append()insert()区别:a、append()只能在字符串的结尾添加,而insert()在指定的索引上,插入字符串b、insert()两个参数,第一个参数索引(位置),第二参数你要添加什么值  通过索引值找到位置才能添加3deleteCharAt(int index):删除指定索引的值4delete(int start,int end)删除此序列的子字符串中的字符,子串开始于指定start并延伸到字符索引end - 15)replace:替换   6)reverse:反转7)substring:截取
public class StringBufferDemo {public static void main(String[] args) {// replace:替换StringBuffer s =new StringBuffer();s.append("hello java");System.out.println(s);System.out.println(s.length());s.replace(6, 10, "html");System.out.println("替换之后的s:"+s);//反转:reverse()StringBuffer s1=new StringBuffer();s1.append("我爱你");System.out.println(s1);s1.reverse();System.out.println("反转之后的s1:"+s1);//截取:substringStringBuffer s2=new StringBuffer();s2.append("java").append(" html").append(" php").append(" web").append("python");System.out.println(s2);String s3= s2.substring(4, 10);System.out.println(s3);}}

3、统计大、小写以及数字出现次数案例

案例:键盘输入字符串(absDGHS345;;;),统计该字符串中的大写字母、小写字母、数字字符出现的次数import java.util.Scanner;public class CountStringDemo {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc =new Scanner(System.in);System.out.println("请输入一串字符串:");String str=sc.next();int bigc=0;int smallc=0;int numc=0;for(int i=0;i<str.length();i++) {char c=str.charAt(i);if(c>='a' &&c<='z') {smallc++;}else if (c>='A' &&c<='Z') {bigc++;}else if (c>='0' &&c<='9') {numc++;}}System.out.println("大写字母有"+bigc+"个");System.out.println("小写字母有"+smallc+"个");System.out.println("数字有"+numc+"个");}}

相关文章:

Java基础知识(六) 字符串

六 字符串 6.1 String字符串 1、String类对象创建 定义String类对象格式&#xff1a;** 1&#xff09;String 字符串变量名“字符串常量”&#xff1b; 2&#xff09;String 字符串变量名new String(字符串常量); 3&#xff09;String 字符串变量名; 字符串变量名“字符串常…...

为什么跨境电商大佬都在自养号测评?看完你就懂了!

在跨境电商的激烈竞争中&#xff0c;各大平台如亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、煤炉、敦煌、独立站、雅虎、eBay、TikTok、Newegg、Allegro、乐天、美客多、阿里国际、沃尔玛、Nike、OZON、Target以及Joom等&#xff0c;纷纷成为商家们竞相角逐市场份额的焦…...

AtCoder Beginner Contest 353

A 题意&#xff1a;检查是否有比第一个数大的数 #include<bits/stdc.h>using namespace std;int main() {int n;cin>>n;int a;cin>>a;int f0;for(int i2;i<n;i){int k;cin>>k;if(k>a){cout<<i<<endl;f1;break;}}if(f0){cout<&l…...

深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)

目录 前言 具有虚基类的对象的构造过程 通过子类的对象存取虚基类成员的实现分析 接下来我将持续更新“深度解读《深度探索C对象模型》”系列&#xff0c;敬请期待&#xff0c;欢迎左下角点击关注&#xff01;也可以关注公众号&#xff1a;iShare爱分享&#xff0c;或文章末…...

计算机Java项目|Springboot房产销售系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…...

学习3D几何和特征一致的高斯溅射目标去除

earning 3D Geometry and Feature Consistent Gaussian Splatting for Object Removal 学习3D几何和特征一致的高斯溅射目标去除 Yuxin Wang 王玉欣 HKUST &Qianyi Wu Monash University &Guofeng Zhang Zhejiang University &Dan Xu HKUST 香港科技大学&吴倩…...

PHP 使用常量实现枚举类

PHP 使用常量实现枚举类 <?php abstract class Enum {private static $constCacheArray NULL;private static function getConstants() {if (self::$constCacheArray NULL) {self::$constCacheArray [];}$calledClass get_called_class();if (!array_key_exists($call…...

Linux操作系统基础题库

一. 单选题&#xff08;共2题&#xff0c;40分&#xff09; 1. (单选题)Linux操作系统自诞生至今&#xff0c;有数十万的程序开发人员参与到了它的开发与完善中&#xff0c;如今Linux已发展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。…...

Java抽象类:为何它是你代码架构的基石?

目录 1、抽象类的概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 5、 完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克…...

Flutter 中的 ToggleButtons 小部件:全面指南

Flutter 中的 ToggleButtons 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;ToggleButtons 是一种允许用户在一组选项中进行切换选择的控件。它通常用于展示一组相关选项&#xff0c;让用户可以快速切换选择。ToggleButtons 是一种水平排列的按钮集合&#xff0c;其中…...

【MYSQL】一颗B+树可以保存多少条数据

引言 事万物都有自己的单元体系&#xff0c;若干个小单体组成一个个大的个体。就像拼乐高一样&#xff0c;可以自由组合。所以说&#xff0c;如果能熟悉最小单元&#xff0c;就意味着我们抓住了事物的本事&#xff0c;再复杂的问题也会迎刃而解。 存储单元 存储器范围比较大…...

ssm125四六级报名与成绩查询系统+jsp

四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…...

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面&#xff0c;用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …...

内容安全(DPI和DFI解析)

内容安全前言&#xff1a; 防火墙的本质其实就是包过滤&#xff0c;我们通常所说的安全设备&#xff08;如&#xff1a;IPS、IDS、AV、WAF&#xff09;的检测重心是应用层。下一代防火墙基于传统防火墙的拓展能力&#xff0c;就是可以将以上的安全设备模块集成在一起&#xff0…...

2024数维杯数学建模A题B题C题思路+模型+代码(开赛后第一时间更新)

2024数维杯数学建模A题B题C题思路模型代码&#xff08;开赛后第一时间更新&#xff09; https://mbd.pub/o/bread/ZpWakpdq https://mbd.pub/o/bread/ZpWakpdq 2024年第九届数维杯大学生数学建模挑战赛参赛规则 竞赛要求及论文提交方式; ①本次参赛作品统一在线提交到竞赛…...

SpringSecurity多表,多端账户登录

本文章对应视频SpringSecurity6多端账号登录&#xff0c;可无限扩展教程&#xff0c;记得三连哦&#xff0c;这对我很重要呢&#xff01; 温馨提示&#xff1a;视频与文章相辅相成&#xff0c;结合学习效果更强哦&#xff01;更多视频教程可移步B站【石添的编程哲学】 SpringSe…...

绝地求生PUBG新老艾伦格有什么差别 老艾伦格什么时候回归

复古风格的艾伦格原始地图携带着那些标志性的记忆符号华丽回归&#xff0c;邀请您沉浸于往昔的每一处细节探索中。我们不仅还原了游戏诞生的起点&#xff0c;还在其中巧妙融入现代游戏元素&#xff0c;构筑一座连接昔日与今朝的桥梁&#xff0c;完美融合了经典与创新的游戏体验…...

Windows下安装Node.js、npm和electronic,并运行一个Hello, World!脚本程序

20240510 By wdhuag 目录 简介&#xff1a; 参考&#xff1a; 安装Node.js 安装npm 配置npm&#xff1a; 修改包存放目录和缓存目录 切换镜像源 使用 nrm 切换镜像源 安装Electron 运行一个Hello, World!脚本程序 安装Yarn JavaScript 指南 简介&#xff1a; Nod…...

【精品案例】化工炼化企业信息化建设解决方案(74页PPT)

一、资料介绍 化工炼化企业信息化建设解决方案是一份详尽且全面的指导文件&#xff0c;旨在助力化工炼化企业实现信息化、智能化和数字化转型。本资料以74页的PPT形式呈现&#xff0c;围绕智能化工程施工方案、化工炼化企业信息化以及化工行业数字化转型等关键词&#xff0c;为…...

【Unity Animation 2D】Unity Animation 2D骨骼绑定与动画制作

一、图片格式为png格式&#xff0c;并且角色各部分分离 图片参数设置 需要将Sprite Mode设置为Single&#xff0c;否则图片不能作为一个整体 1、创建骨骼 1.1 旋转Create Bone&#xff0c;点击鼠标左键确定骨骼位置&#xff0c;移动鼠标再次点击鼠标左键确定骨骼&#xff0c…...

工器具管理(基于若依)

文章目录 前言一、工器具管理项目总览 二、入库功能1. 前端1.1 界面展示1.2 具体操作实现1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具入库 三、领用功能1. 前端1.1 界面展示1.2 具体实现操作1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具领用 遇到的问题1. 同一页面展示…...

UE4_照亮环境_光束light beam

学习笔记&#xff0c;不喜勿喷&#xff0c;侵权立删&#xff01;祝愿生活越来越好&#xff01; 光束&#xff1a;模拟大气中散射的光线。利用定向光源模拟真实曙暮光效果或大气散射的阴影&#xff0c;即可生成 光束 。这些光线为场景添加深度和真实度。 一&#xff1a;一些参数…...

springboot3项目练习详细步骤(第三部分:文章管理模块)

目录 发布文章 接口文档 业务实现 自定义参数校验 项目参数要求 实现思路 实现步骤 文章列表(条件分页) 接口文档 业务实现 mapper映射 更新文章 接口文档 业务实现 获取文章详情 接口文档 业务实现 删除文章 接口文档 业务实现 文章管理业务表结构…...

【面试八股总结】C++11新特性:智能指针

参考资料 &#xff1a;阿秀、代码随想录 智能指针是一个类&#xff0c;用于存储指向动态分配对象的指针&#xff0c;负责自动释放动态分配的对象&#xff0c;防止堆内存泄露。动态分配的资源&#xff0c;交给一个类对象去管理&#xff0c;当类对象声明周期结束时&#xff0c;自…...

【教程向】从零开始创建浏览器插件(二)深入理解 Chrome 扩展的 manifest.json 配置文件

第二步&#xff1a;深入理解 Chrome 扩展的 manifest.json 配置文件 上一次我们已经着手完成了一个自己的浏览器插件&#xff0c;链接在这里&#xff1a;我是链接 在本篇博客中&#xff0c;我们将更详细地探讨 Chrome 扩展中的 manifest.json 文件。这个文件是每个浏览器扩展…...

美易官方:美国房地产贷款逾期率飙升,银行业危机仍可控?现货黄金暂守2360

美国房地产贷款逾期率飙升&#xff0c;银行业危机仍可控&#xff1f;现货黄金暂守2360 近年来&#xff0c;美国房地产市场一直处于波动之中&#xff0c;尤其是商业房地产领域。近期&#xff0c;美联储发出警告&#xff0c;称商业房地产贷款逾期率持续攀升&#xff0c;银行正在为…...

SwiftUI中的@StateObject和@ObservedObject的区别

SwiftUI中的StateObject和ObservedObject属性包装器指示视图更新以响应被观察对象的变化。虽然这两个属性包装器看起来很相似&#xff0c;但在使用SwiftUI构建应用程序时&#xff0c;有一个关键的区别需要理解。 两个属性包装器都要求对象符合ObservableObject协议。这个协议表…...

类与对象(二)

封装 封装作为面向对象三大特性&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;之一&#xff0c;那如何实现封装性的呢&#xff1f;就又得拿出上面的访问修饰限定符的图 public: 就是在任何地方都可以访问 protected: 涉及子类在介绍继承时详细介绍 default: …...

LeetCode/NowCoder-链表经典算法OJ练习2

最好的&#xff0c;不一定是最合适的&#xff1b;最合适的&#xff0c;才是真正最好的。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;分割链表 题目二&#xff1a;环形链表的约瑟夫问题 SUMUP结尾 说在前面 dear朋友们大家好&#xff01;&…...

英伟达解码性能NVDEC

如果你能打开官网&#xff0c;请看这里&#xff1a; NVDEC Application Note 下面是摘录&#xff1a;...