Java基础13-字符串类

<--
 注意:
  String在方法操作后不会改变自身,不同于StringBuilder!!!
-->

 

一.字符串的存储
 * 1.字符串缓冲区
  字符串是常量, 不能被修改, 所以可以共享, 多个引用指向相同的字符串常量时, 其实引用的是同一个对象, 这个对象在缓冲区中
  示例1:
   String s1 = "abc";
   String s2 = "abc";
   System.out.println(s1 == s2);
   结果为: true
   原理是: 第一个字符串"abc"创建后,存储在了字符串常量池中,所以第二个可以直接使用该字符串
   这段代码总共创建了几个字符串对象: 1个
   
  示例2:
   String s1 = "abc";
   String s2 = new String("abc");
   System.out.println(s1 == s2);
   结果为: false
   原理是: 第一个字符串"abc"创建后,存储在了字符串常量池中,而第二个先创建对象,然后再指向了已存在的"abc".
   这段代码总共创建了几个字符串对象: 2个
   
 * 2.字符串串联
  示例1:
   String s1 = "abc";
   String s2 = "a";
   String s3 = "bc";
   String s4 = s2 + s3;
   System.out.println(s1 == s4);
   结果为: false
   原理是: 字符串串联使用的是字符串缓冲区的append()方法,使用new重新创建了字符串,所以不相等
   
  示例2:
   String s1 = "abc";
   String s2 = "a" + "bc";
   结果为: true
   原理是: 字符串常量相加,编译时就会直接相加,等价于String s2="abc",而"abc"已经在字符串常量池里存在了
   
 3.字符串类构造函数
  使用平台默认码表, 将字节数组转为字符串: new String(byte[] b)
  使用指定码表, 将字节数组转为字符串: new String(byte[] b, String s)
  使用指定码表, 将字节数组中的一部分数据转为字符串: new String(byte[] b,int offset,int len,String s)
  使用字符数组创建字符串: new String(char[] c)
  
 *** 4.字符串常用方法
  查找指定位置上的字符: charAt(int index)
  查找指定字符第一次出现的位置: indexOf(char c)
  查找指定字符最后一次出现的位置: lastIndexOf(char c)
  替换字符串: replace(String old, String new)
  截取字符串的子串: substring(int beginindex)/substring(int beginindex, int endindex)
  分割字符串: split(String s)
  判断是否包含一个字符串: contains(String s)
  按字典顺序比较两个字符串: compareTo(String s)
  获取长度: length()
  去掉前后空白: trim()
  
 5.StringBuffer和StringBuilder的区别
  StringBuffer: 线程安全
  StringBuilder: 线程不安全
  
 6.写出下面代码的运行结果
  public class Foo {
   public static void main(String[] args) {
    String strValue = "ABCDEFG";
    strValue.substring(3);
    strValue.concat("123");
    System.out.println(strValue);   
    String value = new String ("ABCDEFG");
    System.out.println(strValue == value);
   }
  }
    
  结果:
   ABCDEFG
   false
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值