Java String、StringBuffer、StringBuilder类详解

java中StringBuilder,StringBuffer,Vector的区别 立即下载

Java String、StringBuffer、StringBuilder类介绍

Immutable 类

String类是典型的 Immutable 类,本身是final class,同时String的value属性也被声明成final类型。不可变保证了String的线程安全。
在这里插入图片描述

String 的初始化

String 类的初始化主要有两种方式: 直接赋值和对象初始化
直接赋值:

String s = "12345";

直接赋值会将String内容写入方法区的内存常量池。而JVM会维护一份String字面量列表,保证相同值的String都会指向一片空间。
对象初始化

String s = new String("12345");

String对象初始化后会在堆区创建一个对象,有可能会被垃圾回收,同时两次new相同值的String不会指向同一地址。

String t1 = new String("1111");
String t2 = new String("1111");
System.out.println(t1 == t2); //false
System.out.println(t1.equals(t2));//true

String的拼接-StringBuffer、StringBuilder

String的不可变导致了对String的修改必须生成新的String对象。
String三种拼接方式 : + 、StringBuilder、StringBuffer
先说结论: StringBuilder > StringBuffer > 使用 加号 拼接
先说 StringBuilder 为什么比 + 快
String 每次拼接都要重新开辟一个大小等于新字符串大小的空间,而StringBuilder会在初始化对象的时候开辟字符串大小+16的空间,当额外空间用光的时候新申请空间的时候也会预留出一段空间,这样一定程度避免了对象拼接时需要不断新申请空间的问题。
在说 StringBuilder 为什么比StringBuffer快
StringBuilder和StringBuffer 都继承自AbstractStringBuilder,区别就是StringBuffer为了保证线程安全,在所有方法上都添加了synchronized。相比StringBuilder增加加锁解锁时间。

在非要求线程安全的情况下推荐使用StringBuilder。

String的拼接后续-机智的JVM

JVM在使用+拼接字符串的时候会自动调用SpringBuilder

java之StringBuffer常见使用方法解析 主要介绍了java之StringBuffer常见使用方法解析,具有一定参考价值,需要的朋友可以了解下。 立即下载

相关推荐

VS2022下C# WPF项目一键打包成独立exe的完整指南

本文提供了一份在Visual Studio 2022中将C# WPF项目一键打包成独立可执行exe文件的完整指南。通过配置项目属性、启用单文件发布和自包含模式,开发者无需依赖第三方工具,即可生成可在未安装.NET运行时的电脑上直接运行的独立程序,极大简化了桌面应用的分发流程。

weixin_28831399的博客 670

String类、StringBuffer类、StringBuilder类详解

一、String类:字符串类,继承Object对象实现了序列化、比较器和sequence(顺序)接口。 1、字符串底层的数据结构为字符数组。字符串文本即为字符串类的一个对象,它是一个常量。String abc="abc"; //等价如下代码 char data[] = {'a','b','c'}; String abc2 = new String(data);2、String类中提供了几乎所有对字

隔壁老王的博客 990

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 331

详述StringBuffer类

