黑马程序员技术交流社区

标题: String类 [打印本页]

作者: lgc黑马    时间: 2014-12-18 18:19
标题: String类
String类
是final类型的,不可以有子类。字符串最大的特点就是:一旦被初始化,就不可以改变
                String str=“abc”        str是一个对象                “abc”是一个对象
                String str1=“abc”;        String str2=“abc”;               
str1==str2的值为false,因为这两者比较的是两个对象,他们的HashCode值不相同
str1.equals(str2)的值为true,因为String类复写了Object类中的equals方法,用来判断两个字符处是否相同
StringBuffere:字符串缓冲区,是一个容器
                特点:1,长度是可变化的        2,可以同时操作多个数据类型        3,通过toString方法变为字符串
                JDK1.5版本以后,出现了StringBuilder:
                        StringBuffer是线程同步的(安全)StringBuilder是线程不同步的(不安全)
                replace()替换操作                reverse()翻转操作                setChar(index,char)替换某一个值
数据类型:8种
        基本数据类型                        引用数据类型
                byte                                        Byte                字节型
                short                                        short                短整型
                int                                         Integer        整形
                long                                        Long                长整形
                boolean                                Boolean        布尔型
                float                                        Float                浮点型
                double                                Double        双精度
                char                                        Character        字符型
作者: 董晗    时间: 2014-12-18 18:21
这是笔记吗
作者: 侯鹏成    时间: 2014-12-18 18:32
这个怎么看??
  1. class ZiFuChuan
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str1="abc";
  6.                 String str2="abc";
  7.                 System.out.println(str1==str2);
  8.                 System.out.println(str1.equals(str2));
  9.                
  10.         }
  11. }
复制代码


2014-12-18_183135.jpg (16.47 KB, 下载次数: 13)

2014-12-18_183135.jpg

作者: duluhua    时间: 2014-12-18 19:31
应该可以这么理解吧:
1.“abc"本身是一个字符串,也就是一个对象。String str1="abc"   String str2="abc",二者都是指向同一个对象。
str1==str2   比较的是地址值, 因为二者都是指向同一个地址,所以肯定相同。
2.  str1.equals(str2) 比较的是值,因为都是指向"abc"所以也值也相同。
3.如果你这样:
String str1 = new String("abc");  String str2= new String("abc")
因为都是new的对象,所以肯定不同的两个对象,所以再str1==str2的时候就是false了

这样应该能解释的通吧
作者: wtjohn    时间: 2014-12-18 19:43
侯鹏成 发表于 2014-12-18 18:32
这个怎么看??

equals是比较内容,自然是true。
==是比较内存地址。 str1的时候已经创建了"abc"对象了,所以创建str2的时候会直接引用str1的对象地址。所以还是一样 true
作者: 侯鹏成    时间: 2014-12-18 20:16
wtjohn 发表于 2014-12-18 19:43
equals是比较内容,自然是true。
==是比较内存地址。 str1的时候已经创建了"abc"对象了,所以创建str2的 ...

这样啊,那怎么比较str1和str2地址是否相等呢
作者: yninggis    时间: 2014-12-18 20:32
写的挺详细~
作者: I空空    时间: 2014-12-19 22:58
不错,学习了。
作者: 魏文杰    时间: 2014-12-19 23:35
这是毕老师视频的笔记吧。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2