Java学习笔记之字符串 和 StringBuilder类
来源:互联网 发布:开淘宝店装修视频 编辑:程序博客网 时间:2024/05/06 16:25
在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。
字符串的不变形:
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
运行结果:
在字符串内部
1、 通过 String s1="爱慕课"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,在内存中的存放引用关系如下图所示:
然后通过 s1="欢迎来到:"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象,如下图所示:
2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。
3、 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法
public class HelloWorld {
public static void main(String[] args) {
String s1 = "imooc";
String s2 = "imooc";
//定义字符串s3,保存“I love”和s1拼接后的内容
String s3 = "I love" + s1;
// 比较字符串s1和s2
// imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象
System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));
//比较字符串s1和s3
System.out.println("s1和s3内存地址相同吗?" + (s1 == s3) );
String s4 = "I love " + s1;
//比较字符串s4和s3
// s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象
System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));
}
}
这就是 StringBuilder 和 String 最大的区别。
创建了 StringBuilder 对象,用来存储字符串,
并对其做了追加和插入操作。这些操作修改了 str 对象的值,而没有创建新的对象
String程序运行时会额外创建一个对象。当频繁操作字符串时,就会额外产生很多临时变量。
使用 StringBuilder 或 StringBuffer 就可以避免这个问题。
至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,
而 StringBuilder 则没有实现线程安全功能,所以性能略高。
因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
Java 中的 StringBuilder 类的常用方法
StringBuilder 类提供了很多方法来操作字符串:
package com.imooc7;
public class ClassStringBuilder {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建StingBuilder对对象,存储字符串
StringBuilder str = new StringBuilder("hello");
//在字符串后面追加字符串
str.append("imooc");
//在字符串后面追加整数
str.append(520);
System.out.println("字符串长度:" + str.length());
System.out.println("插入前:" + str);
//在指定位置插入内容
str.insert(11, "!");
//转化为String对象
String str2 = str.toString();
System.out.println("插入后:" + str2);
}
}
0 0
- Java学习笔记之字符串 和 StringBuilder类
- Java学习之StringBuffer 和 StringBuilder 类
- Java学习笔记之String、StringBuffer和StringBuilder
- java学习笔记之String,StringBuilder和StringBuffer
- JAVA学习笔记——StringBuffer和StringBuilder类
- 【Java学习笔记】String、StringBuffer和StringBuilder
- JAVA基础笔记之StringBuilder和StringBuffer
- Java学习笔记(二十六):字符串连接用+和StringBuilder的append的区别
- Java学习之StringBuffer和StringBuilder
- 黑马程序员之C#学习笔记:StringBuilder字符串总结
- Java学习笔记_20_StringBuffer、StringBuilder类
- Java学习笔记(8)-StringBuilder类一
- Java学习笔记(9)-StringBuilder类二
- 毕向东Java视频学习笔记【Day15 字符串+StringBuffer+StringBuilder类基础】
- Java字符串之String StringBuilder
- Java字符串处理之StringBuilder
- 四:Java之字符串操作String、StringBuffer和StringBuilder
- Java 基础字符串之StringBuilder和StringBuffer区别
- DevExpress 皮肤使用方法
- fdisk 与parted
- 20160527 数据分析与SAS5 对数据集中的数据进行排序
- MySQL 5.7.15 (zip版)安装
- 【EasyUI-datagrid数据展示+MongoDB数据操作】
- Java学习笔记之字符串 和 StringBuilder类
- easyui的treegrid数据转换代码
- 搭建Android 开发环境
- PHP实用函数整理
- jquery修改页面皮肤颜色
- 机器学习笔记(1)---数学分析与概率论
- JS日历(一)
- ndk-stack使用方法
- cvc-complex-type.2.3:Element 'filter-mapping' cannot have character [children],because the type's co