java常用类: String,StringBuffer和StringBuilder的底层区别

news2024/11/21 1:40:00

java常用类型:
Ineteger等包装类
String类,StringBuffer类和StringBuilder类
Math类及常用方法
System类及常用方法
Arrays类及常用方法
BigInteger类和BigDecimal类及常用方法
日期类Date类,Calender类和LocalDateTime类

文章目录

  • String
      • 介绍
      • String创建细节
      • String s ="hsp" 和 Stirng s1 = new Stirng("hsp")的区别
      • String底层存储小结
      • 经典题目
      • 字符串的特性
        • String重新赋值时底层处理
        • String两个常量相加创建时
        • String 两个对象相加
        • 题目
      • String总结
      • String常用方法和案例
      • String格式符
  • StringBuffer
    • stringBuffer介绍
    • String Vs StringBuffer
    • StringBuffer的构造器
    • StringBuffer 与 String转换
    • StringBuffer常用方法
  • StringBuilder
    • 基本介绍
    • String, StringBuffer 和StringBuilder 对比

String

介绍

在这里插入图片描述

String创建细节

对String直接赋值(如下) ,String的值直接放在常量池(常量池的详细内容需要学习jvm,但这里只需看下面的结构图就可以)
在这里插入图片描述

string的本质是value[] ——>地址

不可修改指 value的地址不能修改 但是value装的值可以修改

String s =“hsp” 和 Stirng s1 = new Stirng(“hsp”)的区别

在这里插入图片描述

两种方式的区别 结构
在这里插入图片描述

String底层存储小结

== 比较值 : 就是只能比较( 数字) 和 (地址串 ) 不能比较 (字符串的值)
equals() 比较对象值 : 直接比较字符串的值,是底层重写的方法
intern()返回常量池的地址 没有就造常量池地址,再返回
new 对象的引用 : 指向 堆中value的地址 不指向 方法区的常量池 地址


案例
因为a和b的值一样 所以a.equals(b)是T
因为a和b的地址也是一样,在常量池就是同一个东西,所以==也是 T
在这里插入图片描述

经典题目

在这里插入图片描述

b.intern() 返回常量池的引用,如果常量池没有就从堆中存到常量池再返回地址

在这里插入图片描述


字符串的特性

String重新赋值时底层处理

只要常量池没有就创建字符串

在这里插入图片描述

String两个常量相加创建时

在这里插入图片描述

String 两个对象相加

就会在常量池存三个字符串值
在这里插入图片描述

c指向堆,在堆中创建value ,再在常量池创建常量

a , b指向常量池

在这里插入图片描述

题目

在这里插入图片描述

难题

1.函数中 的 str = "java"新生成常量池 但是函数结束 str被销毁 最后还是输出 主函数对象的str;

2.函数中 的 ch[0] 成功修改了 堆中的值 主函数的值也修改了

3.就是说 常量池的值 只能添加 不能修改和删除

在这里插入图片描述

String总结

在这里插入图片描述

String常用方法和案例

在这里插入图片描述

案例
在这里插入图片描述

str.equals(str) //值的对比 内容是否相等

str.equalsIgnoreCase(str) //忽略大小写
 
str.length() //不包括'\0'
   
str.IndexOf("as")
str.IndexOf('a')  //最前面那个
    
str.substring(0,5) //下标0到 5-1  最后一个不取 
                   //5超出范围则 取完剩下的就行
    
str.substring(5)  //下标5开始 取完剩下的
    
str.trim()   //去除前后空格
    
str.charAt(1)  //返回下标的字符

在这里插入图片描述

例子 此类方法都不会 改变原常量 而是新增

concat和replace 拼接字符

在这里插入图片描述

split()分割 转义
split()和replace()还可以和正则表达式配合使用,更强大:java正则化表达式
在这里插入图片描述

String格式符

格式符: %s, %c, String.format()
字符串:%s
整型: %d
字符型:%c
浮点型:%f
布尔型:%b

String.toUpCase().charAt(0)

下方表示用对应的数据代替对应的位置打印
在这里插入图片描述


StringBuffer

stringBuffer介绍

在这里插入图片描述

存储特性

在这里插入图片描述

char [] 不是final 可以修改字符串的值

存放在堆中 可以修改


String Vs StringBuffer

在这里插入图片描述

在这里插入图片描述

StringBuffer的构造器

在这里插入图片描述

StringBuffer 与 String转换

随便记一两个就行
在这里插入图片描述

StringBuffer常用方法

在这里插入图片描述

delete 不会删除下标为end的 元素 , 即左闭右开,删到end前一个

其他同理

StringBuilder

基本介绍

在这里插入图片描述

不是线程安全的 不是同步的 用在单线程(即只有一个线程来操作它)

StringBuilder 单线程 StringBuffer 用在多线程

因为底层实现没有关键词 synchronized 锁多线程会有风险

在这里插入图片描述

String, StringBuffer 和StringBuilder 对比

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据技术架构(组件)13——Hive:字符串函数

1.4.7、字符串函数1.4.7.1、asciiselect ascii(a);1.4.7.2、base64-->Hive0.12.0select base64(cast(abcd as binary));1.4.7.3、character_length-->Hive2.2.01.4.7.4、chr-->Hive1.3.01.4.7.5、concatselect concat(1,1,2,a),concat(1,a,null);1.4.7.6、context_ngr…

【JavaSE】ArrayList的扩容机制源码分析

文章目录1. ArrayList概述2. ArrayList构造方法源码分析3. ArrayList.add()源码分析4. ArrayList.addAll()源码分析5. 总结1. ArrayList概述 ArrayList是Java集合框架中比较常用的一个数据结构了,它底层是基于数组实现的。数组是固定大小的,但是ArrayLi…

禾川HCQ+X3E ModBUS 电机远程启动

