java中的String特殊之处

java-String(特殊的类) String 是 Java 中的一个引用类型,属于 java.lang 包。它是不可变的,任何修改操作都会生成一个新的对象。通过字符串常量池优化存储,提供了丰富的操作方法。在实际开发中,如果需要频繁修改字符串,建议使用 StringBuilder 或 StringBuffer。 阅读详情

 

本文属本人原创,如要转载,请指明出处
http://blog.youkuaiyun.com/rypgood


java里面,String是最特殊的一个类。说它是基本类型,它又不是,说它不是基本类型,又和基本类型很

像,如果不搞清楚,很容易出现一些问题。下面我们来分析它的一些特点。
我们知道,String和int等基本类型一样,可以不用new关键字来对它进行赋值,如:
String s1="abc";
String s2="abc";
下面来了一个问题,问:由以上创建的s2和s2,s1==s2是true还是false?
可能你一不小心就答false了,但是经过你的测试,它是返回true的。
再一个问题:
String s1="abc";
String s2="abc";
以下表达式中得到的结果是什么?
1、s1+s2=="abcabc"
2、s1+"abc"=="abcabc"
3、s1=="ab"+"c";
4、"abc"+"abc"=="abcabc"
你可以自己测试一下,答案是:
1、false
2、false
3、true
4、true
这是为什么呢?
这就要从内存说起了。java的基本数据类型只在栈内存中操作,其中包括char。而String,我们知道,字

符串其实是由字符数组变换而来的,所以String实际上就是一组char串。为了使用的方便,java将String

设计成可以由栈内存中存储字符串对它进行赋值。由于栈内存中的内容是唯一的,所以当s2被赋成"abc"

时,并没有新创建一个字符串;两个无引用的字符串进行加法操作,它是在栈中进行的,即把它当作基本

数据类型来对待,所以第3和第4个表达式是true。但是两个字符串进行加法操作时,有一个为有引用的类

型时,它们的加法操作将被放到堆中进行。这就是为什么1和2两个表达式为false了。
(关于栈内存和堆内存的内容可以到网上查找,这里不再说明。)

另外还要注意的是,String是不可变的,就是说,对某个字符串进行任何操作都不能改变它的内容。

Java中String类型变量的赋值问题介绍 在上面的代码中,首先创建了一个字符串"Hello",然后通过字符串拼接操作创建了一个新的字符串"Hello, World!这里需要注意的是,原始的字符串"Hello"仍然保持不变,而是创建了一个新的字符串对象。字符串是不可变的,这意味着一旦创建,它们的值就不能被修改。当对字符串进行操作时,实际上是创建了一个新的字符串对象,而原始的字符串对象保持不变。在上面的代码中,我们首先创建了一个字符数组charArray,然后使用String类的构造函数将其转换为一个String对象,并将其赋给str2变量。 阅读详情

相关推荐

LIN总线CAPL函数实战——动态控制报文发送(linDeactivateSlot与linActivateSlot)

本文深入解析了LIN总线测试中动态控制报文发送的核心CAPL函数linDeactivateSlot与linActivateSlot的实战应用。通过详细拆解函数参数、生效范围及限制,并结合故障注入、功耗测试等实际场景的代码示例,指导测试工程师在仿真LIN主节点时,灵活调度报文发送,实现高效自动化测试。

weixin_29255731的博客 349

Java基础之String类

String类表示一个字符串。 String类是一个比较特殊的引用数据类型。在使用上比较像基本数据类型。

qq_53350943的博客 389

Blender入门教程-3D视图界面介绍

3D视图用于与3D场景交互,可用于各种目的,例如建模、动画、纹理绘制等。在关闭 启动画面 后,启动场景会显示在3D视口中(如果没有加载其他blend文件)。01 标题栏标题栏包含了基于当前 模式 的各种菜单和控制。

weixin_52345129的博客 2289

Java学习总结之String特殊性

首先,用一句话来说,String的特殊性取决于它“不可变”。 特殊性之一:两种创建实例的方法。String不属于基本类型,每个String都是一个对象,所以一种创建实例的方法就是当做对象,String s = new String(“abc”);                        另一种创建实例的方法和基本数据类型很像,String s = “abc” ;

hzp的专栏 1527

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

pi-coding-agent 完整详解

pi-coding-agent是一个由Mario Zechner开发的专业AI编程助手,基于Node.js和TypeScript构建。核心功能包括:1)多级思考模式(ThinkingLevel),从none到ultra控制推理深度;2)对话压缩(compaction)管理长对话记忆;3)WebSocket实时通信支持流式交互。该智能体支持代码生成、调试、重构等专业编程任务,采用AI Agent架构,具备工具调用和多轮记忆能力。项目结构通常包含server、agent、config等模块,可通过二次开发扩展功

大坡3D软件开发 2429

Java中引用数据类型String的独特之处

1.String 为引用数据类型,打印输出应该是地址,但结果并不是我们想的那样       如:String s1=new String("hello");//结果不是地址,而是hello2.String 的直接赋值和调用构造方法赋值   所指向的地址值不同  如  String s1=new String("hello");//这里的s1先指向堆内存中new出来的对象, 再通过new出来的对象指...

whileIsTrue的博客 696

【ArcGIS微课1000例】0149:Geographic Imager6.6下载安装教程

