java常用类: String,StringBuffer和StringBuilder

news2025/2/26 13:33:07

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/190788.html

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

相关文章

转投高通平台,大众展露主导自动驾驶的野心

/ 导读 /2022年,英特尔几乎以亏本的价格推动Mobileye上市,成为市场上的一大看点。出现这种情况的原因,除了整个美国自动驾驶大环境不好,和Mobileye接连失去几个大客户不无关系。其中尤以大众这样体量的客户对于Mobileye的影响最为…

Ubuntu 系统如何以 root 用户SSH登录实例

文章目录前言总结前言 出了点小插曲,心情烦躁,搞得Ubuntu都连不上了,心态炸裂。 不过后面冷静下来以后还是找到了解决办法,可以用ssh成功连上root权限的Ubuntu。 因为很少接触Ubuntu,所以不知道即使root的密码正确…

09技术太卷我学APEX-定制页面及导航菜单权限

09技术太卷我学APEX-定制页面及导航菜单权限 0 始终没搞明白APEX的角色如果分配页面的权限,只能自己定制一个 APEX现学现卖开发了个《5217仓库管理》,功能在春节前就搞定了,卡在对页面的权限控制,经过翻阅牛人的博客&#xff0c…

使用vue3,vite,less从零开始学习硅谷外卖.docx

严正声明! 重要的事情说三遍,本文章仅供分享,文章和代码都是开源的,严禁以此牟利,严禁侵犯尚硅谷原作视频的任何权益,我知道学习编程的人各种各样的心思都有,但这不是你对开源社区侵权的理由&am…

读书:《高效的秘密》

#《高效的秘密》的作者是《纽约时报》商业调查记者查尔斯都希格,他的另一本畅销书是《习惯的力量》。 高效不是超额工作、拼命工作,甚至牺牲自己的个人生活。高效的秘密取决于你做选择的方式。 一、激发动力,重新审视效率产生的源头 掌控力…

1.7 Cubemx STM32F429_RTX FATFS 库函数讲解(三)

文章目录1、打开文件夹2、读取文件夹3、打开\新建一个文件5、读取文件1、打开文件夹 FRESULT f_opendir ( DIR* DirObject, /* Pointer to the blank directory object structure */ const TCHAR* DirName /* Pointer to the directory name */ ) 函数说明: 此函数可以打开…

React中如何使用Mobx

一、Mobx前端状态管理框架 基础概念? 1. 什么是Mobx Mobx是一个简单、可扩展的状态管理库 2. 什么是状态管理? 状态管理就是将分布在各个组件、各个模块中的状态的变化,按照一定的规则,进行统一的管理。 3. 为什么需要状态管…

NX二开ufun函数创建块/基准平面/凸台/垫块/腔体

本节主要讲述通过ufun函数直接创建块、基准平面、凸台、垫块、腔体,涉及ufun函数如下: 1、创建块 UF_MODL_create_block 2、创建基准平面 UF_MODL_create_fixed_dplane 3、创建凸台 UF_MODL_create_boss 4、创建垫块 UF_MODL_create_rect_pad5 5、创…

聊聊如何成为更好的架构师?

之前有小伙伴咨询架构方向需要学习什么,需要什么技术储备,今天就来深入聊聊这个话题。 就此探讨下必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从…

开学季,送什么给小学生实用?学生最实用的护眼好物

伴随着“立春”,又到新的春季开学季,不管是家长还是孩子面对每个学期的循环,每一次都有新的故事和发现,很快就要开学了,给学生的小礼物准备好了吗,作为父母、长辈送给孩子最好的礼物,我认为莫过…

大数据舆情分析软件实时监控,TOOM大数据处理与舆情监控简介

舆情数据分析处理是指通过使用大数据技术、人工智能、自然语言处理等,从舆情数据中提取信息,进行模型建立、模式识别、情感分析等,从而了解舆论情况。舆情数据分析处理的目的是了解舆论趋势、话题热点、网民情绪等,从而便于企业、…

中国电子学会2022年03月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

分数:100 题数:24 一、单选题(共10题,共30分) 1. 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数?注意:每一位都不相同,最高位不能为0。( ) A. 720 B. 360 C. …

动态规划Dynamic Programming的基础解法

本文是对Jeff Erickson经典算法入门书籍《Algorithms》中动态规划问题的阅读笔记,近期在刷一些编程题,对于如何凑出动态规划更新的范式,脑袋里一直是一团乱麻,特别看完了别人的题解,只是惊叹其脑洞,但一直搞…

分页数据渲染

SearchResult属性增加 增加属性 private List<Integer> pageNavs; 目的&#xff1a;产生分页效果&#xff0c;方便操作&#xff0c;navs记录了从1到总页数的暑假 不是第一页时显示上一页 <a class"page_a" th:attr"pn${result.pageNum - 1}" hre…

算法基础集训(第30天)------>DFS之经典【n皇后问题】

一&#xff1a;概念定义n−皇后问题是指将 n个皇后放在 nn的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。二&#xff1a;题目描述n−皇后问题是指将 n个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇…

【C++入门】函数重载

目  录1 函数重载概念2 C支持函数重载的原理 -- 名字修饰&#xff08;name Mangling&#xff09;1 函数重载概念 函数重载&#xff1a; 函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这些同名函数的形参列表&#xff08;参数个数…

企企通入选「AI中国」机器之心“最具商业价值解决方案 TOP 30” 榜单

近日&#xff0c;由专业的人工智能信息服务平台机器之心&#xff0c;发起并评选的「AI 中国」机器之心2022 年度评选榜单正式公布&#xff0c;企企通凭借过去一年在采购供应链领域取得的成就&#xff0c;以及在技术、产品、服务能力方面具备的独特优势&#xff0c;从众多企业中…

Python连接Liunx中mysql数据库-三表查询【10个经典案例】

关于Python连接liunx中mysql数据库的方式在这一篇文章 Python连接Liunx中mysql数据库-保姆级教程 关于Python针对liunx中的mysql数据库进行增删改查操作的文章在这一篇可以看一下 Python连接Liunx中mysql数据库-增删改查 对于单表查询的学习可以看这一篇文章 Python对liunx中my…

使用.ibd文件恢复Mysql数据库数据

使用.ibd文件恢复Mysql数据库数据问题发现问题解决第一步&#xff1a;查找mysql数据目录第二步&#xff1a;创建表第三步&#xff1a;解除表空间第四步&#xff1a;复制原数据库.ibd文件第五步&#xff1a;导入表空间ERROR 1030 (HY000): Got error 194 “Tablespace is missin…

使用Navicat生成MySQL测试数据

使用Navicat生成MySQL测试数据 Navicat版本&#xff1a;16.1.3 场景&#xff1a;因为某些原因&#xff0c;本人负责项目的数据库需要从MySQL迁移到PostgreSQL&#xff0c;所以就想测试一下PostgreSQL数据库的分区表性能。测性能的话大概需要两千万的测试数据&#xff0c;从生…