这一章节我们来讨论一下不变的字符串。
为什么说是不变?
我们先看String 的构造器
public String() {
this.offset = 0;
this.count = 0;
this.value = new char[0];
}
其中里面的value,我们再看一下:
/** The value is used for character storage. */
private final char value[];
value的标识符是final,因此,字符串在编译器里面是不可原地修改。
package com.ray.ch11;
public class Test {
public static void main(String[] args) {
String a = "a";
String b = a.toUpperCase();
System.out.println(a == b);
}
}
输出:
false
在转换的过程中,其实是把“a”这个字符串对象复制一份,然后再进行转换。
我们可以点进去toUpperCase方法里面,里面需要注意的有两句:
System.arraycopy(value, offset, result, 0, firstUpper);
和
return new String(0, count+resultOffset, result);
第一句是把传入的值复制一份,然后第二句在最后new一个新的字符串出来。
然后,大家可以在String 这个类的源代码里面搜索一下return new String,你会发现,你常用的那些方法,基本都是返回一个新的字符串。
总结:我们这里只是简单的结束一下字符串的可不修改的特性,其实它里面还包括很多内容,但是暂时不做详细展开,大家知道有这个特性即可。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的数值 int型 Integer.parseInt(字符串) ...
Java基本用法,如字符串 1、获取字符串的长度的 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串的 equals(String s) 4、把...
如果输出的字符串内包含单引号,那么字符串的最外侧就用双引号,反之亦然;如果字符串内既包含单引号又包含双引号,那么字符串的最外侧就是用三引号 字符串切片 [M:N:K] M指的是开始位置,N是截止位置,K代表步长,...
字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的...
字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s) 后缀 endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的...
我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:第一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;第二是不把这个字符放到组合中去,接下来我们需要在剩下的n-...
从头开始学习Java课程-资料来源PillsInformática。
Public Function findstr(ByRef instring As String, after As String, before As String, rewind As Boolean) As String ’instring母串,after前面字符,before后面字符,rewind从头开始查找
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
ASCII字符串形成 :globe_with_meridians: 我NPUT从用户拍摄和字符串从头开始形成。 字符串的单个字符被采用。 每个字符的ASCII值递增,并对照给定的字符串进行检查。 一直执行此过程,直到获得所形成字符串的所有...
赖世雄英语从头学 下载-附件资源
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
主要介绍了C#实现中英文混合字符串截取的方法,是C#字符串操作的常用方法,需要的朋友可以参考下
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar