A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戎石锁 中级黑马   /  2012-8-18 19:19  /  1766 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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'));这两句又有哦什么区别呢,打印结果也是相同

把字符数组转换成字符串,打印出结果一样,是不是他们在内存中表现形式不一样呢
               

3 个回复

倒序浏览
  System.out.println(arr.indexOf('j'));
这句什么意思,编译能通过?
回复 使用道具 举报
本帖最后由 童兴龙 于 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。
回复 使用道具 举报
你看print方法的源码就知道了,
如果打印的是char数组,print方法是直接调用write方法的。相当于直接拼接打印。
而如果是打印int数组,他是会调用String.valueOf(obj)后再去调用write方法的。所以打印的是地址。


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

indexOf返回源字符串内第一次出现指定子字符串的首个字符在源字符串中的索引值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马