字符串的特征

底层是char类型的数组 char[]

replace():替换

split():切分

indexOf():第一个字符所在位置,从0开始算

substring(3, 6):字符串截取,包括3不包括6

字符串不可变

本质上是数组,数组是固定值,想往后延伸的话可能后面有别的程序运行,越界检测。所以不能在原地址变,指向了新的地方

不重复创建

String s1 = "aaa";

String s2 = "aaa"; //如果存在这个值的话,那再定义个变量等于他这个值,那么这个变量不再创建也指向这个值。

boolean x = s1 == s2;

非基本类型String比较是否相同,比较的是指向是否相同

在java里面如果没有人记录他了,就会被当成垃圾自动回收

字符串常量池

  • 字符串在常量池中没人指向他的话不会被回收
  • 遇到new一定是开辟新的空间,不在常量池

equals() 比较字符串的值是否相同

equals()的作用:

  • 每个类都有这个方法,都是集成Object,默认和==一样比较指向是否相同
  • 字符串中对这个方法进行了重写,仅比较值
  • 重写equals还需要重写hashcode(),因为hashmap的使用需要这两个方法配合
  • 面试题还会问如何打配合,hashmap存放数据原理

空串与Null串

String s1 = null; //不占空间

String s2 = ""; //{'\0'},占空间

API:接口带说明文档

其中,打算法用的多的:

split()

  • char类型本来的数可以直接用int类型的来表示,想看多少直接用int类型表示就行

输入字符串的时候不能用空格,因为空格也属于字符串

回车的话也会被吃,所以让他吃一次。前面没有那三行的话,就不用敲回车了,就不用吃回车了k4,直接输入就可以了

构建字符串

秒数从1970年开始记录

String、StringBuffer、StringBuilder 有什么区别

  • 都是搞字符串拼接
  • StringBuilder和StringBuffer速度远远高于String
  • StringBuffer里面加了锁,速度稍微慢一点点
  • StringBuilder多线程并发操作不安全和StringBuffer多线程并发操作下安全

内存构造

  • 地址空间是指系统能够使用的总内存范围,取决于系统的位数(如64位)。
  • 每个地址指向的大小是指通过该地址访问的实际数据大小,通常为1字节。

每个地址是指向1字节的内存,但地址本身的大小(即地址值的存储空间)取决于系统的位数。在32位系统中,地址通常是4字节,而在64位系统中,地址通常是8字节。

  • 内存按进行存储数据,如果按块进行存储,那么对内存的读写就会按块,每次读写的时间开销就会很大。对页进行存储,每次存储4kB(4096字节)。存储三个页,只需要下达三次地址指令即可。
  • 一个内存页只有一个总地址,第一个数据在第一个位置很容易找到,但其他数据都定位不到,多个变量就找不到(不同变量大小不一致)所以一个内存页能放一个变量

如果只存int类型,会浪费很多空间。内存页越大,读取的速度越快(读的页数少),但是浪费的越多,容易内存不足;内存越小,读取的次数就多(读的页数多了),读取的速度就慢,浪费的空间也越低。所以折中取4KB。-----操作系统分配的最小单元是一个内存4KB

原地址不可变值---字符串

后面4096次他得带着前面那些内容,循环是每次一个一个加,所以每次申请空间都要带着前面的

本地址可变---StringBuilder和StringBuffer

能极大减少内存的损耗。

StringBuilder前身是StringBuffer

缓冲区--Buffer(会申请很大空间,速度很快,不分语言,底层数组,对内存损耗小)

缓冲区空间越大,缓存次数越多。增加数据后空间不够就会缓存,缓存至满了之后才申请空间,所以对空间的申请少,对空间消耗少

文件-stream等(数组)操作,网络流操作---都需要缓冲区

  • 数组里面的数据可以放在一个内存页,因为长度相同,可以确定具体的位置

  • 弱类型语言不区分类型,由于默认不区分类型,所以它的数组里边存数据的时候可以各种类型都存到一块。每个数据大小不一样,把它往一个内存页放,他没办法定位到其他数据。不好定义,它对内存的消耗非常大,运行起来慢。

只要是文件操作都要指定编码,不指定都是ASCll

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

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

相关文章

三维扫描检测在汽车制造中的应用

三维扫描,通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

【已解决】黑马点评项目中启动Spring Boot服务失败,com.sun.tools.javac.tree.JCTree qualid

黑马点评项目中启动Spring Boot服务失败 报错提示 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid这是因为 lombok 版本不兼容造成的 找到 pom.xml 文件&#xff0…