前面讲过了 通过EtherCat总线级联X3E控制伺服电机,这次使用ModBus总线远程控制该电机启停。 硬件: HCQ0 1100/1200D X3EB 驱动 SV系列电机,主机电脑或者主PLC,硬件连接:电脑网口连HCQ0 port1 port2 连X3EB,软件需要用到TCP调试工具。 步骤一通讯: 1建立工程,修改本机地…

1月31日 : 读书笔记

为了让操作系统能够使用32位模式,需要对CPU做各种设定 最近的操作系统能同时运行多个程序,如果内存地址的使用范围重叠了怎么办?解决这个问题的方法就是分段。 什么是分段? 打个比方,将4GB的内存分成很多块&#xff0c…

【Mysql第五期 排序与分页】

文章目录案例使用的数据脚本1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序2.分页2.1 需求2.2 实现规则3.课后习题扩展分析原因问题解决总结案例使用的数据脚本 1.mysql脚本下载链接https://download.csdn.net/download/qq_43674360/87408079 2.或者自己新建一个sql后缀文本…

京东数据分析(竞品监控):飞利浦王牌产品在中国失利

近日,飞利浦集团发布了2022年第四季度及全年的业绩报告。根据报告显示,第四季度集团销售额达54亿欧元,可比销售额增长3%,可比订单量减少8%。 而全年业绩数据显示,集团销售额为178亿欧元,可比销售额下降3%&a…

sql进阶,多表及关联

–odps sql –– –author:宋文理 –create time:2023-02-01 16:24:24 –– – 创建非分区表 CREATE TABLE csxx_ffq( rq STRING COMMENT ‘日期’, xh BIGINT COMMENT ‘序号’, sj STRING COMMENT ‘数据’ ) COMMENT ‘测试数据(非分区表)’; – 创建分区表 CRE…

ModuleNotFoundError: No module named ‘jnius‘

在termux中安了 ubuntu22.04 ,在其中中使用apt install python3-pip 后运行pip3出错 Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_vendor/platformdirs/android.py", line 85, in _android_folderfrom jnius import au…

call,apply,bind的使用及原理

call,apply,bind的使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…

StarRocks市场渗透率跻身Top10!

近日&#xff0c;国内著名的研究咨询机构艾瑞咨询发布了《2022年中国数据库研究报告》&#xff08;以下简称“报告”&#xff09;。报告指出&#xff0c;目前数据库产品的国内渗透率达到前所未有的高度&#xff0c;且头部效应明显。其中&#xff0c;StarRocks以“极速统一”的性…

java常用类:日期类Date,Calender和LocalDateTime

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录引言日期类Date(第一代)时间戳转字…

缓存更新策略分析

缓存常用于读多写少的场景&#xff0c;用于缓存结果数据&#xff0c;降低响应时间&#xff0c;提高服务性能。通常缓存与数据库一起使用&#xff0c;数据库负责持久化&#xff0c;缓存负责高性能。数据库无法同时满足持久化与高性能&#xff0c;所以引入缓存解决高性能问题。缓…

SwiftUI 文本框TextField添加清除按钮

这里写自定义目录标题前言/背景实现参考前言/背景 使用SwiftUI框架&#xff0c;希望在文本框TextField控件中输入内容后显示一个清除按钮,可以清空内容,像这样&#xff1a; UIKit 框架的 UITextField可以配置clearButtonMode,但是SwiftUI框架里的TextField没有这个&#xff…

javaScript常用语法

一、数据类型1. 原始数据类型(7个)number, string, boolean, undefined, null, symbol, bigint1.1 number包括以下三种浮点和整型数字(如3.1416926和3)NaN(not a number)不是数字infinity超出js数字范围的数值2. 引用数据类型(3个)object, array, function2.1 特殊类型RegExp, …

MySQL Performance Schema知识点

MySQL Performance Schema知识点 程序插桩&#xff08;instrument&#xff09;。程序插桩在MySQL代码中插入探测代码&#xff0c;以获取我们想了解的信息。 消费者表&#xff08;consumer&#xff09;&#xff0c;指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加…

基于Springboot搭建java项目(二十六)——创建Vue前端项目

创建Vue前端项目 一、创建Vue前端项目 1、安装 Vue CLI 1.1、下载Node.js 因为需要使用 npm 安装 Vue CLI&#xff0c;而 npm 是集成在 Node.js 中的&#xff0c;所以第一步我们需要安装 Node.js&#xff0c;访问官网 https://nodejs.org/en/&#xff0c;首页即可下载。 下…

day26|455.分发饼干、376. 摆动序列、53. 最大子序和。进军贪心

455.分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…

Python | 数据类型之元组和字典

知识目录一、元组(tuple)1.1 元组的创建1.2 访问和修改元组1.3 内置函数二、字典(dict)2.1 字典的创建2.2 访问和修改字典2.3 字典键的特性2.4 函数与方法一、元组(tuple) Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列…

kubernetes-dashboard 实现 http 访问以及免 token 登录

文章目录[toc]下载官方 yaml 文件修改 yaml 文件修改 service 端口修改 clusterrolebinding修改 deployment 内容修改探针检测修改镜像拉取策略修改容器端口关闭 token 登录增加 ingress完整版 yaml下载官方 yaml 文件 最后有完整版的 yaml 文件&#xff0c;不想看细节的话&am…

苹果中的这些小技巧,你知道吗

技巧一&#xff1a;iPhone镜像 觉得手机屏幕太小看电影玩游戏不爽怎么办&#xff1f;投屏功能帮我们解决了问题&#xff0c;使用方法也很简单。打开控制中心&#xff0c;点击投屏&#xff0c;选择设备&#xff0c;连接投屏。这里需要注意的是&#xff0c;手机和连接的设备必须在…