0基础学java之Day20

news2024/11/20 7:01:24

字符串类

分类:

  • String

  • StringBuffer

  • StringBuilder

String的使用

        String str = "123abc";
        
        str = str.concat("DEF123");//拼接字符串,返回新的字符串
        str = str.substring(2);//从指定下标处截取到字符串末尾,返回新的字符串
        str = str.substring(2, 7);//从开始下标处(包含)截取到结束下标处(排他),返回新的字符串
        
        str = str.toUpperCase();//转大写,返回新的字符串
        str = str.toLowerCase();//转小写,返回新的字符串
        
        str = "   123 ab cD   EF   12  3            ";
        
        str = str.trim();//去除首尾空格,返回新的字符串
        str = str.replace('c', 'C');//替换字符,返回新的字符串
        str = str.replace("12", "666888");//替换字符串,返回新的字符串
        str = str.replaceAll("666", "123");//替换字符串,返回新的字符串 -- 该方法支持正则表达式
        str = str.replaceFirst("123", "xxxyyy");//替换第一个符合的字符串,返回新的字符串
        str = str.replaceAll(" ", "");//去除空格 - 将空格替换成空内容的字符串,返回新的字符串
        
        System.out.println("判断两个字符串内容是否相同(区分大小写):" + str.equals("xxxyyy8883abCDEF1238883"));//true
        System.out.println("判断两个字符串内容是否相同(不区分大小写):" + str.equalsIgnoreCase("xXxyYy8883abCDEF1238883"));//true
        
        System.out.println("判断字符串是否以某个字符串开头:" + str.startsWith("xxx"));//true
        System.out.println("判断字符串是否以某个字符串结尾:" + str.endsWith("1238883"));//true
        
        System.out.println("获取第一次出现字符的下标:" + str.indexOf('a'));//10
        System.out.println("获取第一次出现字符串的下标:" + str.indexOf("888"));//6
        System.out.println("获取最后一次出现字符串的下标:" + str.lastIndexOf("888"));//19
        System.out.println("获取指定下标上的字符:" + str.charAt(10));//a
        
        System.out.println(str);//xxxyyy8883abCDEF1238883
        
        //将其他类型转换为字符串类型
        System.out.println(String.valueOf(100));//int -> String
        System.out.println(String.valueOf(123.123));//double -> String
        System.out.println(String.valueOf('a'));//char -> String
        System.out.println(String.valueOf(true));//boolean -> String
        
        //将其他类型转换为字符串类型 -- 更简单的写法
        System.out.println(100 + "");//int -> String
        System.out.println(123.123 + "");//double -> String
        System.out.println('a' + "");//char -> String
        System.out.println(true + "");//boolean -> String
        
    }
​

String的深入

public static void main(String[] args) {
        
        //面试题1:下列代码会创建几个String对象
        //答:会创建1个String对象
        String str1 = "abc";
        String str2 = "abc";
        System.out.println(str1 == str2);//true
        
        //面试题2:下列代码会创建几个String对象
        //答:会创建3个String对象
        String str1 = new String("abc");
        String str2 = new String("abc");
        System.out.println(str1 == str2);//false
    }
​
​
​
​
​
public static void main(String[] args) {
        
        String str1 = "abc";
        String str2 = "abc";
        System.out.println(str1 == str2);//true
        
        //注意:常量在编译时直接拼接
        String str3 = "ab" + "c";
        System.out.println(str1 == str3);//true
        
        //注意:常量在编译时直接拼接
        final String s1 = "ab";
        final String s2 = "c";
        String str4 = s1 + s2;
        System.out.println(str1 == str4);//true
    
        String s3 = "ab";
        String s4 = "c";
        String str5 = s3+s4;//String str5 = (new StringBuilder(String.valueOf(s3))).append(s4).toString();
        System.out.println(str1 == str5);//false
    
    }
​

StringBuffer的使用

public static void main(String[] args) {
        
        //底层:16个长度的字符数组 -- 容器
        //StringBuffer sb = new StringBuffer();
        
        //底层:32个长度的字符数组 -- 容器
        //StringBuffer sb = new StringBuffer(32);
        
        //底层:"123abc".length() + 16个长度的字符数组 -- 容器
        StringBuffer sb = new StringBuffer("123abc");
        
        sb.append("DEF123");//追加末尾字符串
        sb.insert(6, "xxxyyyzzz");//在指定下标处插入字符串
        sb.setCharAt(3, 'A');//替换指定下标上的字符
        sb.deleteCharAt(3);//删除指定下标上的字符
        sb.delete(3, 17);//从开始下标处(包含)删除结束处(排他)的字符串
        sb.replace(1, 4, "用良心做教育");//从开始下标处(包含)替换结束处(排他)的字符串
        sb.reverse();//反转字符串
        
        System.out.println(sb.toString());//32育教做心良用1
​
    }
​

StringBuilder的使用

注意:
            1.StringBuffer和StringBuilder都是继承于AbstractStringBuilder,底层所有功能够依赖于父类(功能一样)
            2.StringBuffer是在父类的基础上加了线程安全的代码,所以多线程的情况下使用
            3.StringBuilder是没有线程安全的代码,所以在单线程的情况下使用

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

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

相关文章

中伟视界:AI智能分析算法如何针对非煤矿山的特定需求,提供定制化的安全生产解决方案

非煤矿山智能化改造,除了政策文件,上级监管单位需要安装的AI智能分析算法功能之外的,矿方真正关心的,能解决矿方安全生产隐患的AI智能分析算法功能有哪些呢? 经过与矿方的现场交流沟通,收集第一现场人员对安…