首先保证电脑上安装对应版本的PS软件,笔者安装的是PS2023(V24.7)版本,然后安装本软件。保持以上窗口运行状态,然后打开PS,自动弹出如下窗口。勾选【Automatically checkout LIcense】,点击Close。双击setup开始安装,点击【确认】,一路默认安装到底。驱动器:DVD-ROM驱动器(用于DVD版本)处理器:2GHz或更快的英特尔或AMD处理器。安装完成后,将Crack中的所有文件拷贝到。硬盘:600 MB的可用硬盘空间用于安装。内存:4GB内存(建议8GB或更高)。

智慧空间实验室 1220

一文搞懂String这个特殊的引用类型

前言 有时候有人会来问笔者,String是值类型还是引用类型?首先明确一下,String是引用类型。 JAVA语言除了8大基本类型(byte,short,char,int,long,float,double,boolean), 其他的都是引用类型, 所以String也是引用类型。 下面通过一些例子来说明java中直接定义一个字符串、new String(), String.intern(),字符串常量池这些概念的区别和应用。 直接定义一个字符串 String s1 = "hello"; String s2

kangbin825的专栏 3226

【2026 Science Robotics】Learning realistic lip motions for humanoid face robots

哥伦比亚大学Yuhang Hu团队提出了一种创新方法,通过10自由度软体嘴唇设计和自监督学习算法解决仿人机器人嘴唇动作僵硬问题。研究采用变分自编码器(VAE)和面部动作Transformer(FAT)模型,将语音信号转化为机器人可执行的电机指令。实验表明,该方法在多语言测试中表现优异,用户偏好率达62.5%,显著提升了口型同步的真实感和流畅度。该成果突破了传统机械结构的限制,为跨越"恐怖谷效应"提供了有效解决方案。

志在山顶的人,不会贪念山腰的风景 308

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

java中特殊的String类型

栈 :由JVM分配区域,用于保存线程执行的动作和数据引用。栈是一个运行的单位,Java中一个线程就会相应有一个线程栈与之对应。主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)和对象的引用,数据可以共享,速度仅次于寄存器(register),快于堆。 堆 :由JVM分配的,用于存储对象等数据的区域。用于存储对象。  

学习之路 690

《八》:玩家位置同步(玩家防碰撞)

在VR大空间体验中,由于玩家佩戴头显设备无法直接观察彼此位置,容易发生碰撞。因此,需要将玩家的实时位置信息绘制在虚拟空间中,实现位置可视化。通过获取头显的位置和旋转角度等数据,可以推算出玩家的移动状态和位置。使用可序列化的玩家结构体,通过UDP将玩家数据发送到服务器,服务器接收并反序列化数据后,同步所有玩家的最新信息至各客户端。客户端根据接收到的数据渲染虚拟人物模型,实现动态位置更新。这一过程涉及数据序列化、反序列化、网络通信和实时渲染等技术,确保玩家在虚拟空间中的位置同步和可视化。

unitygroup的博客 413

Java中特殊类String

为什么说String类是特殊类?说它是基本数据类型它又不是,说它是引用数据类型,看了(3)中的叙述,又发现它不似其他引用类型,所以很特殊,要单独记忆。 (1)首先说String类的字符串常量。字符串常量就是String类的匿名对象,也就是说只要代码中出现字符串常量,就会在堆内存中有这个匿名对象,且该字符串常量会入池,也就是程序中再次出现该字符串常量还是之前堆内存中的那个。 看一下下面这段代码: p...

poppy_bei的博客 341

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java克隆中String的特殊性

之前仔细研究过java中克隆的相关知识,http://blog.youkuaiyun.com/naivesoft/article/details/6596281,但是还有一些考虑不全的地方。         String不是基本数据类型,但是在深复制的时候并没有进行单独的复制,也就是说违反

Naivesoft 6180

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java String 分割 split 特殊字符

java String 分割 split 特殊字符 需要注意以下特殊字符 (均需要转义\\) "|" "." "*" "_" "+" "" api: public String[] split(String regex)Splits this string around matches of the given regular expression. 参数regex是一个 regular

jihuanliang的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java 里特殊的String

首先String不属于8种基本数据类型,String是一个对象。 但它又是一种特殊的对象,有其它对象没有的一些特性。 new String()和new String(“”)都是申明一个新的空字符串,是空串不是null。Java会确保一个字符串常量只有一个拷贝。 常量池(constant  pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方

snail_bi的博客 385

java 特殊字符 split_Java:String.split()特殊字符处理操作

Java:String.split()特殊字符处理操作,字符串,字符,给大家,条件,第一个Java:String.split()特殊字符处理操作易采站长站,站长之家为您整理了Java:String.split()特殊字符处理操作的相关内容。一:需要特殊处理才能使用split()方法的字符(1)需要使用"\\"或"[ ]"才能正确使用的字符集:( ) [ ] { \ ? * + . ^ $ |(2)...

weixin_30856391的博客 1356

java string split 引号_Java:String.split()特殊字符处理操作

一:需要特殊处理才能使用split()方法的字符(1)需要使用"\\"或"[ ]"才能正确使用的字符集:( ) [ ] { \ ? * + . ^ $ |(2)栗子:String str = "a0^33$\\53\6|!?3#6&5/*6~9 MY{.3+-/}*(]6[>=//这里以"("为例String str_sub1 = str.split("\\(")[0];String...

weixin_42351363的博客 1000

Java中特殊的String类型

Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String("abc"); 第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果没有则在栈中创建三个char型的值'a'、'b'、'c',然后在堆中创建一个String对象object,它的值是...

不忘编码 168

Java String.split()特殊字符的用法

在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分

开心的专栏 933
上一篇: java解决百度之星一题
下一篇: java方法参数传递问题
rypgood
博客等级 码龄21年 36粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值