Java基础知识总结(7)

news/2024/10/25 14:28:28/

StringBuffer类

StringBuffer类,线程安全的可变字符序列,初始化容量为16个字符。一个类似于String的字符串缓冲区,但是不能修改。

常用的是append和insert方法,可以重载,以接纳不同类型的参数类型 x.append("y") 等价于 insert(x.length,y)

/*
在实际开发过程中频繁使用字符串拼接会引起资源的浪费
在Java中的字符串是不可变的,每拼接一次就会产生新的字符串
这样会占用大量的方法区内存,造成方法区内存的浪费
String a="hello";a+="world";以上两行代码,导致在方法区字符串常量池中,创建了三个常量“hello”"world""helloworld"*/
public class StringBufferTest{public static void main(String [] args){String s="";for(int i=0;i<100;i++){s+=i;   }/*这样写会造成大量的方法区常量池内存的浪费,造成很大的压力*/}
}
/*开发过程中如果需要进行大量的字符串拼接,建议使用StringBufferjava.lang.StringBufferjava.lang.StringBuilder
*/
public class StringBufferTest{public static void main(String[] args) {// TODO Auto-generated method stub//创建一个初始化容量为16的 byte[] 数组。(字符串缓冲区对象)StringBuffer stringBuffer = new StringBuffer();//拼接字符串统一调用append()方法stringBuffer.append("a");stringBuffer.append("b");stringBuffer.append("a");//append方法在进行追加时,如果byte数组满了,会自动进行扩容System.out.println(stringBuffer.toString());//不写也会默认调用toString方法//aba//如何优化StringBuffer的性能?/*在创建StringBuffer时尽可能给一个初始化容量* 尽量减少底层的扩容次数,预估计一下,给一个大一点的容量* *///String 和 StringBuffer底层都是byte[] 数组。区别是String中的byte数组是被final修饰的,一旦定义不会被改变//StringBuffer 原理是数组容量 地址会指向新的字符串,之前的会被释放StringBuffer sb = new StringBuffer(12);//给一个合适的初始化容量,能够优化程序,扩容次数越少,效率越高sb.append("hello");sb.append("world");System.out.print(sb);}
}
方法描述
append(String str)在字符串末尾追加字符串
delete(int start,int end)删除区间内字符(前闭后开) 后面往前移,在字符串基础上操作
deleteCharAt(int index)删除索引处字符
replaceCharAt(int start,int end,str)替换区间处字符
substring(int start)从起始位置截取到末尾
substring(int start,int end)从索引strart位置到索引end
insert(int offset,str)从索引处插入字符串
indexOf(str)第一次出现的位置
reverse()字符串序列翻转
toString对象转成字符串
insert()

http://www.ppmy.cn/news/1389216.html

相关文章

python基础18_作用域与名称空间

先讲讲函数对象的概念 """ 什么是函数对象,就是把函数看成是一个对象,或者是一个变量 """ print(0) #这是不是调用的print这个函数 a print #是不是把函数赋值给a,也就是a就等于这个函数 a(1) b print(1) # 就是会调用print(1)这个函数,并且…

原生html vue3使用element plus 的树tree上移下移案例源码

上效果 本树做一些限制&#xff0c;只能同级上下移。子级添加只能最大2级&#xff0c;限制判断用allow-drop事件 :allow-drop"allowDrop" if (type inner) return false //只能同级拖拽 if (draggingNode.level > categoryInfo.maxLevel) return false …

LeetCode Python - 63. 不同路径 II

目录 题目描述解法运行结果 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑…

el-date-picker时间禁用问题

// 选择今天以及今天以后的日期 export const disabledDate (time) > {return time.getTime() > Date.now() - 8.64e6; //如果没有后面的-8.64e6就是不可以选择今天的 }设置开始时间小于结束时间&#xff08;不能等于&#xff09; export const disabledDate (date) …

牛客网-SQL大厂面试题-2.平均播放进度大于60%的视频类别

题目&#xff1a;平均播放进度大于60%的视频类别 DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录 flask_service —— app.py —— templates —— —— index.html app.py from flask import Flask, request, jsonify, render_template import random import matplotlib.pyplot as plt from io import BytesIO import base64app F…

二、Kubernetes(k8s)中部署项目wordpress(php博客项目,数据库mysql)

前期准备 1、关机顺序 2、开机顺序 (1)、k8s-ha1、k8s-ha2 (2)、master01、master02、master03 (3)、node01、node02 一、集群服务对外提供访问&#xff0c;需要通过Ingress代理发布域名 mast01上传 ingress-nginx.yaml node01、node02 上传 ingress-nginx.tar 、kube-webh…