java字符串详解_Java之字符串详解

字符串详解

package com.yuanzijian02;

public class ObjectTest {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Object object = new Object();

Object object2 = new Object();

System.out.println(object == object2);

System.out.println("---------------------");

String str = new String("aaa");

String str2 = new String("aaa");

System.out.println(str == str2);

System.out.println("---------------------");

String str3 = "bbb";

String str4 = "bbb";

System.out.println(str3 == str4);

System.out.println("---------------------");

String str5 = "ccc";

String str6 = new String("ccc");

System.out.println(str5 == str6);

}

}

执行结果

false

---------------------

false

---------------------

true

---------------------

false

2.equals()方法,该方法定义在Object类当中,因此在Java中的每个类都具有该方法,对于Object类的equals()来说,它是判断调用eqals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。对于Object类的equals()方法来说,它等价于==

package com.yuanzijian03;

public class StringTest {

public static void main(String[] args) {

// TODO 自动生成的方法存根

String str = new String("aaa");

String str2 = new String("aaa");

System.out.println(str.equals(str2));

String str3 = "aaa";

String str4 = "aaa";

System.out.println(str3.equals(str4));

Object object = new Object();

Object object2 = new Object();

System.out.println(object.equals(object2));

}

}

执行结果

true

true

false

3.对于String类的equals方法来说,它是判断当前字符串与传进来的字符串的内容是否一致

4.对于String对象相等判断来说,请使用equals()方法,而不要使用==

5.重写equals方法,判断两个字符串是否相等

package com.yuanzijian04;

public class EqualsTest {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Student s1 = new Student("zhangsan");

Student s2 = new Student("zhangsan");

System.out.println(s1 == s2);

System.out.println(s1.equals(s2));

}

}

class Student{

String name;

public Student(String name){

this.name = name;

}

public boolean equals(Object anObject){

if(this == anObject){

return true;

}

if (anObject instanceof Student){

Student student = (Student)anObject;

if(student.name.equals(this.name)){

return true;

}

}

return false;

}

}

执行结果

false

true

6.String是常量,其对象一旦创建完毕之后,就无法改变,当我们使用加号来拼接字符串之后会生成新的String对象,而不是向原有的String对象追加内容

package com.yuanzijian05;

public class StringTest2 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

String s1 = "hello";

String s2 = "world";

String s3 = s1 + s2;

System.out.println(s3);

}

}

执行结果

helloworld

7.String Pool(字符串池),首先检查字符串池有没有当前对象,如果有的话,就不会再向字符串池中添加创建对象,而是直接将字符串对象返回

8.String s = “aaa”;(看1中的程序)

1.查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool中创建一个对象,然后将String Pool中的这个“aaa”对象的地址返回来付给引用变量s,这样s会指向String Pool中的“aaa”

2.如果存在,则不创建任何对象,直接将String Pool中的这个“aaa”对象地址返回回来,直接赋值

9.String s = new String(“aaa”);(看1中的程序)

首先在 string Pool中查找有没有“aaa”这个字符串对象,如果有,则不再String Pool中再去创建"aaa"这个对象了,直接在堆中创建一个“aaa”字符串对象,然后将堆中这个“aaa”对象地址返回来,付给s引用,导致s指向了堆中创建的这个“aaa”字符串对象

2.如果没有,则首先在String Pool中创建一个“aaa”对象,然后在堆中heap创建一个“aaa”对象,然后将堆中这个“aaa”对象的地址返回来,付给s引用,导致s指向了堆中所创建的这个“aaa”对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值