Java 基础入门篇(六)—— String 类详解

news2024/10/6 16:20:16

文章目录

  • 一、String 类概述
  • 二、String 创建对象的方式
    • 2.1 创建对象的两种方式
    • 2.2 面试:两种方式的区别
    • 2.3 常见面试题
  • 三、String 类常用方法
    • 3.1 字符串内容比较
    • 3.2 常用 API:遍历、截取、替换、分割


一、String 类概述

java.lang.String 类代表字符串,它定义的变量可以指向一个字符串对象。同时 String 类提供了很多操作字符串的功能,我们可以直接使用。

String 是不可变字符串:String 变量每次的修改其实都是产生并指向了新的字符串对象,而原来的字符串对象都是没有改变的,所以称不可变字符串。

  如下方程序,首先在字符串常量池中,创建 “传智” 对象,并指向该对象。当执行 name+=“教育” 时,首先在常量池中创建 “教育” 对象,并将 “传智” 与 “教育” 两个对象拼接生成 “传智教育” 对象,并指向该对象。以此类推…

在这里插入图片描述
每当用 + 符号,拼接生成新的字符串时,原来的字符串都没有改变,因此 String 是不可变字符串。


二、String 创建对象的方式

2.1 创建对象的两种方式

  • 方式一:直接使用 " " 定义(推荐方式)
    String name = “黑马”;

  • 方式二:通过 String 类的构造器创建对象
    在这里插入图片描述


2.2 面试:两种方式的区别

  • 双引号 " " 给出的字符串对象,存在于堆内存中的常量池中,相同内容只会存储一份
    在这里插入图片描述
  • new 字符串对象,每new一次都会在堆内存中产生一个字符串对象
    在这里插入图片描述

2.3 常见面试题

  1. 下列代码的运行结果是?
    String s2 = new String(“abc”);:先去常量池中创建对象,然后再通过 new 创建对象。
    String s1 = “abc”;:由于常量池中有对象,所以不需创建对象。
    在这里插入图片描述
    扩展: 若先执行 String s1 = “abc”;,再执行 String s2 = new String(“abc”); ,则 s1 与 s2 分别创建一个对象。

  1. 下列代码的运行结果是?
    s3 不在常量池中,即不是双引号直接给出的,不会放在常量池中。
    在这里插入图片描述
    扩展: 程序总共创建四个对象,其中常量池中分别有:“abc”、“ab”、“c”,不在常量池中 “abc”。

  1. 下列代码的运行结果是?
    java 存在编译优化机制,程序在编译时,自动将 “a”+“b”+“c” 直接转换成 “abc”。
    在这里插入图片描述

三、String 类常用方法

3.1 字符串内容比较

== 判断字符串对象是判断地址的,这样会引起很多业务问题。推荐使用 equals 方法比较:

在这里插入图片描述

:基本数据类型用 == 比较。


3.2 常用 API:遍历、截取、替换、分割

在这里插入图片描述
举例:

String str = "abcdefg";
String s1 = "cde";
String s2 = "ggg";
String replaceStr = str.replace(s1, s2);
System.out.println(replaceStr); // abgggfg

文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

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

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

相关文章

Java 基础入门篇(四)—— 方法的重载与参数传递机制

文章目录 一、方法的定义二、方法的参数传递机制 ★2.1 基本类型的参数传递2.2 引用类型的参数传递 三、方法重载 一、方法的定义 方法的作用:封装一段代码的语法结构,可以被重复调用,以此提高代码的复用性,提高开发效率&#xf…

【VsCode远程开发】Windows SSH远程连接Linux服务器 - 无公网IP内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

Java 基础进阶篇(一)—— static 静态关键字与单例模式

文章目录 一、static 静态关键字1.1 静态成员变量与实例成员变量1.2 静态成员方法与实例成员方法1.3 static 访问注意事项1.4 内存使用情况 二、工具类三、代码块四、单例模式4.1 饿汉单例4.2 懒汉单例 一、static 静态关键字 static:代表静态的意思,可…

KaliLinux安装burpsuite(超详细)

注意事项 1.注意linux位数 安装jdk之前先输出uname -a,看看kali linux是32位的还是64位,例如此处我的kali是32位的,因此需下载的是32位的jdk 2.jdk版本 jdk版本最好是oracle的,若使用的是openjdk很可能会出现burpsuite闪退现象…

远程访问本地jupyter notebook服务 - 无公网IP端口映射

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 转载自远控源码文章:公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&am…

【Linux】信号的保存信号的捕捉信号集零碎知识点总结

