首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

请问:java语法

2013-04-07 
请教:java语法最近忽然对android感兴趣了,于是就找个教材看了看,顿时傻眼了,里面的代码完全颠覆了我以前对

请教:java语法
最近忽然对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. findViewById方法返回的是一个View,它是Button的基类,所以这里必须要强制转型成Button,不然编译不过。为什么要返回View,因为findViewById找的不一定是Button,还有可能是EditText, TextView等,所以它必须定义成,返回Button, EditText, TextView的共同基类,View

所以,如果你这样写,就不用转型了
View view = this.findViewById(R.id.button);

2. 这是java的for each语法
[解决办法]

引用:
最近忽然对android感兴趣了,于是就找个教材看了看,顿时傻眼了,里面的代码完全颠覆了我以前对java的认知了。
(1) 
Button button = (Button) this.findViewById(R.id.button);
如果说是:Button button =this.findViewById(R.id.button);
倒是符合我的认知。
那行代码我明白是什么意思 ……

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

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

[解决办法]
Button的写法应该好理解吧 强制转换呀!
foreach循环的写法是JAVA1.5新加入的,不过这种写法要注意应用场合,有同步隐患
[解决办法]
1、 是强制转化  这个应该没有问题了
2、是增强for循环  是java1.5新加入的
[解决办法]
楼上的都解释的很清楚了,前面一个是强制装换一样,从方法名也可以看出来findviewbyid,获得的是一个view,只有经过强转才能使用button的特性

第二个和常规的for写法获得的结果是一样的,楼主没有发现更简洁了吗?
[解决办法]
findViewById()方法返回的是View对象,Button和其他android组件都是基于View而实现的,也就是说View是android组件的父类,如果你要得到Button,当然需要强转喽。

第二个问题看出LZ经验不多啊。就像楼上说的,加强for循环也就是.net的foreach。
他们的用法相同,按照业务需求选择使用相应的逻辑语句。
[解决办法]
引用:
1. findViewById方法返回的是一个View,它是Button的基类,所以这里必须要强制转型成Button,不然编译不过。为什么要返回View,因为findViewById找的不一定是Button,还有可能是EditText, TextView等,所以它必须定义成,返回Button, EditText, TextView的共同基类,View

所以,如果你这……

楼主,这个答案很正确!
[解决办法]
这完全是JAVA的基本语法,不知楼主对JAVA是否真的认知清楚了。
[解决办法]
JAVA基础再复习一遍吧
[解决办法]
最不喜欢很多人以下的写法:
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListner


其实这些都是View的方法啊,不用转换就可以,呵呵
findViewById(R.id.button).setOnClickListner
[解决办法]
this.findViewById(R.id.button)返回的是View,而Button是View的子类,所以要强制类型转换一下

热点排行