【Java语法基础】4.字符串

4.字符串

字符char无需多言,单引号。

String类

基本操作

String类的访问不能通过数组访问,只能通过API,并且只能访问不能修改,如:

String a = "hello";
for(int i = 0; i < a.length(); i ++)
{//注意:只能访问不能修改System.out.println(a.charAt(i));//这是错的:a.charAt(i) = 'a';
}

一些基本操作如下代码所示:

package org.example;public class Main{public static void main(String[] args) throws Exception{String a = "hello world";String b = "my name is ";String x = b; //String是对象,字符串其实是指向了同一个地址String c = b + 18;  //(基本类型)18被隐式转化为字符串String d = b + "xjf";System.out.printf("%s\n", c);System.out.println(d);//格式化字符串String name = String.format("My name is %d", 18);System.out.println(name);//字符串转化为基本类型String money = "123.45";String money_int = "123";double dm = Double.parseDouble(money);System.out.println(dm);int im = Integer.parseInt(money_int);System.out.println(im);//基本类型转化为字符串:空字符串+基本类型即可int test = 123;String test_str = "" + 123;System.out.println(test_str);}
}

注意:java里面的String类与C++不一样,如果修改其值,会构造全新的字符串,不在原来的地址了

常用API

还有一些常用的API,如下所示:

涉及到串的变化不会修改原字符串的值,会重新建立一个新的字符串。

  • length():返回长度,注意这是一个函数,不是数组里面的属性。
  • split(String regex):分割字符串
  • indexOf(char c)indexOf(String str)lastIndexOf(char c)lastIndexOf(String str):字符或字符串第一次、最后一次出现的下标
  • equals():比较两个字符串是否相等,如下:
String a = "hello world";
String b = "hello world";
System.out.println(a.equals(b));
  • compareTo():判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于

  • startsWith():判断是否以某个前缀开头

  • endsWith():判断是否以某个后缀结尾

  • trim():去掉首尾的空白字符

  • toLowerCase():全部用小写字符

  • toUpperCase():全部用大写字符

  • replace(char oldchar, char newchar):替换字符

  • replace(String oldstr, String newstr):替换字符串,例如:

String a = "hello world ";
System.out.println(a.replace("h", "p"));
  • substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串
String str = "hello";
String strs = str.substring(0, 2);
System.out.println(strs);  //返回:he
  • toCharArray():字符串转化为字符数组

注意:比较字符串不能使用==进行比较,只能使用equals()。这是因为,==比较的是两个字符串的地址而非其实际的内容

StringBuilder等

注:String不支持修改,那么:

String a = "a";
a += "b";  //先复制"a",再添加"b"

如果大量使用插入,则插入 N N N个元素的时间复杂度为 O ( N 2 ) O(N^2) O(N2),太慢了。

若打算修改字符串,可以采用:StringBuilderStringBuffer

  • StringBuilder:线程安全,但速度较慢;
  • StringBuffer:线程不安全,但速度较快。不支持多线程
public class Main{public static void main(String[] args) throws Exception{StringBuilder sb = new StringBuilder("hello");//拼接,与python一样sb.append(" world");System.out.println(sb);//翻转字符串sb.reverse();System.out.println(sb);//修改for(int i = 0; i < sb.length(); i ++){sb.setCharAt(i, (char)(sb.charAt(i) + 1));}System.out.println(sb);}
}

如果想将StringBuilderStringBuffer转化为String,调用toString()函数即可。

输入与输出

package org.example;
import java.util.Scanner;public class Main{public static void main(String[] args) throws Exception{Scanner sc = new Scanner(System.in);String a = sc.next(); //遇到空格、回车、制表符等就停止String b = sc.nextLine(); //读取一整行字符串,遇到回车才停止System.out.println(a);System.out.printf("%s", b); //%s输出也可}
}

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

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

相关文章

C#开源、简单易用的Dapper扩展类库 - Dommel

项目特性 Dommel 使用 IDbConnection 接口上的扩展方法为 CRUD 操作提供了便捷的 API。 Dommel 能够根据你的 POCO 实体自动生成相应的 SQL 查询语句。这大大减少了手动编写 SQL 代码的工作量&#xff0c;并提高了代码的可读性和可维护性。 Dommel 支持 LINQ 表达式&#xff…

记一次因敏感信息泄露而导致的越权+存储型XSS

1、寻找测试目标 可能各位师傅会有苦于不知道如何寻找测试目标的烦恼&#xff0c;这里我惯用的就是寻找可进站的思路。这个思路分为两种&#xff0c;一是弱口令进站测试&#xff0c;二是可注册进站测试。依照这个思路&#xff0c;我依旧是用鹰图进行了一波资产的搜集&#xff…

SSIS_SQLITE

1.安装 SQLite ODBC 驱动程序 2.添加SQLite数据源 在“用户DSN”或“系统DSN”选项卡中&#xff0c;点击“添加”。选择“SQLite3 ODBC Driver”&#xff0c;然后点击“完成”。在弹出的配置窗口中&#xff0c;设置数据源名称&#xff08;DSN&#xff09;&#xff0c;并指定S…

英迈中国与 Splashtop 正式达成战略合作协议

2024年7月23日&#xff0c;英迈中国与 Splashtop 正式达成战略合作协议&#xff0c;英迈中国正式成为其在中国区的战略合作伙伴。此次合作将结合 Splashtop 先进的远程桌面控制技术和英迈在技术服务与供应链管理领域的专业优势&#xff0c;为中国地区的用户带来更加安全的远程访…

Docker 部署的 GitLab备份和恢复

Docker 部署的 GitLab备份和恢复数据 使用 Docker 部署的 GitLab 可以通过 Docker 命令来进行备份和恢复。以下是具体步骤&#xff1a; 1. 停止 GitLab 容器 在进行备份之前&#xff0c;最好先停止 GitLab 容器以确保数据一致性&#xff1a; docker stop <gitlab_contai…

联想教育电脑硬盘保护同传EDU系统使用简明教程

目录 一、原理概述 二、简明使用方法 1、软件下载 2、开机引导 3、开始安装 4、使用 &#xff08;1&#xff09;进入底层 &#xff08;2&#xff09;进行分区设置 &#xff08;3&#xff09;系统设置 &#xff08;4&#xff09;安装硬盘保护驱动 &#xff08;5&…

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中&#xff0c;模块化是一种重要的代码组织方式&#xff0c;它有助于将复杂的代码拆分成可管理的小块&#xff0c;提高代码的可维护性和可重用性。CommonJS、AMD&#xff08;异步模块定义&#xff09;和CMD&#xff08;通用模块定义&#xff09;是三种不同的模块规范…

《昇思 25 天学习打卡营第 19 天 | 生成式对抗网络(GAN)实践指南 》

《昇思 25 天学习打卡营第 19 天 | 生成式对抗网络&#xff08;GAN&#xff09;实践指南 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 GAN 模型概述 生成式对抗网络&#xff08;GAN&#xff09;是一种前沿的无…

leetcode-101. 对称二叉树

题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 思路 1) 如果同时root1…

【c++刷题笔记-单调栈】day48: 739. 每日温度 、496.下一个更大元素 I 、503.下一个更大元素II

739. 每日温度 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;使用单调栈遍历&#xff0c;循环找栈中比栈顶数小的就出栈&#xff0c;并且记录值。比栈顶数大的就入栈&#xff0c;形成单调递增的栈 class Solution { public:vector<int> dailyTemperatures(…

ES6-11(第一部分)

ES6-11&#xff08;第一部分&#xff09; ECMA ECMA是一个组织ECMAScript是由Ecma国际通过ECMA-262标准化的脚本程序设计语言Ecma国际指定了很多标准&#xff0c;ECMA-262只是其中之一TC39定期开会维护ECMA-262 ES6 let: let 是 ES6 中引入的一种新的变量声明方式&#xff0…

【调试笔记-20240723-Linux-gitee 仓库同步 github 仓库,并保持所有访问链接调整为指向 gitee 仓库的 URL】

调试笔记-系列文章目录 调试笔记-20240723-Linux-gitee 仓库同步 github 仓库&#xff0c;并保持所有访问链接调整为指向 gitee 仓库的 URL 文章目录 调试笔记-系列文章目录调试笔记-20240723-Linux-gitee 仓库同步 github 仓库&#xff0c;并保持所有访问链接调整为指向 gite…

Langchain: 语言学习的新篇章

在当今全球化的世界中&#xff0c;语言学习已成为许多人追求的目标。Langchain是一种新兴的语言学习平台&#xff0c;它利用最新的技术&#xff0c;为用户提供了一个全新的语言学习体验。本文将介绍Langchain的基本概念、核心特性、学习方法以及如何通过Langchain提高语言学习效…

Ubuntu20.04版本升级openssh9.8p1方法

一、问题描述&#xff1a; 8.5p1 和 9.7p1 之间的openssh版本漏洞可能会导致linux系统以root身份进行RCE&#xff0c;所以需安装最新版本 二、解决方法&#xff1a; 将当前openssh版本升级到最新的版本即openssh-9.8p1版本&#xff0c;OpenSSL大版本升级且OpenSSH有新稳定版本…

微调大型语言模型 (LLM) 和 RAG 的区别、优势和劣势

本篇文章有ChatGPT生成&#xff0c;觉得说的有理&#xff0c;给予刊登。 微调大型语言模型 描述&#xff1a; 微调是指在一个预训练的语言模型基础上&#xff0c;使用特定任务或领域的特定数据集进行进一步训练。这一过程会更新模型的权重&#xff0c;以提高其在新数据集上…

Unity Shader入门精要——笔记

第1篇 基础篇 第2章&#xff1a;渲染流水线 GPU流水线 顶点数据–> 几何阶段&#xff1a;&#xff08;顶点着色器–> 曲面细分着色器–>几何着色器–>裁剪–>屏幕映射&#xff09;–>光栅化阶段&#xff08;三角形设置–>三角形遍历–>片元着色器–…

Zabbix监控应用

一.监控tomcat 1.在tomcat服务器上安装zabbix-agent服务 [rootnode2 etc]#vim zabbix_agentd.conf 94 Server192.168.240.13 #指向当前zabbix server ##### Passive checks related #被动检查相关配置### Option: ListenPort ListenPort10050 #监听端口 默认的无需修改11…

SPF配置教程:如何安全构建邮件发送策略?

SPF配置教程的步骤详解&#xff01;SPF记录配置方法策略有哪些&#xff1f; SPF通过允许域名所有者指定哪些主机可以代表该域发送邮件&#xff0c;从而减少电子邮件欺诈和垃圾邮件的风险。AokSend将详细介绍SPF配置教程&#xff0c;并指导您如何安全地构建邮件发送策略。 SPF…

《白话机器学习的数学》第4章——评估

4.1模型评估 1.由于像多重回归这样的问题会导致无法在图上展示&#xff0c;所以需要能够够定量地表示机器学习模型的精度。 4.2交叉验证 4.2.1回归问题的验证 1.把获取的全部训练数据分成两份&#xff1a;一份用于测试&#xff0c;一份用于训练。然后用前者来评估模型。 一般…

C# 数组常用遍历方式

// 假设数组Point[] points new Point[2];// 第一种遍历 forfor (int i 0; i < points.Length; i){Point p points[i];Console.WriteLine($"X{p.X},y{p.Y}");}// 第二种遍历 foreachforeach (Point p in points){Console.WriteLine($"X{p.X},y{p.Y}"…