最近忽然对android感兴趣了,于是就找个教材看了看,顿时傻眼了,里面的代码完全颠覆了我以前对java的认知了。
(1) 
Button button = (Button) this.findViewById(R.id.button);
如果说是:Button button =this.findViewById(R.id.button);
倒是符合我的认知。
那行代码我明白是什么意思 但不知道为什么这样写?
(2)
for(String text : texts){manager.sendTextMessage(number, null, text, null, null);}
我印象里的for格式是:for (int i = 1; i <= row; i++)这样的吧
这种写法叫什么名字,和前一种写法有什么不同?哪位老师能帮我解释一下。谢谢!

解决方案 »

  1.   

    1. findViewById方法返回的是一个View,它是Button的基类,所以这里必须要强制转型成Button,不然编译不过。为什么要返回View,因为findViewById找的不一定是Button,还有可能是EditText, TextView等,所以它必须定义成,返回Button, EditText, TextView的共同基类,View所以,如果你这样写,就不用转型了
    View view = this.findViewById(R.id.button);2. 这是java的for each语法
      

  2.   

    LZ已经说的比较清楚了,至于第2个提到的for循环语句是等价的    LZ在java代码没有用到过或者看到过吧       另外对于一些不清楚为什么这么写的android 语法    可以直接在api文档里面找   官方的是英文的    如果感觉英文不行   可以在论坛搜索android 中文版api  但是中文版只翻译了部分~
      

  3.   


            foreach (int a in fibarray)
            {
                System.Console.WriteLine(a);
            }
      

  4.   

    Button的写法应该好理解吧 强制转换呀!
    foreach循环的写法是JAVA1.5新加入的,不过这种写法要注意应用场合,有同步隐患
      

  5.   

    1、 是强制转化  这个应该没有问题了
    2、是增强for循环  是java1.5新加入的
      

  6.   

    楼上的都解释的很清楚了,前面一个是强制装换一样,从方法名也可以看出来findviewbyid,获得的是一个view,只有经过强转才能使用button的特性第二个和常规的for写法获得的结果是一样的,楼主没有发现更简洁了吗?
      

  7.   

    findViewById()方法返回的是View对象,Button和其他android组件都是基于View而实现的,也就是说View是android组件的父类,如果你要得到Button,当然需要强转喽。第二个问题看出LZ经验不多啊。就像楼上说的,加强for循环也就是.net的foreach。
    他们的用法相同,按照业务需求选择使用相应的逻辑语句。
      

  8.   

    这完全是JAVA的基本语法,不知楼主对JAVA是否真的认知清楚了。
      

  9.   

    最不喜欢很多人以下的写法:
    Button button = (Button) this.findViewById(R.id.button);
    button.setOnClickListner其实这些都是View的方法啊,不用转换就可以,呵呵
    findViewById(R.id.button).setOnClickListner
      

  10.   

    Button button = (Button) this.findViewById(R.id.button)是不是可以理解成
    View view = this.findViewById(R.id.button);
    Button button = view
      

  11.   


    很少用java,所以我对java的认识还停留在多年前写简单网页的javascript上,落伍了。
      

  12.   

    this.findViewById(R.id.button)返回的是View,而Button是View的子类,所以要强制类型转换一下