黑马程序员技术交流社区

标题: 关于String [打印本页]

作者: 戎石锁    时间: 2012-8-18 19:19
标题: 关于String
class String2Demo
{
        public static void main(String[] args)
        {
                char[] arr={'a','g','j','r','u','i','w'};
                String str=new String(arr);//接收字符数组的
                System.out.println(arr);//System.out.println(str)这两件输出一样,为什么?难道只是输出一样,但是把字符数组转换成了字符串?

                int[] a = new int[3];
                System.out.println(a);
                String s = "dfgjfdsgdsfg";
               
                //System.out.println(arr.indexOf('j'));//System.out.println(str.indexOf('j'));这两句又有哦什么区别呢,打印结果也是相同

把字符数组转换成字符串,打印出结果一样,是不是他们在内存中表现形式不一样呢
               
作者: 黑马振鹏    时间: 2012-8-18 19:46
  System.out.println(arr.indexOf('j'));
这句什么意思,编译能通过?
作者: 童兴龙    时间: 2012-8-18 20:04
本帖最后由 童兴龙 于 2012-8-20 08:48 编辑

arr就是代表的数组取名arr了,char[] arr这个定义是char类型数组,数组名字叫arr.我知道你肯定懂。
String str=new String(arr);就是通过char类型数组arr构造字符串对象,又赋值给了String类型的str变量。
arr和str这样你应该知道都是打印的同一个对象。

//System.out.println(arr.indexOf('j'));//System.out.println(str.indexOf('j'));没区别吧,真有区别就是str 是接收arr的字符串对象,arr是字符串数组对象。
IndexOf() 查找字串中指定字符或字串首次出现的位置,返首索引值。应该返回值是2。
作者: 杨彪    时间: 2012-8-18 21:36
你看print方法的源码就知道了,
如果打印的是char数组,print方法是直接调用write方法的。相当于直接拼接打印。
而如果是打印int数组,他是会调用String.valueOf(obj)后再去调用write方法的。所以打印的是地址。


String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的

indexOf返回源字符串内第一次出现指定子字符串的首个字符在源字符串中的索引值





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