常用类与基础API-String的理解和不可变性

1.String类的理解

1.1类的声明

public final class String

>final :String是不可继承的。

>Serializable :可序列化的接口,凡是实现此接口的类的对象就可以通过网络或本地流进行数据的传输

>comparable:凡是实现此接口的类,其对象都可以比较大小.

1.2内部声明的属性

jdk8:

private final char [ ] value;//储存字符串数据的容器

>final :指明此value数组一旦初始化,其地址就无法改变.

jdk9之后:为了节省内存空间而做的优化.

private final byte [ ] value;//储存字符串数据的容器

2.字符串常量的储存位置

>字符串常量都存储在字符串常量池(StringTable)中

>字符串常量池中不允许存放两个相同的字符串常量

>字符串常量池,在不同的jdk版本中,存放位置不同.

jdk7及之前,字符串常量池储存在方法区中.

jdk7之后,字符串常量池储存在堆空间中,静态变量也在堆空间中.

3.String的不可变性:每个点会配一个例子和一个运行图

当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能再原有的位置更改

下面这个例子s1输出是hello,内部的原理在下图.

@Test
    public void test()
    {
        String s1 ="hello";
        String s2 ="hello";
        s2="hi";
        System.out.println(s1);
    }

当对现有的字符串进行拼接操作时,需要重新开辟空间保存拼接以后的字符串,不能在原有的位置修改

下面这个例子s1输出是hello,s2输出是helloworld,内部的原理在下图.

@Test
    public void test1()
    {
        String s1 ="hello";
        String s2 ="hello";
        s2+="world";
        System.out.println(s1);
        System.out.println(s2);
    }

当调试字符串的replace( )替换现有的某个字符时,需要重新开辟空间保存修改以后的字符串,不能在原有位置修改.

下面这个例子s1输出是hello,s2输出是hello,s3输出是hewwo,内部的原理在下图.

@Test
    public void test2()
    {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = s2.replace('l','w');
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】多表关系的基本学习

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

基于8086单片机的数码管计时系统[proteus仿真]

基于8086单片机的数码管计时系统[proteus仿真] 8086仿真设计这个题目算是课程设计中常见的题目了,本期是一个基于8086单片机的数码管计时系统[proteus仿真] 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥&a…

Fiddler抓包(网页、手机、MUMU模拟器)

前置条件:电脑上下载安装好了Fiddler,有浏览器 一、网页抓包 1、fiddler下载安装证书 Tools-Options 勾选下面两个框 点击下面的选项,信任证书 会弹出弹窗,点击yes(这个时候注意,DO_NOT_TRUST_FiddlerRo…

防御保护第五次作业

1,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) FW5: 2,分公司设备可以通过总公司的移动链路和电信链路访问到DMz区的http服务器 FW5: 注:记得通过安全策略放行 分公司FW3 注意&#xff1a…

Open CASCADE学习|曲线向曲面投影

在三维空间中,将曲线向曲面投影通常涉及复杂的几何计算。这个过程可以通过多种方法实现,但最常见的是使用数学和几何库,如OpenCASCADE,来处理这些计算。 在OpenCASCADE中,投影曲线到曲面通常涉及以下步骤:…

【plt.bar绘制条形图】:从入门到精通,只需一篇文章!【Matplotlib】

【📊plt.bar绘制条形图】:从入门到精通,只需一篇文章!【Matplotlib】 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 🔍 一、初识plt.bar:条形图的基本概念💡 二、plt.…

Spring Boot 笔记 025 主界面

1.1 路由搭建 1.1.1 安装vue router npm install vue-router4 1.1.2 在src/router/index.js中创建路由器,并导出 import { createRouter, createWebHistory } from vue-router//导入组件 import LoginVue from /views/Login.vue import LayoutVue from /views/La…

Eliminating Domain Bias for Federated Learning in Representation Space【文笔可参考】

文章及作者信息: NIPS2023 Jianqing Zhang 上海交通大学 之前中的NeurIPS23论文刚今天传到arxiv上,这次我把federated learning的每一轮看成是一次bi-directional knowledge transfer过程,提出了一种促进server和client之间bi-direction…

【机构vip教程】Requests(1):Requests模块简介与安装

Requests模块简介 在python的标准库中,虽然提供了urllib,utllib2,httplib,但是做接口测试,requests使用更加方便快捷,正如官方说的,“让HTTP服务人类”。 Requests是用python语言基于urllib编写的,采用的是…

【漏洞复现-通达OA】通达OA swfupload_new存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

UVa1359/LA3491 Hills

题目链接 本题是2005年ICPC亚洲区域赛杭州欧赛区的H题 题意 平面上有 n(n≤500)条线段,其中每条线段的端点都不会在其他线段上。你的任务是数一数有多少个“没有被其他线段切到”的三角形(即小山)。如下图所示&#x…

初始树莓派 + VMware17 安装树莓派(Raspberry Pi 4B/5)

文章目录 树莓派入门 VMware17 安装树莓派(Raspberry Pi 4/5B)前言一、树莓派入门指南:从零开始探索树莓派树莓派4B和5对比 二、在VMware Workstation 17上安装树莓派4B/5操作系统:实现强大性能与便捷模拟工具准备开始安装树莓派1.创建一个虚拟机2. 选择…

[Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS 开启AP模式

​ 🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[旭日X3派] [Docker实战] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 …

【C++】类与对象【定义、访问限定符、this指针】

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 面向过程和面向对象初步认识 类的引入 类的定义 成员变量命名规则的建议: 类的访问限定符及…

Java面试第一站:计算机网络基础知识

该系列会持续更新,关注我,第一时间获取我的最新动态哟 Java面试中,经常会问到跟计算机网络知识相关的考点,有的小伙伴不是很明白。考察网络知识有什么意义? 因为编程的时候,多数的情况下是不用我们来编写 …

单主模式和多主模式切换

1 组复制模式切换注意点 组复制有两种运行模式,一种是单主模式,一种是多主模式。这个模式是在整个组中设置的,由 group_replication_single_primary_mode 这个系统变量指定,而且在所有成员上必须保持一致。ON 表示单主模式&#…

OpenAI Sora视频生成机制:时空补丁

AI如何将静态图像转化为动态、逼真的视频?OpenAI 的 Sora 通过时空补丁(spacetime patches)的创新使用给出了答案。 独特的视频生成方法 在生成模型的世界中,我们看到了从 GAN 到自回归和扩散模型的许多方法,它们都有…

基于结点电压法的配电网状态估计算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 结点电压法的基本原理 4.2 结点电压法在配电网状态估计中的应用 5.完整程序 1.程序功能描述 基于结点电压法的配电网状态估计算法.对配电网实施有效控制和操作的前提是实时数据库中数据…

在职阿里6年,一个28岁女软件测试工程师的心声

简单的先说一下,坐标杭州,16届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…

Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决

概览 在 Swift 5.9 中,苹果为我们带来了全新的可观察框架 Observation,它是观察者开发模式在 Swift 中的一个全新实现。 除了自身本领过硬以外,Observation 框架和 SwiftUI 搭配起来也能相得益彰,事倍功半。不过 Observable 对象…