【论文速读】| 迈向自动化渗透测试:引入大语言模型基准、分析与改进

基本信息 原文标题:Towards Automated Penetration Testing: Introducing LLM Benchmark, Analysis, and Improvements 原文作者:Isamu Isozaki, Manil Shrestha, Rick Console, Edward Kim 作者单位:Drexel University, Independent 关键…

【Visual Studio系列教程】如何在 VS 上编程?

上一篇博客中,我们介绍了《什么是 Visual Studio?》。本文,我们来看第2篇《如何在 VS 上编程?》。阅读本文大约10 分钟。我们会向文件中添加代码,了解 Visual Studio 编写、导航和了解代码的简便方法。 本文假定&…

项目进度计划表:详细的甘特图的制作步骤

甘特图(Gantt chart),又称为横道图、条状图(Bar chart),是一种用于管理时间和任务活动的工具。 甘特图由亨利劳伦斯甘特(Henry Laurence Gantt)发明,是一种通过条状图来…

完整http服务器

目录 背景目标描述技术特点开发环境WWW客户端浏览发展史服务端http发展史http分层概览 背景 http协议被广泛使用,从移动端,pc浏览器,http无疑是打开互联网应用窗口的重要协议,http在网络应用层中的地位不可撼动,是能…

Vim 命令、操作、文件操作示例

1.常用命令 编辑 以下命令在命令模式执行 i,a,r:在光标的前,后,上方插入字符命令(iinsert,aappend,rreplace) O,o:在当前行前面,后面插入一空行 cw,dw:改…

学习笔记022——Ubuntu 安装 MySQL8.0版本踩坑记录

目录 1、查看可安装 MySQL 版本 2、Ubuntu安装 MySQL8.0 3、MySQL8.0 区分大小写问题 4、MySQL8.0 设置sql_mode 5、MySQL8.0 改端口33060(个人遇到问题) 1、查看可安装 MySQL 版本 ## 列出可用的MySQL版本(列出所有可用的MySQL版本以…

【WRF-Urban】URBPARM.TBL参数解释及内容

【WRF-Urban】URBPARM.TBL参数解释及内容 URBPARM.TBL参数解释URBPARM.TBL参考 参考WRF-Urban教程-Urban Canopy Model URBPARM.TBL参数解释 各个城市相应的城市参数差异很大(例如,有些城市的道路可能很宽但建筑物很矮,而其他城市的道路可…

ASP.NET MVC宠物商城系统

该系统采用B/S架构,使用C#编程语言进行开发,以ASP.NET MVC框架为基础,以Visual Studio 2019为开发工具,数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…

HBase 开发:使用Java操作HBase

1、实战简介 HBase和Hadoop一样,都是用Java进行开发的,本次实训我们就来学习如何使用Java编写代码来操作HBase数据库。 实验环境: hadoop-2.7 JDK8.0 HBase2.1.1 2、任务 1、第1关:创建表 package step1; import java.io.IOE…

IDEA 开发工具常用快捷键有哪些?

‌在IDEA中,输出System.out.println()的快捷键是sout,输入后按回车(或Tab键)即可自动补全为System.out.println()‌‌。 此外,IDEA中还有一些其他常用的快捷键: 创建main方法的快捷键是psvm,代…

基于Lora通讯加STM32空气质量检测WIFI通讯

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重,空气质量的监测与管理已经…

【C++】list使用详解

本篇介绍一下list链表的使用,后续也是会对list进行模拟实现的。list是链表里面的双向链表。 1.文档介绍 list - C Referencehttps://legacy.cplusplus.com/reference/list/list/ list中的接口比较多,此处类似,只需要掌握如何正确的使用&am…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…

算法-二叉树(从理论知识到力扣题,递归、迭代。)

二叉树 一、二叉树理论知识1、种类a.满二叉树b.完全二叉树c.二叉搜索树d.平衡二叉搜索树 2、java对于树的理解3、存储a.链式存储(常用)b.数组存储 4、遍历方式a.深度优先搜索b.广度优先搜索 5、树的定义(链式) 二、力扣题解写题思…

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者,如果前面的lab还没掌握好的,可以直接跳过这节内容。有时间的同学,可以熟悉掌握下这个flow。 数字后端…

打开AI的黑盒子——机器学习可解释性!

2024深度学习发论文&模型涨点之——机器学习可解释性 现在以深度学习为主的方法在各个领域都已经next level了,但是如何解释我们的模型仍然是个难题。为什么得到这样的结果往往和结果本身一样重要。因此,个人觉得Explainable AI (XAI)依然会是近些年…

白蚁自动化监测系统的装置和优势

一、背景 在当今社会,随着科技的飞速发展,智能化、自动化技术在各个领域的应用日益广泛,白蚁自动化监测系统作为一种高效、精准的白蚁防控手段,正逐步成为行业内的主流趋势,既是文物古建水利堤坝等预防性保护的要求&a…

HarmonyOs鸿蒙开发实战(10)=>状态管理-对象数组的属性数据变更刷新UI,基于@Observed 和@ObjectLink装饰器

1.条件:基于HarmonyOs5.0.0版本. 2.功能要求:横向列表中每个景点的名称(eg: 第二项 “灵隐寺” ), 在通过天气接口拿到对应天气后,拼接到名称后面 > 变成(“灵隐寺” 天气)) 3.老规矩先看…

详细描述一下Elasticsearch搜索的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch搜索的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch搜索的过程? Elasticsearch 的搜索过程是其核心功能之一,允许用户对存储在 Elasticsea…