Netty入门(快速了解以及使用netty)

二. Netty 入门 1. 概述 1.1 Netty 是什么? Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架&…

Python办公—DataMatrix二维条码制作

目录 专栏导读1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…

前缀和(八)矩阵区域和

1314. 矩阵区域和 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&…

Nginx日常运维方法Linux版

关注 工 仲 好&#xff1a;IT运维大本营1&#xff0c;安装&#xff1f; 下载RPM&#xff1a;wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm 离线包用其它方式下载也可以。 安装&#xff1a;rpm -ivh nginx-1.10.0-1.el7.ngx.x86_…

基于eFramework车控车设中间件介绍

车设的发展&#xff0c;起源于汽车工业萌芽之初&#xff0c;经历了机械式操作的原始粗犷&#xff0c;到电子式调控技术的巨大飞跃&#xff0c;到如今智能化座舱普及&#xff0c;远程车控已然成为汽车标配&#xff0c;车设功能选项也呈现出爆发式增长&#xff0c;渐趋多元繁杂。…

【Copilot 】TAB keybinding not working on JetBrains Client

pycharm ssh 远程到ubuntu24.04 发现tab就是tab,无法输出copilot给出的自动补全到便捷器里。禁用host的copilot插件,重新启动ide就好了。解决办法 参考大神的办法删除主机和客户端插件中的 Copilot插件。 仅在客户端中重新安装 Copilot 插件。 我只是禁用也可以 对比了键盘映…

使用API管理Dynadot域名,设置默认域名服务器ip信息

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…

结构型-代理模式(Proxy Pattern)

什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。 Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理…

如何实现多级缓存以及缓存之间数据的一致性

文章目录 神领物流 -- 如何实现多级缓存以及缓存之间数据的一致性一. 为什么要使用多级缓存?二. 为什么要选择MongoDB作为数据库三. 如何缓存之间的一致性1. 如何同步更新Redis缓存2. 如何同步更新CaffeineCache缓存 神领物流 – 如何实现多级缓存以及缓存之间数据的一致性 采…

哈希处理海量数据

接下来我们将以问题的形式来介绍如何用hash处理海量数据。 1.问题1 &#xff08;位图&#xff09; 给定100亿个整数&#xff0c;设计算法找到只出现一次的。 1.1问题分析 100亿个整数&#xff0c;一个整数占用4byte&#xff0c;那么就需要约40G左右的空间来存储。显然常见的…

锐捷Web认证

文章目录 Web认证二代 Web 认证配置 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月6日11点40分 Web认证 Portal 认证、Web认证 Web认证的介绍 Web 认证使用浏览器进行身份验…

深入剖析 Profinet 转 EtherCAT 网关模块的配置流程

有一个工厂需要将西门子S7-1200 PLC与伺服驱动进行通讯&#xff0c;因PLC支持PROFINET而伺服驱动需EtherCAT协议&#xff0c;无法直接通讯。采用捷米特&#xff08;JM-ECTM-PN&#xff09;智能的Profinet转EtherCAT网关模块解决此问题&#xff0c;需导入GSD文件、设定IP和设备名…

【C++习题】17.栈的弹出压入序列

题目&#xff1a; 链接&#x1f517;&#xff1a;栈的弹出压入序列 题目&#xff1a; 代码&#xff1a; class Solution { public:bool IsPopOrder(vector<int> pushV,vector<int> popV) {//入栈和出栈的元素个数必须相同if(pushV.size() ! popV.size())return …

【计算机网络】VLAN及IPVLAN技术解析

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习VLAN相关知识的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于 使用VMware组建VLAN网络实验环境 进行的&#xff0c;每个…

【Java】—— 继承

1.继承 1.1 为什么需要继承 在使用类的时候&#xff0c;是将生活中的实物&#xff0c;抽象到代码中进行表示&#xff0c;在生活中&#xff0c;很多实物都是存在关联的&#xff0c;例如 哈士奇、中华田园犬、萨摩耶 都是狗&#xff0c;他们有共性信息&#xff0c;也有属于自己…

2024-12-06 Unity Addressables3——资源加载

文章目录 1 引用加载1.1 Addressables 的资源引用类1.2 加载资源1.3 加载场景1.4 释放资源 2 Label 介绍3 动态加载3.1 加载单个资源3.2 加载多个资源 Unity 版本&#xff1a;6000.0.26f1c1Addressables 版本&#xff1a;2.3.1 1 引用加载 1.1 Addressables 的资源引用类 Ass…