Java语言程序设计——篇六(1)

字符串

  • 概述
    • 创建String类对象     
    • 字符串基本操作
      • 实战演练
    • 字符串查找
    • 字符串转换为数组
    • 字符串比较
      • 实战演练
    • 字符串的拆分与组合

概述

字符串

  • 用一对双引号“”括起来的字符序列。
  • Java语言中,字符串常量或变量均用类实现。
    字符串有两大类:
    1)创建之后不会再做修改和变动(String类对象)
    2)创建之后允许再做修改(StringBuilder类对象)声明为final,不能被继承

创建String类对象     

使用String类的构造方法创建字符串变量
🍉格式一:

String 变量名;
变量名 = new String("字符串")

eg:String s; //声明字符串型引用变量s,此时s的值为null
   s=new String(“Hello”);
   //在堆内存中分配空间,并将s指向该字符串首地址
格式二:

String 变量名 = new String("字符串");
eg:String s=new String("Hello");
   使用字符串字面值创建String对象

格式三:

String 变量名 = "字符串";
eg:String s="Java is cool";

字符串基本操作

字符串在内存的表示。设有下面声明:

String str = new String("Java is cool");

在这里插入图片描述
这个字符串共有12个字符,每个字符有一个下标,下标从0开始。 可以通过下标访问每个字符。
可以调用String类的方法操作字符串
例:

String s = new String("Java is cool");
System.out.println(s.length());  //12
System.out.println(s.substring(5,7));//is
System.out.println(s.substring(8));//cool
System.out.println(s.toUpperCase());//JAVA IS COOL
System.out.println(s.toLowerCase());//java is cool
System.out.println(s.replace(‘a’,A));//jAvA is cool
System.out.println(s.isEmpty());//false
System.out.println(s.charAt(6));//s
String s1 = "Cool,";
s1 = s1.concat(s);
System.out.println(s1);//Cool, Java is cool

实战演练

例:编写一个方法判断字符串是否是回文串。
思路:取出字符串的第一个和最后一个比较,若不相同,程序结束,返回false。若相等,比较第二个字符和倒数第二字符,直到比较到字符串的中间字符为止,若都相等,则是回文,返回true。

