Java字符串的存储
来源:互联网 发布:c语言编写 玫瑰花 编辑:程序博客网 时间:2024/05/24 02:38
一.字符串的存储
* 1.字符串缓冲区
字符串是常量, 不能被修改, 所以可以共享, 多个引用指向相同的字符串常量时, 其实引用的是同一个对象, 这个对象在缓冲区中
示例1:
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
结果为: true
原理是: 使用双引号形式的字符串常量时, 会先在缓冲区内查找, 如果没有就创建, 如果有就直接引用.
这段代码总共创建了几个字符串对象: 第一句创建了一个, 第二句没有创建.
示例2:
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1 == s2);
结果为: false
原理是: 双引号常量是在缓冲区中, 构造函数创建的字符串不在缓冲区中.
这段代码总共创建了几个字符串对象: 第一句创建一个对象, 第二句创建一个对象.
* 2.字符串串联
示例1:
String s1 = "abc";
String s2 = "a";
String s3 = "bc";
String s4 = s2 + s3;
System.out.println(s1 == s4);
结果为: false
原理是: 字符串相加是通过StringBuffer类的append()和toString()实现的, 而toString()返回的字符串是通过构造函数创建的.
示例2:
String s1 = "abc";
String s2 = "a" + "bc";
结果为: true
原理是: 两个字符串常量相加, 在编译的时候之间改为一个字符串常量.
3.字符串类构造函数
使用平台默认码表, 将字节数组转为字符串:String(byte[] bytes)
使用指定码表, 将字节数组转为字符串:String(byte[] bytes, String charsetName)
使用指定码表, 将字节数组中的一部分数据转为字符串:String(byte[] bytes, int offset, int length, String charsetName)
使用字符数组创建字符串:String(char[] value)
*** 4.字符串常用方法
查找指定位置上的字符: char charAt(int index)
查找指定字符第一次出现的位置:int indexOf(String str)
查找指定字符最后一次出现的位置: int lastIndexOf(String str)
替换字符串:String replace(CharSequence target, CharSequence replacement)
截取字符串的子串:String substring(int beginIndex, int endIndex)
分割字符串:String[] split(String regex)
判断是否包含一个字符串:boolean contains(CharSequence s)
按字典顺序比较两个字符串:int compareTo(String anotherString)
获取长度:int length()
去掉前后空白:String trim()
5.StringBuffer和StringBuilder的区别
StringBuffer是从JDK1.0就有的一个类, 可以对字符串进行追加, 插入, 反转等操作, 线程安全同步的, 但是效率较低. 我们在单线程访问的时候不需要同步.
在JDK5之后, 出现了StringBuilder类, 它的功能和StringBuffer相同, 但是没有进行同步, 速度快, 淘汰了StringBuffer.
6.写出下面代码的运行结果
public class Foo {
public static void main(String[] args) {
String strValue = "ABCDEFG";
strValue.substring(3);// String类所有方法都不会改变原字符串的值
strValue.concat("123");
System.out.println(strValue);
String value = new String ("ABCDEFG");// ABCDEFG
System.out.println(strValue == value);// false
}
}
- Java字符串的存储
- java的字符串存储与操作类
- Java 判断字符串的存储长度
- java字符串对象的存储机制
- Java-字符串创建与存储的机制
- Java字符串创建与存储的机制
- Java字符串压缩存储
- Java字符串压缩存储
- java 字符串 存储原理
- Java中字符串(String)的存储和赋值原理
- Java字符串(String)的存储和赋值原理
- Java中字符串(String)的存储和赋值原理
- java基本类型及String字符串的存储与比较
- Java基础之字符串创建于存储的机制
- Java中字符串(String)的存储和赋值原理
- JAVA中关于字符串在内存的存储
- 字符串的存储方式
- 字符串的存储
- openCV视频处理与图像转换
- kinect v2 标定
- 核心动画(四)- 转场动画、组动画
- PHP面向对象的封装、抽象和接口
- JS 面向对象,以及静态方法与实例方法的调用区别
- Java字符串的存储
- 2017 四川省赛 E.Longest Increasing Subsequence【思维+贪心】
- java基础(面试)
- 埃拉托斯特尼筛法 VS 欧拉筛法 (素数筛选) Java
- -webkit-tap-highlight-color
- 判断两个不带环链表是否相交?若相交,求入口点。
- codeforces 676-C. Vasya and String(尺取)
- Hihocoder 1426 E. What a Ridiculous Election (BFS)
- Android笔记(10)MD5加密