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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张昊镭 黑马帝   /  2012-7-6 16:56  /  2011 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张昊镭 于 2012-7-6 23:30 编辑

在第十天第六个视频第25题,要求我查找指定数组中的某个元素是否存在,最后的代码是这样的
class Demo
{
    public int getIndex(char[] arr,char key)
    {
        if(arr==null)
            throw new IllegalArgumentException("数据异常,数组为空");
        for(int x=0;x<arr.length;x++)
        {
            if (arr[x]==key)
                return x;
        }
        return -1;        
    }
    public static void main(String[] args)
    {
        char[] arr={'1','2','3','A'};
        System.out.println(new Demo().getIndex(arr,'B'));
    }
}
我的问题就在红色的代码上,要我检测一个数组吧,我可以创建一个数组,但我想既然有匿名对象,那么我是否可以写个匿名数组,这样我一行代码就搞定,于是我这样写
public static void main(String[] args)
    {
        System.out.println(new Demo().getIndex(new char[]{'1','2','3','A'},'A'));
    }
没想到编译成功,运行也正确,请教下数组也有匿名的?是不是带new的都可以不要用取名字,为了节省代码直接写new什么即可?比如new对象和new数组。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

4 个回复

倒序浏览
new Demo().getIndex(arr,'B') //你是说这个么
匿名一是为了简化代码,二是为了告诉GC我这个对象只用一次,用完回收
相对某个集合进行一些操作,而这个集合只会被用到一次的时候,用匿名数组是比较合适的。
Java代码  
public class Main {  
    public static void main(String[] args) {  
        out1(new String[] {"1", "2"});   
        out2("1", "2");   
    }  
      
    static void out1(String[] ss){  
        for (String str : ss) {  
            System.out.println(str);  
        }  
    }  
      
    static void out2(String... ss){  
        for (String str : ss) {  
            System.out.println(str);  
        }  
    }  
}  
但是不是为了节省代码什么都可以写成new的  除非你确信只用一次

点评

感谢指点  发表于 2012-7-6 17:58

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
我还没有听说过匿名数组这个概念,所以不能给你说匿名数组怎么怎么了,但是你这个
getIndex(char[] arr,char key)地方的第一个参数需要一个数组,你不管怎么写都是传进去一个数组,
当然结果一样了。数组定义有好几种,先给你这两种吧
1.  int[] i={1,2,3}
2.  int[] i=new int[]{1,2,3}
在这两个里边都是定义了一样的数组i,你那道题的后边可以这样写
public static void main(String[] args)
    {
        int[] i=new int[]{1,2,3};
        System.out.println(new Demo().getIndex(i,'1'));
    }
你总不能说换个写法就是匿名的吧。
回复 使用道具 举报
杨朔 发表于 2012-7-6 17:54
我还没有听说过匿名数组这个概念,所以不能给你说匿名数组怎么怎么了,但是你这个
getIndex(char[] arr,cha ...

呃,我确实是用了两种写法,
1.
public static void main(String[] args)
    {
        char[] arr={'1','2','3','A'};
        System.out.println(new Demo().getIndex(arr,'B'));
    }
2.
public static void main(String[] args)
    {
        System.out.println(new Demo().getIndex(new char[]{'1','2','3','A'},'A'));
    }
但是写法1里面我把数组取了个名字叫arr,而写法2我没有取名字,直接就是new了一个数组。我也没听说过匿名数组,所以才想问问这个写法2算不算匿名数组,因为感觉很像匿名对象。
回复 使用道具 举报
quyitquyit 发表于 2012-7-6 18:03
呃,我确实是用了两种写法,
1.
public static void main(String[] args)

你的学习态度太好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马