什么是StringBuffer类? StringBuffer类和String类相似,都可以存放字符串吗,但不同的是,StringBuffer字符串代表的是可变的字符序列,即可以对对象多次进行修改,并且不产生新的未使用对象;而String字符串是不可更改的常量。 附:创建StringBuffer类对象的语法格式 StringBuffer 变量名 = new StringBuffer(默认参数...

飞翔的企鹅的博客 521

新版股票配资系统源码/股票分析系统技术方案

新版股票配资系统;全套源码支持新股申购功能,包含C#+MySQL开发的后台系统及Spring框架,采用C/S架构。注意:本源码仅限技术学习、功能测试及模拟交易使用,严禁用于非法用途,违者责任自负。

q318136906的博客 1641

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 513

操作字符串类:String、StringBuffer、StringBuilder,它们之间有什么区别?

java 中操作字符串都有哪些类?它们之间有什么区别? 有三类:String、StringBuffer、StringBuilder String:声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象。 StringBuffer:声明的对象可变,即可以在原有对象的基础上进行操作,所以如果需要经常对字符串内容进行修改的情况下最好使用StringBuffer。 StringBuilder:和StringBuffer相似,但存在的最大区别是StringBuffer是线程安

我有一根魔法棒的博客 246

数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案

数字IC后端实战项目案例之Innovus verify_drc DRC Violation脚本自动化修复方案

weixin_37584728的博客 4042

Java中String、StringBuilder、StringBuffer类详解

String、StringBuilder、StringBuffer类

ls1071866513的博客 354

通用、可复用的 AI Skill 开发基本流程

-----name:唯一标识符(建议用领域-功能格式):自然语言描述触发条件(AI 依赖此判断是否激活)tags(可选):便于分类和搜索version:支持后续迭代步骤输出物1. 定范围触发场景描述2. 写元数据name3. 填内容结构化 Markdown 文件4. 做验证可运行 + 符合规范5. 去集成放入对应 IDE 目录6. 持续维护跟进框架更新通过这套流程,你不仅可以开发(Hooks 最佳实践)(原生 WebGL 优化)(Pandas/Numpy 高效写法)

lpfasd123的博客 721

二维矩形件排样算法之最低水平线算法实现

最低水平线算法的简单实现(Python) 1、二维矩形排样算法众多,最早的有BL算法、下台阶算法、最低水平线算法等,其中最低水平线算法及其优化算法应用较多,是与智能优化算法(遗传算法、模拟退火算法等)结合的最多的算法,本文利用python对最低水平线算法做了实现...

峰爸的博客 1万+

java中String类StringBuffer类和StringBuilder类详解

String 类不能被继承,因为被final修饰String的底层是一个字符数组,因为它被final修饰一旦确定了值不可被更改。概述:​ java.lang.String类代表字符串。Java程序中所有的字符串文字(例如:“abc”)都可以看作是实现此类的实例。​ 类String中包括用于检查字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大小写的所有字符串的副本。字符串不变:字符串的值在创建后不能被改变。

m0_74956866的博客 210

python+playwright 学习-10.pytest-playwright插件编写测试用例

pytest-playwright插件完美的继承了pytest 用例框架和playwright基础使用的封装,基本能满足工作中的常规需求了,不需要我们再做额外的插件开发。

qq_27371025的博客 2507

Java中String类、StringBuilder、StringBuffer详解

String类 首先,看看String类的源代码: 从中我们能得到一些信息: ·String类被final修饰,不能被继承; ·String实现了序列化接口以及比较的Comparable接口 ·String类的底层是一个char型数组,且被final修饰,说明其数组的指向不能被修改,又因其是private的权限,所以可以看作String的值不能被修改。 接下来挑选其中的一些方法研究: 我们可以看出,其最后的结果要么不变,要么new一个新的字符串,即String类的不可变性。String对象一旦创建就是

m0_46066994的博客 226

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java之String,StringBuffer和StringBuilder类详解

前言 本文针对于String类型相似的StringBuffer和 StringBuilder类的区别及StringBuffer和StringBuilder 类扩容,源码分析其中区别,以及StringBuilder为什么比String快这个问题? String、StringBuffer、StringBuilder三者异同 String stringBuffer StringBuilder 不可变 可变 可变 线程安全 线程不安全 ...

weixin_51375190的博客 391

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java的String、StringBuilder 和 StringBuffer类详解及区别

java基础(jdk1.8) ** String相关 ** 字符串在Java基础中是比较重要的,这里我们对String及StringBuffer和StringBuilder进行研究       字符串的操作我们在String、StringBuffer、StringBuilder这里同时对这三个类进行分析 String 源码内容: &nb...

qq_43360780的博客 277

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java,String类,StringBuffer类,StringBuilder类的区别以及方法详解

1.区别: 1.首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因:   String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。  2. 再来说线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的 3. 总结一下

qq_43743819的博客 259

java中String、StringBuffer和StringBuilder类的区别详解

String 是 Java 中基础且重要的类,被声明为 final class,是不可变字符串。因为它的不可变性,所以拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。StringBuffer 就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类。它提供了 append 和 add 方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列。

weixin_60257072的博客 264

JAVA中的String类和StringBuilder类以及StringBuffer类方法的使用与详解

JAVA中的String类和StringBuilder类以及StringBuffer类方法的使用与详解,String类,StringBuffer类,StringBuilder类总比较

2302_79993788的博客 1501

java中String类、StringBuilder类和StringBuffer类详解

本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子      出处:http://www.cnblogs.com/dolphin0520/      本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利...

weixin_30384031的博客 100

Java中常用的类(一):Object 类、String 类、StringBuffer类、StringBuilder 类

目录 一、Object 类 1、equals 方法 2、toString 方法 二、String 类 1、字符串定义方式: 2、String 类常用构造方法 3、String 类的字符串的长度 4、String 类其他方法 三、StringBuffer 类 1、StringBuffer 常用方法使用 四、StringBuilder 类 一、Object 类 Object类...

ONESTARの博客 4276

java-String,StringBuffer,StringBuilder类

String类的方法使用 -从JDK中得出: -String类代表字符串,字符串字面值"abc"也可以看作一个字符串对象 String str = "abc"; //相当于Person p = new Person(); "abc"相当于new Person(); ...

qq_41481924的博客 250

java中的String类/StringBuffer类/StringBuilder类

创建字符串时,先去字符串常量池中去查找有没有相同值的对象,如果没有,就创建一个字符串对象,并返回地址,如果字符串常量池中已经存储,不用创建新的,直接返回已存在对象的地址(已创建的字符串)因为String声明的字符串对象对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时,占用空间。拼接指定的字符串内容到原字符串的末尾,并返回一个新的字符串对象。从指定的位置开始查找,返回的是指定字符串首次出现的位置。从指定位置从后向前找,返回的是指定字符串首次出现的位置。返回的是指定字符串首次出现的位置。

2301_77864799的博客 1767

一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

qq_41490913的博客 184

包装类、String、StringBuilder、StringBuffer

包装类、String、StringBuilder、StringBuffer

qq_51600158的博客 977

String类,StringBuffer类以及区别

在Java中,因为String类是final类型的,所以使用String定义的字符串是一个常量,也就是说使用String定义的字符串一旦创建,其内容和长度是不可改变的.为了便于对字符串进行修改,Java提供了StringBuffer类(也成字符串缓冲区)来操作字符串.StringBuffer类和String类最大的区别在于他的内容和长度都是可以改变的.StringBuffer类就像一个字符容器,当在其中添加或删除字符时,操作的都是这个字符容器,因此并不会产生新的StringBuffer对象.

m0_74268079的博客 2284
下一篇: 一文弄懂:反射、动态代理
_Alan_Lin_
博客等级 码龄11年 4粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值