Java的String (一)

java String(一)—— Java中的String类型 1、String类是通过char数组来保存字符串的。 String str = "hahaha"; 对应源码: 2 构造函数 String str = new String("hahaha"); 1)先创建一个空的String对象 2)常量池中创建一个abc,并赋值给第二个String 3) 将第二个String的引用传递给第一个String 注意:如果常量池中有abc,则不用创建,直接把引用传递给第一个String 对应源码: public String(String original) { 阅读详情

Java的String (一)

路漫漫其修远兮~再远真的就走不动了。大家好,这里是没用的朽木君,为了纪念荒废了两年的大学生活,决定开始我的博客之旅,与大家分享一下我学到的知识,大家有兴趣的话可以一起探讨啊!!

一、String 属于基础数据类型吗?
答案:
String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。
这是个非常基础的知识点,大家可以自己印证一下。

在这里插入图片描述

各位有没有发现什么,在idea中8个基础数据类型都会显示高亮,而String不会,因为他是一个对象。让我们按住Ctrl点击他们,发现点击基础类型没有效果,而点击String会看到它的源码。

都说要成为一个厉害的程序员,源码的阅读是必不可少的。让我们来简略看看开头源码

在这里插入图片描述
震惊,String原来是一个final类,并且用了final修饰的byte[]来储存数据,所以它不可变。
关于String源码的阅读以后会开个帖子详说,毕竟这应该会是我第一次阅读源码。朽木君真的是太菜了
在这里插入图片描述
二、String 类能被继承吗?为什么?
答案当然是否定的,刚刚源码已经明确显示了此类被final修饰,因此不可被继承。
那么又引出一个问题,final在Java中起什么作用呢?
(1)final 修饰的类叫最终类,该类不能被继承。
(2)final 修饰的方法不能被重写。
(3)final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

三、String不可变的好处
一个问题往往会向不同方向继续引发出新的问题,大家要有一颗探知的心,程序员这个烂活更是如此o(╥﹏╥)o

知道了String不可变,那么不可变的好处在哪?

  1. 可以缓存 hash 值
    因为 String 的 hash 值经常被使用,例如 String 用做 HashMap 的 key。不可变的特性可以使得 hash 值也不可变,因此只需要进行一次计算。

  2. String Pool 的需要
    如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。
    (关于String Pool,我会再开个贴详细探讨)

  3. 安全性
    String 不可变性可以用于一些重要的不可变的参数。

  4. 线程安全
    String 不可变性天生具备线程安全,可以在多个线程中安全地使用。

四、java 中操作字符串都有哪些类?他们有什么区别?
三个类,String,StringBuffer,StringBuilder。
1.从可变性看
String不可变,StringBuffer和StringBuilder可变。
2.线程安全
String不可变,是线程安全。
这里主要是后两者:
StringBuilder不是线程安全的,StringBuffer是线程安全,其内部使用了synchronized。(线程安全总是同步的)
但相应的,StringBuilder的性能也要高于StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

今天的分享就到这里,如果有不足的地方大家可以提提改进意见,朽木君很乐意做出改变。如果大家没意见的话就帮忙点个赞支持支持,给朽木君一点鼓励ヾ(◍°∇°◍)ノ゙

AI大模型应用性能核心指标:TTFT 与 TPOT 详解 这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。 阅读详情

相关推荐

ISP-全局色调映射(GTM)算法简单实现

色调映射算法,色彩空间转换LAB

notgoodenouf的博客 2242

为什么Java的String一出生就「不可变」

从Java 9开始,字符串内部改用byte[]存储,根据内容自动选择Latin-1或UTF-16编码。四重「空间换时间」的魔法,最终实现了性能与安全的完美平衡。这种设计哲学深刻影响了后来的Scala、Kotlin等JVM语言,成为编程界教科书级的范例。在每秒百万级并发的系统中,不可变性让字符串成为线程间最安全的信使。下次当你写下String时,别忘了,你正在使用的,是一个凝聚了25年智慧结晶的计算机科学艺术品!这种魔法优化的前提正是字符串不可变!这个看似简单的设定,背后竟隐藏着语言设计者的大智慧!

努力分享一些干货 1220

交换机基本介绍(分类、性能指标、硬件构成及工作方式)

一、交换机的分类与性能指标 1.1交换机的分类 按照网络构成方式来分的话,交换机分为三类:接入层交换机、汇聚层交换机和核心层交换机。 按照OSI模型来划分的话,分为:二层交换机、三层交换机和四层交换机 还有一种按照硬件形态来划分,可以分成两类:盒式交换机和机框式交换机。 盒式交换机是一种有固定端口数,有时也会带有少量扩展槽的交换机。机架式交换机是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,可支持更大端口密度的网络。一般在数据中心的接入层都会采用盒式交换机,盒式...

monologuezjp的博客 4万+

String系列:Java的String类一(String)

String str=“Welcome to”+“Luoyang”+“欢迎来到”+“洛阳。”+“洛阳我的故乡。复制代码使用。

afsdfrsg的博客 811

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1249

避坑指南:SAP STO订单里‘发货存储地点’栏位不显示?检查这个关键配置

本文深入解析SAP STO订单中‘发货存储地点’栏位缺失问题的根本原因及解决方案。通过激活库存地点间转储功能、维护库存地点主数据等关键配置步骤,帮助用户快速恢复业务操作。特别适用于MM模块实施顾问和SAP系统管理员处理UB STO相关技术问题。

weixin_30632089的博客 100

Java String①

本文介绍了Java字符串的基本操作,主要包括: 字符串创建的三种方式:直接赋值、new创建、字符数组转换; 字符串比较的方法,强调不能使用==比较内容,推荐使用equals、compareTo及其忽略大小写版本; 字符串查找的常用方法,如charAt获取指定位置字符,indexOf和lastIndexOf查找字符或子串位置。

idiot 534

KIBANA可视化管理界面说明

更说明转自https://blog.youkuaiyun.com/IT_ZRS/article/details/125496588 1 主要结构功能 使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图 主要进行搜索和查询 Visualize:统计视图 构建可视化的图表 Dashboard:仪表视图 将构建的图表组合形成图表盘 Timelion:时间轴视图 随着时间流逝的数据 APM:性能管理视图 应用程序的性能管理系统 Canvas:大屏展示

tian830937的专栏 7086

聊一聊Java中的String类

String类在Java中扮演一个非常重要的角色,几乎在每一段Java程序中都能看到它的身影,这里,简单聊一聊我对String的常见几个问题的理解。 1、到底创建了几个对象? 在各种笔试题库中,经常会看到这样的一段代码 String str = new String("bcd"); String str1 = "bcd"; 问:以上代码至少创建了几个对象? 要知道创建了几个对象,首先要先熟悉St...

qq_40619228的博客 185

SAP-ABAP:接口多继承与复合接口设计:复杂业务场景下的能力组合实现方案

本文介绍了ABAP中通过接口多继承与复合接口设计实现能力组合的方案。文章首先辨析了类实现多个接口与接口继承接口的核心概念,指出ABAP虽不支持类多继承,但可通过这两种机制灵活组合能力。随后详细讲解了类实现多个接口的语法规则与三种调用方式,并给出了五个基础能力接口的设计示例(日志记录、权限校验、数据导出、消息通知、格式转换)。作者通过对比单继承与接口多重实现的差异,强调后者在解耦和扩展性上的优势,为复杂业务场景下的能力组合提供了实用解决方案。

baidu_35680696的博客 247

EB配置I2c - 实现与PF8200的读写操作

①,基于硬件实现IIC通信(硬件GPIO引脚配置为I2c复用引脚)②,基于软件模拟IO实现IIC通信(代码控制SDA和SCL两个IO引脚的电平来模拟IIC时序)本文章基于64pin的恩智浦S32K146型号的芯片作为主机,从机是NXP的供电芯片。在本次实验中,我们将以使用EB工具链来配置硬件IIC通信。1,EB配置2,代码编写3,测试验证话不多说,走你~写操作比较简单,只需要申明一个I2c配置结构体变量即可。

weixin_48498880的博客 3768

JAVA 学习 String 定义以及基本方法(一)2019

JAVA 学习 String 定义以及基本方法(一)2019 一.不可变的字符串 String 1.定义 2.使用方法

weixin_44614751的博客 167

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

【一看就懂的java学习】之 String

String13 String1 概述2 String的构造方法3 String对象的特点4 字符串的比较5 String的方法 13 String 1 概述 String类在java.lang包下,所以使用的时候不需要导包 String类代表字符串,Java程序中的所有字符串文字(例如"abc")都被实现为此类的实例 也就是说,Java程序中所有的双引号字符串,都是String类的对象 字符串的特点: 字符串不可变,它们的值在创建后不能被更改 虽然String的值是不可变的,但是它们可以被共享 字符串效

qq_38785034的博客 407

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Java开发日记】我们来说一说 InputSteam 转 String

创作不易,大家的支持就是我坚持下去的动力!分别按照字符串长度来进行测试。如果小假的内容对你有帮助,请。

纵有疾风起 人生不言弃 2199

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java String详解(一)

对于Java来说String对象可以说是使用最频繁的,字符串对象在内存中占据了最大的空间快。我们平时在编程的时候经常使用String,也最容易忽略对于String的认识,因此深入的认识String有助于我们写出的代码更高效更安全。

晴空๓ 1057

Java String 之专题 一

我们首先来看一段代码: String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成String str、=、...

66

java string数组转string_Java基础之String漫谈(一)

Java-String1. 导读String类也是日常开发中经常用到的类, 今天主要分享下我在看String源码时想到的4个问题:1.1 String为什么是不可变的; 为什么要设计成不可变的;1.2 hashCode; 为什么是31;2. String为什么是不可变的;public final class Stringimplements java.io.Serializable, Compar...

weixin_39771791的博客 677

JAVA String的另一特例

JAVA String 的又一个实例   看下面例子: public class StringTest {        public static void main(String[] args)     {        String str1 = "hello";        String str2 = "hel";        str2 = str2 + "lo";      

小鱼的最爱 1149

【Java面试】来讲一讲你对String的理解

java的String类可以说是日常实用的最多的类,但是大多数时候都只是简单的拼接或者调用API,今天决定深入点了解一下String类。

Zhangsama1的博客 791

Java的String类(一)

java字符串简介

m0_74132709的博客 1083

Java——String类(一)

Java学习之String类学习目标一、认识String类二、String类的常用方法1.字符串构造2.String对象的比较 学习目标 认识 String 类 了解 String 类的基本用法 熟练掌握 String 类的常见操作 认识字符串常量池 认识 StringBuffer 和 StringBuilder 一、认识String类 在Java语言中,所有类似“ABC”的字面值,都是String类的实例;String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、

qq_55756224的博客 619

【Java String类型一】

String(byte[] arr) 将字节数组的全部转成字符串:解码,使用编码表 String(byte[] arr, int offset, int len) 将字节数组的一部分转成字符串,从offset索引开始,一共转换len个 String(char[] arr) 将参数字符数组,转成字符串:既不是编码,也不是解码,只是把分散字符穿成串 String(char[] arr, int offset, int len) 将字符数组的一部分转成字符串:从offset索引开始,一共转换len个 Stri

weixin_44882620的博客 187

Java——String类(一)

本文旨在介绍String类的常用方法。

华墨1024的博客 374

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 295
下一篇: Java之String Pool
被精雕的朽木
博客等级 码龄6年 0粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值