ITPUB??ì3
ITPUB论坛 » Java入门与认证版 » JAVA试题--会的朋友帮我解下

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: [范例] JAVA试题--会的朋友帮我解下
在线/呼叫 hong86jay
老人


精华贴数 0
个人空间 0
技术积分 447 (4338)
社区积分 568 (1306)
注册日期 2007-1-14
论坛徽章:13
生肖徽章:虎     
      

发表于 2008-6-23 18:36 
以前读书的时候还没写过这玩意~~
现在可以学习一下~~呵呵


__________________
那个搞IT的,出来接客~~
只看该作者    顶部
离线 bhan2008
水龙吟



来自 广东 深圳
精华贴数 0
个人空间 0
技术积分 212 (9045)
社区积分 3 (27943)
注册日期 2005-10-14
论坛徽章:4
生肖徽章2007版:虎生肖徽章2007版:兔生肖徽章2007版:鼠开发板块每日发贴之星  
      

发表于 2008-6-26 13:24 
java.util.Arrays.toString

面试时要是自己写循环的,就着了出题人的道了

[ 本帖最后由 bhan2008 于 2008-6-26 13:38 编辑 ]


只看该作者    顶部
在线/呼叫 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-26 14:47 


QUOTE:
原帖由 bhan2008 于 2008-6-26 01:24 PM 发表
java.util.Arrays.toString

面试时要是自己写循环的,就着了出题人的道了

    谢谢


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 马甲走江湖
江湖任我行


精华贴数 4
个人空间 70
技术积分 19686 (47)
社区积分 26187 (42)
注册日期 2006-10-26
论坛徽章:151
现任管理团队成员金牌徽章银牌徽章铜牌徽章2008欧洲杯之星欧洲冠军杯纪念徽章
2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:蹦床体育版块博采纪念徽章2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:排球

发表于 2008-6-27 11:09 
01真热心啊。


__________________
The following programme is not suitable for children

香车圈子,欢迎您的加入
只看该作者    顶部
在线/呼叫 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-27 11:41 


QUOTE:
原帖由 马甲走江湖 于 2008-6-27 11:09 AM 发表
01真热心啊。

   哥 支持我去


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
在线/呼叫 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-27 11:43 
int[] a=new int[]{1,2,3};
           system.out.println(java.util.arrays.tostring(a));


这种写法的话,3后面还是有个“,”号在那


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40537 (18)
社区积分 10950 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-6-27 23:38 


QUOTE:
原帖由 it01 于 2008-6-21 20:58 发表
String的创建

  String s = "hello";
  JVM先根据内容"hello"查找对象,如果没有找到,则在heap上创建新对象,并将其赋予s1,否则使用已经存在的对象

  String s = new String("hello");
  JVM直接在heap上创建新的对象,所以在heap中会出现内容相同,地址不同的String对象


String的比较

  "=="        比较地址
  "equals"    比较内容

  举例:
  String s1 = "hello";
  String s2 = "hello";
  String s3 = new String("hello");

  s1 == s2;               // true        地址相同
  s1 == s3;               // false       地址不同
  s1.equals(s2);          // true        内容相同
  s1.equals(s3);          // true        内容相同


intern() 方法

   查找内容相同(equals())的字符串

   String s1 = "hello";                // hello不存在,jvm创建新对象 (1)
   String s2 = new String("hello");    // 创举新对象 (2),这时heap中存在两个内容为hello的对象
   s1 == s2;           // false        // 地址不同
   s1.equals(s2);      // true         // 内容相同
   s2 = s2.intern();   // true         // 找到对象(1) 并赋予s2
   s1 == s2;           // true !!      // 注意:此时s1,s2同指向(1)


效率:String 与 StringBuffer

    情景1:
    (1) String result = "hello" + " world";
    (2) StringBuffer result = new String().append("hello").append(" world");

        (1) 的效率好于 (2),不要奇怪,这是因为JVM会做如下处理
        编译前   String result = "hello" + " world";
        编译后   String result = "hello world";


    情景2:
    (1) public String getString(String s1, String s2) {
            return s1 + s2;
        }
    (2) public String getString(String s1, String s2) {
            return new StringBuffer().append(s1).append(s2);
        }

        (1) 的效率与 (2) 一样,这是因为JVM会做如下处理
        编译前   return s1 + s2;
        编译后   return new StringBuffer().append(s1).append(s2);


    情景3:
    (1) String s = "s1";
              s += "s2";
              s += "s3";
    (2) StringBuffer s = new StringBuffer().append("s1").append("s2").append("s3");

        (2) 的效率好于(1),因为String是不可变对象,每次"+="操作都会造成构造新的String对象


    情景4:
    (1) StringBuffer s = new StringBuffer();
        for (int i = 0; i < 50000; i ++) {
            s.append("hello");
        }
    (2) StringBuffer s = new StringBuffer(250000);
        for (int i = 0; i < 50000; i ++) {
            s.append("hello");
        }
      
        (2) 的效率好于 (1),因为StringBuffer内部实现是char数组,默认初始化长度为16,每当字符串长度大于char
        数组长度的时候,JVM会构造更大的新数组,并将原先的数组内容复制到新数组,(2)避免了复制数组的开销
        
   


关键点
    1). 简单的认为 .append() 效率好于 "+" 是错误的!
    2). 不要使用 new 创建 String
    3). 注意 .intern() 的使用
    4). 在编译期能够确定字符串值的情况下,使用"+"效率最高
    5). 避免使用 "+=" 来构造字符串
    6). 在声明StringBuffer对象的时候,指定合适的capacity,不要使用默认值(18)
    7). 注意以下二者的区别不一样
        - String s = "a" + "b";
        - String s = "a";
          s += "b";

您这也扯的太远了吧


__________________
只看该作者    顶部
在线/呼叫 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14223 (79)
社区积分 34453 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-27 23:51 


QUOTE:
原帖由 justforregister 于 2008-6-27 11:38 PM 发表

您这也扯的太远了吧

   string 和stringbuffer的区别

顺便自己补习看看了


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40537 (18)
社区积分 10950 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-6-29 18:54 


QUOTE:
原帖由 it01 于 2008-6-27 23:51 发表



   string 和stringbuffer的区别

顺便自己补习看看了

支持


__________________
只看该作者    顶部
离线 菜就菜吧
圝◣魂◢圝


来自 山东,临沂
精华贴数 0
个人空间 0
技术积分 133 (13262)
社区积分 0 (1574625)
注册日期 2007-9-28
论坛徽章:2
生肖徽章2007版:鼠ITPUB新首页上线纪念徽章    
      

发表于 2008-7-1 13:52 
服了


__________________
圝◣魂◢圝
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问