【Linux】信号的保存&信号的捕捉&信号集&零碎知识点总结 一、信号的保存1.1 信号几种概念1.2 信号在内核中的表示 二、信号的捕捉了解用户态和内核态2.1 捕捉过程2.2 信号的捕捉方法2.3 信号捕捉规则2.4 多信号屏蔽问题 三、信号集3.1 概念3.2 信号集(s…

【视频教程解读】Window上安装和使用autogluon V0.7

1.使用conda安装的python环境 教程使用的是极简版miniconda,由于我们的电脑中安装了anaconda,所以不需要进行进一步安装。python版本为3.9,博客里面有anaconda和python版本的对应关系。注意查看版本autogluon V0.4需要3.8或者3.9和3.10,pip版…

2023年第二十届五一数学建模B题:快递需求分析问题-思路详解

一、题目简析 今年的B题是一道较为综合的题目,包括了数据分析、综合评价、时间序列预测、最优化问题以及概率估计问题。考察范围广,但是整体看来题目背景简单,切入点多,难度适中。 二、逐问思路 1.问题1:附件1为该快…

私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公…

迷你主机安装openwrt软路由系统(附启动盘制作教程+ISO、IMG镜像文件)

之前在迷你主机上刷了一个openwrt的软路由,安装过程分享给大家,镜像文件在文章末尾~ 一般需要做软路由系统的机器,是需要至少两个网口的,一个做wan口,一个做lan口 由于其他因素,不能直接将openwrt直接安装…

ChatGPT是什么?ChatGPT里的G、P、T分别指什么

文章目录 ChatGPT是什么GTP中的 生成式 是什么意思GTP中的 预训练 是什么意思GTP中的 变换模型 是什么意思 什么是Transformer什么是注意力机制 监督学Xi、无监督学Xi、强化学Xi ChatGPT是什么 GPT: Generative Pre-trained Transformer 生成式预训练变换模型 ChatGPT是由Ope…

学习RHCSA的day.02

目录 2.3常用简单命令 2.4使用Bash执行命令 2.5 命令帮助 2.3常用简单命令 常用系统工作命令 1、echo命令 echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:“echo [字符串] [$变量]”。 这是在Linux系统中最常用的几个命令之一&am…

蒙蒂霍尔悖论

贝叶斯与频率主义对蒙蒂霍尔问题的解 在定义概率时,通常有两种思想流派:贝叶斯主义和频率主义。前者将概率视为我们对事件发生的信念程度,而后者则将其视为事件发生的相对频率。这篇文章介绍了使用贝叶斯和频率主义方法来解决著名的蒙蒂霍尔问…

C++每日一练:小艺照镜子(详解分治法)

文章目录 前言一、题目二、解题1.分析 总结 前言 大过节的,不想去看人后脑勺,就做点题来玩。挑了小艺照镜子,百分通过~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 题目名称: 小艺照镜子 …

【论文解读】(如何微调BERT?) How to Fine-Tune BERT for Text Classification?

文章目录 论文信息1. 论文内容2. 论文结论2.1 微调流程2.2 微调策略(Fine-Tuning Strategies)2.3 Further Pretrain 3. 论文实验介绍3.1 实验数据集介绍3.2 实验超参数3.3 Fine-Tuning策略探索3.3.1 处理长文本3.3.2 不同层的特征探索3.3.3 学习率探索(灾难性遗忘探…

Baumer工业相机堡盟相机如何使用ROI感兴趣区域功能( PARTIAL SCAN ROI功能的优点和行业应用)(C#)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…

利用 ChatGPT4 回复的 markdown 文本生成 ppt

本篇博文不涉及账号以及基础网络知识,大伙可以自动搜索。 比如我最近要分享一篇关于 TCP 的分享,那么我可以设置如下 Prompt 我最近要做一篇关于 tcp 入门的 ppt 分享,帮我列出大纲以及需要注意的事项? 接下来就是 ChatGPT4 给…

RocketMQ的学习历程(3)----RocketMQ部署(docker版)

RocketMQ部署(docker版) 1. 部署开始前的准备 一台linux机器。(我这里使用的是阿里云的一个centos7的服务器)docker环境以及相关的简单知识。一些计算机网络的简单知识。(可以帮你透彻了解为什么这么部署) docker部署十分简单快捷…

JAVA85-135

JAVA85-135 字符集详解解码与编码方法 字符流FileWriter 拷贝文件夹字节缓冲流拷贝文件(一次读写一个字节)字节缓冲流拷贝文件(一次读写一个字节数组) 字符缓冲流控制软件运行次数 序列化流反序列化流/对象操作输入流打印流字节打…

macOS Monterey 12.6.5 (21G531) OC 0.9.1 / Cl 5151 / PE 三分区原版黑苹果镜像

苹果近期发布了 macOS Big Sur 11.7.6 和 macOS Monterey 12.6.5 更新,本次更新重点修复了标记为 CVE-2023-28206 的漏洞,在 macOS 13.3.1 更新中已修复,推荐大家安装升级。 镜像下载: macOS Monterey 12.6.5 (21G531) 三分区原版…