String、StringBuilder和StringBuffer
1、string不可变性
java的docs有这样一句话:Strings are constant; their values cannot be changed after they are created。
对Java的String类而言,核心的一个域就是一个char数组,内部就是通过维护一个不可变的char数组,来向外部输出的。比如进行进行字符的提取、子字符串的提取等等。
1 public static void main(String[] args){ 2 String a="hello"; 3 print a; 4 Sting b =a.toUpperCase(); 5 print b; 6 print a; 7 }
上面这段代码的输出结果分别是hello,HELLO,hello。说明了String的不可变性。事实上,在String进行参数传递的时候,都是复制引用传递,而String对象一直在某个物理地址,没有发生任何变化。指向这个Sring对象的任何引用都无法改变它的值。
2、StringBuilder和StringBuffer的使用
String具有不可变性,在我们需要可变String的时候,可能会带来效率问题。比如我现在需要向String对象后面加多个“0”,那么每加一个“0”都会产生一个中间对象。因此具有可变性的StringBuilder就有了用武之地。
StringBuilder str = new StringBuilder();//空 StringBuilder str = new StringBuilder("start")//str初始化为“start”
StringBulider提供了很多有用的方法,比如append和insert。假设存在StringBulider对象 str=“start”,str.append(on),那么str=“starton”,str.insert(4,"on"),那么str=“staront”。一般而言,对于字符串str,str.append(x)和str.insert(str.length(),x)是等价的。
StringBuffer和StringBuIlder的功能基本相同。一般使用StringBuIlder,因为StringBuIlder速度更快。但是,需要注意的是 stringBuilder在多线程中是不安全的。一般在多线程中使用StringBuffer。
3.如何调用函数实现两个string字符串的交换
最近在编程时需要对string字符串进行交换
private switchString(String str1,String str2){ String temp = str1; str1 = str2; str2 = str1; }
main(){
str1="123";
str2="1234";
switchString(str1,str2);
print str1,str2;
}
如果按上述方式写输出为"123"和“1234”,二者没发生交换。如果是在C++中,我们可以采用引用传递或者地址传递的方法进行交换。但是在java中函数调用时,传递的是形参,改变的也是形参,实参不发生变化(java的基本数据类型按值传递,可以说值传递后就是没有关系的两个变量了)。
如果想要进行交换或者说只是得到交换后的两个值,可以直接在main()进行交换,或者在switchString函数返回交换后的str1和str2(java函数只能return一个值,可以把交换后的两个str放在一个arraylist中return)。
String、StringBuilder和StringBuffer的更多相关文章
- String StringBuilder以及StringBuffer
例一:[看了威哥视频,下面更好理解] package sunjava; public class String_test { public static void main(String[] args ...
- String, StringBuilder 与StringBuffer的区别与联系
1.区别 (1)String构建的对象不能改变,每次对String进行操作时,如两个String相加,需要新建一个String对象,然后容纳最终的结果. 而StringBuilder与StringBu ...
- Java中String, StringBuilder和StringBuffer
Java中常用来处理字符串的类有三个: String, StringBuffer和StringBuilder. 区别 三者都继承自CharSequence接口, 首先说明三者间主要区别 String字 ...
- String,StringBuilder和StringBuffer的特点和使用场景
这三个类是平时开发中经常遇到的,主要差别是运行速度和线程安全,使用起来String最方便了,另外两个稍微复杂一些. 从运行速度角度看,StringBuilder>StringBuffer> ...
- java String,StringBuilder和StringBuffer
String:1.java语言中的字符串值属于String类,虽然有其它方法表示字符串(如字符数组),但java一般使用Sting类作为字符串的标准格式,java编译器把字符串值作为String对象. ...
- String,StringBuilder与StringBuffer的区别
相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...
- Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较
字符串,就是一系列字符的集合. Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的.字符 ...
- String,StringBuilder和StringBuffer
String 字符串常量,由String创建的字符内容,长度是不可改变,存放字符的数组被声明为final. 实际上String类操作字符串是通过建立一个StringBuffer,然后调用append( ...
- java 常用类库:String ; StringBuilder和StringBuffer类
1. String 1.String对象是不可变的 String类的value属性是用来存放字符串里面的值的.这个属性是被final修饰的.final修饰的变量不能够被第二次赋值,所以字符串是不可变的 ...
- String,StringBuilder 和StringBuffer区别
1. String 和字符串缓冲区的区别是: String 是一个不可变的字符序列 , 而字符串缓冲区是可变的 2. StringBuffer 是一个线程安全的可变字符序列 ; 线程安全对应的效率低 ...
随机推荐
- zookeeper分布式搭建
1下载并解压zookeeper安装包 2进入zookeeper配置文件目录,找到zoo_sample.cfg,执行cp zoo_sample.cfg zoo.cfg 3打开zoo.cfg文件,修改d ...
- 企业级memcached部署(session共享)
服务端部署 第一个里程碑:安装依赖关系 Memcache用到了libevent这个库用于Socket的处理. [root@nfs01 ~]# yum install libevent libevent ...
- 百度Echarts导入
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Flexbox 布局教程
Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. 使用 fle ...
- 30.Linux-RTC驱动分析及使用
linux中的rtc驱动位于drivers/rtc下,里面包含了许多开发平台的RTC驱动,我们这里是以S3C24xx为主,所以它的RTC驱动为rtc-s3c.c 1.进入./drivers/rtc/r ...
- 二:Redis快速入门及应用
Redis的使用难吗?不难,Redis用好容易吗?不容易.Redis的使用虽然不难,但与业务结合的应用场景特别多.特别紧,用好并不容易.我们希望通过一篇文章及Demo,即可轻松.快速入门并学会应用. ...
- Jdbc访问数据库篇
一万年太久,只争朝夕 What JDBC 上部 JDBC(Java DataBase Connectivity)Java 数据库连接,主要提供编写 Java 数据库应用程序的 API 支持 java. ...
- Mysql Explain 解读(基于MySQL 5.6.36)
Mysql Explain 解读(基于MySQL 5.6.36) 1.语法 explain < table_name > #例子 explain select * from t3 wher ...
- C语言实现快速排序法(分治法)
title: 快速排序法(quick sort) tags: 分治法(divide and conquer method) grammar_cjkRuby: true --- 算法原理 分治法的基本思 ...
- python列表的一些常用方法以及函数
学习到了一些关于python列表的新知识,自己整理了一下,方便大家参考: #!/usr/bin/env python # _*_ coding:utf-8 _*_ # File_type:列表的常用操 ...