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

news2024/9/22 19:24:20

字符串

  • 概述
    • 创建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 + ":是回文。");
		else
			System.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/bin

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

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

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

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

相关文章

2024年【起重机司机(限桥式起重机)】考试题及起重机司机(限桥式起重机)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)考试题参考答案及起重机司机(限桥式起重机)考试试题解析是安全生产模拟考试一点通题库老师及起重机司机(限桥式起重机)操作证已考过的学员汇总&#xff0c;相对有效帮助起重机司机(限桥式起重…

JS 原型与原型链图解:彻底搞懂的终极指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 在JavaScript中&#xff0c;原型和原型链是非常重要的知识点&#xff0c;只有理解了…

Express+mysql单表分页条件查询

声明&#xff08;自己还没测试过&#xff0c;只提供大概逻辑&#xff0c;什么多表连接查询可以在原基础上添加&#xff09; class /*** param connection Express的mysql数据库链接对象* current 当前页* pageSize 一页显示行数* where [{key:id,operator:,value15}], key查询…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 卢小姐的生日礼物(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

pg_restore导入错误的解决思路

背景 开发使用postgresql 数据库&#xff0c;当需要部署时&#xff0c;通过pg_dump导出&#xff0c;通过pg_restore导入&#xff0c;发现导入遇到错误&#xff0c;很多表没有导入。部分报错截图如下&#xff1a; 排查问题 开发中用到了postgresql插件postgis里的地理类型&am…

ORBSLAM3 ORB_SLAM3 Ubuntu20.04 ROS Noetic 虚拟机镜像 下载

下图是build.sh 和 build_ros.sh编译结果截图&#xff1a; slam数据集测试视频&#xff1a; orbslam3 ubuntu20.04 test 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1nre0Y9vig5QXIGU52qCLbQ?pwd9rbi 提取码&#xff1a;9rbi

什么是裸机管理程序?

在这个旨在使最终用户体验尽可能无缝的快节奏环境中&#xff0c;企业不断扩展其网络以处理增加的负载&#xff0c;为了应对可扩展性问题并增强其设备的最佳性能&#xff0c;网络管理员开始使用虚拟化技术。 通过使用管理程序虚拟化网络&#xff0c;网络管理员可以实现灵活、可…

C++基础(3.内和对象)

目录 赋值运算符重载: const限制权限&#xff1a; 隐式类型转换&#xff1a; 再探构造函数&#xff1a; static成员&#xff1a; 有元&#xff1a; 内部类&#xff1a; 赋值运算符重载: 赋值运算符重载是一个默认成员函数,用于完成两个已经存在的对象直接的拷贝赋值.要注…

【STM32 HAL库】全双工I2S+双缓冲DMA的使用

1、配置I2S 我们的有效数据是32位的&#xff0c;使用飞利浦格式。 2、配置DMA **这里需要注意&#xff1a;**i2s的DR寄存器是16位的&#xff0c;如果需要发送32位的数据&#xff0c;是需要写两次DR寄存器的&#xff0c;所以DMA的外设数据宽度设置16位&#xff0c;而不是32位。…

pgsql的update语句在set里进行字段的运算 SET sort = sort +1

一、场景 需求&#xff1a;version 版本字段是记录数据更新的次数&#xff0c;新增时自动填充 version1 ,每更新一次数据 version就自增1。项目里单表插入和更新要手写update语句进行插入和更新。 –表中int4类型的字段 version 是1时&#xff0c;由1变成2 – version 是null…

嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)

1、实时时钟&#xff08;Real Time Clock&#xff09; RTC&#xff0c;全称为实时时钟&#xff08;Real Time Clock&#xff09;&#xff0c;是一种能够提供实时时间信息的电子设备。RTC通常包括一个计时器和一个能够记录日期和时间的电池。它可以独立于主控芯片工作&#xff…

5.过滤器Filter(doFilter()+chain.doFilter())

过滤器Filter 文章目录 过滤器Filter一、过滤器简介1.定义2.作用3.拦截原理4.常用方法:5.Filter的生命周期4.web.xml中配置5.WebFilter 一、过滤器简介 1.定义 过滤器是对Web应用程序的请求和响应添加功能的Web服务组件(实现 javax.servlet.Filter 接口的 Java 类。) 调用web…

Neuralink首款产品Telepathy:意念控制设备的革新与挑战

近年来&#xff0c;科技领域不断涌现出令人惊叹的突破&#xff0c;其中尤以脑机接口&#xff08;BCI&#xff09;技术为代表。近日&#xff0c;Elon Musk的Neuralink公司发布了其首款脑机接口产品Telepathy&#xff0c;引发了广泛关注。本文将详细探讨Telepathy的功能、技术原理…

Java语言程序设计基础篇_编程练习题**15.6(两个消息交替出现)

**15.6(两个消息交替出现) 编写一个程序&#xff0c;当单击鼠标时面板上交替显示两个文本"Java is fun"和"Java is powerful" 代码展示&#xff1a;编程练习题15_6TwoInfo.java package chapter_15;import javafx.application.Application; import javafx…

JavaScript之Web APIs-DOM

目录 DOM获取元素一、Web API 基本认知1.1 变量声明1.2 作用和分类1.3 DOM树1.4 DOM对象 二、获取DOM对象2.1 通过CSS选择器来获取DOM元素2.2 通过其他方式来获取DOM元素 三、操作元素内容3.1 元素.innerTest属性3.2 元素.innerHTML属性 四、操作元素属性4.1 操作元素常用属性4…

mysql无法启动

总是报错&#xff1a; 1、Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xeu mysql.service" for details. 2、ERROR 2002 (HY000): Cant connect to local …

Linux可视化工具-netdata之docker安装

版本要求 docker cli安装 docker pull netdata/netdata docker run -d --namenetdata \ --pidhost \ --networkhost \ -v netdataconfig:/etc/netdata \ -v netdatalib:/var/lib/netdata \ -v netdatacache:/var/cache/netdata \ -v /:/host/root:ro,rslave \ -v /etc/passwd…

常用注意力机制 SENet CBAM ECA

在处理脑电信号时通常会用到一些注意力机制,来给不同的脑电通道不同的权重,进而体现出不同脑电通道在分类中的重要性。下面整理几种常见的通道注意力机制,方便以后查阅。 常用注意力机制 SENet CBAM ECA 注意力机制SENet(Squeeze-and-Excitation Network)SENet原理SENet P…

五. TensorRT API的基本使用-load-model

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 model.hpp2.3 model.cpp2.4 其它 总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习课程第五章—TensorRT …

达梦数据库审计日志采集

目录 1. 审计功能简介2. dm8官方技术参考文档3. dm8审计功能配置3.1 登录审计用户3.2 开启审计开关3.3 查询审计日志3.4 审计设置3.4.1 配置语句级审计3.4.2 取消语句级审计3.5 审计日志查阅4. python获取dm8审计日志1. 审计功能简介 审计机制是 DM 数据库管理系统安全管理的重…