零基础小白学Java之String

  • Author 杨叔
  • java.lang.string;是字符串类型
    1.字符串一旦创建不可改变。“abc”字符串一旦创建,不可再改变成“abcd”
    2.为了提升字符串的访问效率,在程序中使用了“缓存”技术。所有在Java中所有使用双引号括起来的字符串都会在“字符串常量池”中创建一份。字符串常量池在方法区中被存储
    3.在程序执行过程中,如果程序用到某个字符串,如“abc”,那么程序会在字符串常量池中去搜索该字符串,如果没有找到,则在字符串常量池中新建一个“abc”字符串,如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高字符串的访问效率)
public class StringTest01 {
 public static void main(String[] args) {
  //创建一个“abc”字符串对象,该对象的内存地址让s1保存
  //s1是一个引用,s1指向abc对象
   String s1="abc";
   //可以让s1重新指向吗?s1是局部变量,s1前面没有final,所以可以重新指向。
  //但是“def”字符串本身不可变
  s1="def";

String s2="hello";//在字符串常量池中新建一个“hello”字符串,该对象不可变
String s3="hello";//从字符串常量池中直接拿来用
//下面语句之所以输出true,是因为s2和s3内存地址相同
System.out.println(s2==s3);//true
  //所以比较两个字符串是否相等不能用“==”
  //从以下程序可以看出,当使用new关键字创建对象时,即使字符串内容相等,也会输出false,因为“==”是用来比较两个引用的内存地址是否相等,而不是字符串内容是否相等。
  String s4=new String("abc");
  String s5=new String("abc");
  System.out.println(s4==s5);//false
  //所有比较两个字符串是否一致,必须使用string类提供的equals方法
  System.out.println(s4.equals(s5));//true
  //以下程序执行结束后会在字符串常量池中创建三个字符串:“aaa”“bbb”“aaabbb”
  String s6="aaa";
  String s7="bbb";
  String s8=s6+s7;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值