package shujia_test1;import java.util.Scanner;public class Csdn6_1 {public static boolean isPalindrome(String s) {int low = 0;int high = s.length() - 1;while (low < high) {if (s.charAt(low) != s.charAt(high))return false;low++;high--;}return true;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入一个字符串:");String s = sc.nextLine();if (isPalindrome(s))System.out.println(s + ":是回文。");elseSystem.out.println(s + ":不是回文。");}}

在这里插入图片描述

字符串查找

String类提供了从字符串中查找字符子串的方法

public int indexOf( int ch):查找字符ch第一次出现的位置(在原字符串中的下标),如果查找不成功,返回-1public int indexOf( int ch, int fromIndex):查找字符ch从fromIndex开始第一次出现的位置。
public int lastIndexOf( int ch):查找字符ch最后一次出现的位置
public int lastIndexOf( int ch, int endIndex):查找字符ch到endIndex为止最后一次出现的位置。

public int indexOf(int ch):接收一个整数(字符的 Unicode 编码值)作为参数。
public int indexOf(char ch):接收一个字符(字符字面量)作为参数。
你应该根据你的需求选择使用哪一个。如果你有一个字符的 Unicode 编码值,就使用第一个;如果你有一个字符字面量,就使用第二个。
上述方法中int ch换成String str,表示子串的相关查找
例:

String s = new String("This is a Java string.");
System.out.println(s.length());//22
System.out.println(s.indexOf(‘a’));// 8
System.out.println(s.lastIndexOf(‘a’, 12));// 11
System.out.println(s. indexOf("is"));//2
System.out.println(s. indexOf("my"));//-1
System.out.println(s. lastIndexOf ("is"));// 5

字符串转换为数组

字符串不是数组,String类有从字符串转换成数组的方法

public char[] toCharArray():将字符串中的字符转换成数组
public void getChars( int srcBegin, int srcEnd,char []dst, int dstBegin):将字符串中从起始位置srcBegin到结束位置srcEnd之间的字符复制到字符数组dst中, dstBegin为目标数组的起始位置

例:

String s = new String("This is a Java string.");
Char []chars = s.toCharArray();
System.out.println(chars);//This is a Java string.
Char []subs = new char[4];
s.getChars(10,14,subs,0);
System.out.println(subs);//Java

字符串比较

1、String类有比较两个字符串内容是否相等的方法

public boolean equals(String anotherString):比较两个字符串内容是否相等,区分大小写
public boolean equalsIgnoreCase(String anotherString):比较两个字符串内容是否相等,不区分大小写

例:

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

不能使用“==”号来比较字符串内容是否相等

String s1 = new String("Hello");
String s2 = new String("Hello"); 
System.out.println(s1== s2);//false

解释:
在 Java 中,当你使用 new 关键字创建对象时,每次调用都会在内存中分配一个新的空间来存储该对象,即使这些对象的内容相同。因此,s1 和 s2 虽然都包含了字符串 “Hello”,但它们是在堆内存中的两个不同位置创建的独立对象。

当你使用==操作符来比较 s1 和 s2 时,你实际上是在比较这两个对象的引用(即它们在内存中的地址),而不是它们的内容。由于 s1 和 s2 指向的是堆内存中的两个不同位置,所以 s1 == s2 的结果将是 false。
在这里插入图片描述

String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1== s2);//true

解释:
字符串常量是存储在常量池中,内容相同的字符串在常量池中只有一个副本
在这里插入图片描述
2、String类有比较两个字符串大小的方法

public int compareTo (String another):
当前字符串与参数字符串比较
如果字符串相等,则返回 0;
如果调用字符串的字典顺序在参数字符串之前,则返回小于 0 的值;
如果调用字符串的字典顺序在参数字符串之后,则返回大于 0 的值。

例:

String s1 = "ABC";
String s2 = "ABE";
System.out.println(s1.compareTo(s2));//-2
public int compareToIgnoreCase (String another):当前字符串与参数字符串比较,不区分大小写

实战演练

例:利用起泡排序法,将字符串数组由小到大排序

package shujia_test1;public class Csdn6_2 {public static void main(String[] args) {String[] str = { "China", "USA", "Russia", "France", "England" };for (int i = str.length - 1; i > 0; i--)for (int j = 0; j < i; j++) {if (str[j].compareTo(str[j + 1]) > 0) {String temp = str[j];str[j] = str[j + 1];str[j + 1] = temp;}}for (String s : str)System.out.print(s + " ");}}

运行结果:
在这里插入图片描述

字符串的拆分与组合

String类的split()方法可以将一个字符串分解成子字符串

public String[] split(String regex): 参数regex表示正则表达式,根据给定的正则表达式将字符串分解成字符串数组

例:

String ss = "one little, two little,three little.";
String []str = ss.split("[ , .]");//含义是使用空格、逗号、点为分隔符拆分字符串
for(String s : str){System.out.println(s);//one //little //two //little //three//little
}

String类的join()方法将字符数组组合成字符串

public static String join(CharSequence delimiter,CharSequence... elements):使用给定的分隔符delimiter将elements的各元素组合成一个新字符串

例:

String joined = String.join( "/", "usr", "local", "bin" );
System.out.println(joined);
//usr/local/binString []seasons = { "春", "夏", "秋", "冬" };
String s = String.join( "-", seasons );
System.out.println(s);//春-夏-秋-冬

博主用心写,读者点关注,互动传真情,知识不迷路

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

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

相关文章

设计模式学习[2]---策略模式+简单工厂回顾

文章目录 前言1.简单工厂模式回顾2.策略模式3.策略模式简单工厂的结合总结 前言 上一篇讲到简单工厂模式。 在我的理解中工厂的存在就是&#xff0c;为了实例化对象。根据不同条件实例化不同的对象的作用。 这篇博客写的策略模式&#xff0c;可以说是把这个根据不同情况实例化…

pyinstaller 打包基于PyQt5和PaddleOCR的项目为.exe

简介&#xff1a; 最近做了一个小项目&#xff0c;是基于PyQt5和PaddleOCR的。需要将其打包为.exe&#xff0c;然后打包过程中遇到了很多问题&#xff0c;也看了很多教程&#xff0c;方法千奇百怪的&#xff0c;最后也是一步一步给试出来了。记录一下&#xff0c;防止以后忘记…

华为路由器SSH登录实验

概念 SSH全称安全外壳&#xff08;Secure Shell&#xff09;协议&#xff0c;这个协议的目的就是为了取代缺乏机密性保障的远程管理协议&#xff0c;SSH基于TCP协议的加密通道&#xff0c;让客户端使用服务器的RSA公钥来验证SSHv2服务器的身份。 创建密钥对 在充当SSH服务器的…

C语言随机数的生成相关案例

随机数的方式&#xff1a; 1、设置种子&#xff1a;srand(初始值) 2、获取随机数&#xff1a;rand(); 引导案例&#xff1a; 通过for循环简单生成10个随机数 #include<stdio.h> #include<stdlib.h> //添加包含随机数的库函数 int main() {srand(1); …

嵌入式人工智能(15-基于树莓派4B的电机控制-直流电机TB6612)

电机是传动以及控制系统的重要组成部分&#xff0c;现在的电机已从过去简单的传动向复杂的控制转移&#xff0c;尤其是对电机的速度、位置、转矩的精确控制&#xff0c;本系列将介绍如何使用树莓派驱动并控制3种最为常见的控制电机&#xff1a;直流电机&#xff08;风扇&#x…

大语言模型推理优化--键值缓存--Key-value Cache

文章目录 一、生成式预训练语言模型 GPT 模型结构二、FastServe 框架三、Key-value Cache1.大模型推理的冗余计算2.Self Attention3.KV Cache 一、生成式预训练语言模型 GPT 模型结构 目前&#xff0c;深度神经网络推理服务系统已经有一些工作针对生成式预训练语言模型 GPT 的独…

安全防御---防火墙综合实验3

安全防御—防火墙综合实验3 一、实验拓扑图 二、实验要求 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区…

Ubuntu22.04安装OMNeT++

一、官网地址及安装指南 官网地址&#xff1a;OMNeT Discrete Event Simulator 官网安装指南&#xff08;V6.0.3&#xff09;&#xff1a;https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址&#xff1a;OMNeT Downloads 旧版本下载地址&#xff1a;OMNeT Old…

【动态规划】整数拆分

整数拆分&#xff08;难度&#xff1a;中等&#xff09; 该题对应力扣网址 AC代码 class Solution { public:int integerBreak(int n) {//动态规划//感觉这个题和零钱兑换有点像&#xff0c;只是零钱兑换提供了coin列表vector <int> dp(n1,0);//1、定义子问题//将原问题…

PolarisMesh源码系列--Polaris-Go注册发现流程

导语 北极星是腾讯开源的一款服务治理平台&#xff0c;用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域&#xff0c;目前国内比较流行的还包括 Spring Cloud&#xff0c;Apache Dubbo 等。在 Kubernete…

错误:PHP:Deprecated: Required parameter $xxx follows optional parameter $yyy

前言 略 错误 Deprecated: Required parameter $xxx follows optional parameter $yyy 解决办法 设置 error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICT 参考 https://blog.csdn.net/lxw1844912514/article/details/100028023

创建自己的 app: html网页直接打包成app;在线网页打包app工具fusionapp、pake

1、html网页直接打包成app 主要通过hbuilderx框架工具来进行打包 https://www.dcloud.io/hbuilderx.html 参考&#xff1a; https://www.bilibili.com/video/BV1XG411r7QZ/ https://www.bilibili.com/video/BV1ZJ411W7Na 1&#xff09;网页制作 这里做的工具是TodoList 页面&a…

【数据结构--查找】

目录 一、查找&#xff08;Searching&#xff09;的概念1.1、基本概念1.2、算法的评价指标 二、顺序查找2.1、算法思想2.2、算法实现2.2.1、常规顺序查找2.2.2、带哨兵的顺序查找 2.3、效率分析2.4、优化2.4.1、针对有序表2.4.2、被查效率不相等 三、折半查找3.1、算法思想3.2、…

C语言项目篇:二、课程管理系统

为加强对于C语言的巩固和复习&#xff0c;以实战项目为导向&#xff0c;串起所有C语言的语法&#xff0c;达到活学活用的目的&#xff0c;本篇博客&#xff0c;详细总结利用C语言编码简单编码实现生活中的课程管理系统后台开发的整个过程&#xff0c;学习多文件编程和调试&…

Internet 控制报文协议 —— ICMPv4 和 ICMPv6 详解

ICMP 是一种面向无连接的协议&#xff0c;负责传递可能需要注意的差错和控制报文&#xff0c;差错指示通信网络是否存在错误 (如目的主机无法到达、IP 路由器无法正常传输数据包等。注意&#xff0c;路由器缓冲区溢出导致的丢包不包括在 ICMP 响应范围内&#xff0c;在 TCP 负责…

Docker、containerd、CRI-O 和 runc 之间的区别

容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一&#xff0c;Docker&#xff08;公司&#xff09;在生态系统中创建了一些很棒的工具&#xff0c;但不是全部。 容器方面有…

利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】

目录 一、图与网络的基本概念 1. 无向图与有向图 2. 简单图、完全图、赋权图 3. 顶点的度 4. 子图与连通性 5. 图的矩阵表示 MATLAB代码实例 Python代码实例 二、最短路径问题 1. 最短路径问题的定义 2. Dijkstra算法 MATLAB代码实例 Python代码实例 三、最小生…

无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Microsoft Visual C++ 2010 Express 使用

Microsoft Visual C 2010 Express 使用 Microsoft Visual C 2010 Express&#xff08;简称VC 2010 Express&#xff09;是一款免费的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为C和C语言的开发者设计。 安装 下载|本站链接【VC2010简体中文版】的安装包并解压…

C#学习-刘铁猛

文章目录 1.委托委托的具体使用-魔板方法回调方法【好莱坞方法】&#xff1a;通过委托类型的参数&#xff0c;传入主调方法的被调用方法&#xff0c;主调方法可以根据自己的逻辑决定调用这个方法还是不调用这个方法。【演员只用接听电话&#xff0c;如果通过&#xff0c;导演会…