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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 包晗 中级黑马   /  2012-6-3 10:17  /  3042 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 包晗 于 2012-6-4 14:19 编辑

今天看书  发现一段程序
public class Welcome
{
   public static void main()[String[] args]
{
  String[] greeting =new String[3]
greeting[0] ="welcome to Core java";
greeting[1]="by car horstmann";
greeting[2]="and gary cornell";
for(String g : greeting)
System.out.pringln(g);

}
}
学了半个多月了。。。。突然发现for 还能这么用......
问题1:    请问这个是怎么用的啊
问题2:     这里的String[] greeting= new String[3]    是对象吗  如果不是他是什么。.......
看书第一章就看不懂...雷的我外焦里嫩

点评

这个是for的高级应用,建议你看下毕老师基础视频,或者找点资料看下,一步一步来~  发表于 2012-6-3 10:40

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 淡定!

查看全部评分

15 个回复

倒序浏览
这也是一种用于遍历数组的语法
for (循环变量类型 循环变量名称 : 要被遍历的对象)
{
      循环体
}
回复 使用道具 举报
哥们,别急,   以后的路还长着呢;   慢慢做吧!!!   就foreach()   与for()    你结合看一下,   看看他们 ;     就你上面的例子吧:
  1. for(String g : greeting)
  2. System.out.pringln(g);
复制代码
现在用for循环:
  1. for(int g=0;g<greeting.length;g++){
  2.        System.out.println(greeting[g]) ;
  3. }
复制代码
对于: 这里的String[] greeting= new String[3]    这是一个对象数组;     毕老师口中的“上帝”  就是Object,   而String是Object的子类;   

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这是增强for循环 只能对集合进行遍历,只能获取,不能对集合进行操作,且必须有被遍历的目标
格式
for(数据类型 变量名 : 被遍历的集合或数组){


String[] greeting= new String[3]   是创建了一个长度为3的 String类型数组 ,数组是引用数据类型

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
这个是高级FOR循环,看毕老师的视频到集合的时候就会看到了,是基于迭代器的原理,现在知道有这个用法就行
回复 使用道具 举报
这在java里叫增强for循环
格式:
   for(循环变量类型 循环变量名称 : 要被遍历的对象)
   {
      循环体
  }

增强的for循环能让我们的代码更加简洁,让程序员使用时更加方便但这种循环有局限性,一定要根据实际需要有选择性地使用,不要盲目去增强的for循环。

我写几个例子你看看他的缺陷:
1,数组,不能很方便的访问下标值。
  1. for (int value : array) {

  2.       System.out.println (value);

  3. }
复制代码
普通for循环:
  1. void Function ()

  2. {

  3. int[] array = {1,2,5,8,9};

  4. int x = 0;

  5. for (int i = 0; i < array.length; i++)

  6. {

  7.   System.out.println(arr[x]);

  8. }


  9. }
复制代码
显而易见可以看出缺点:
1. 只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;

2. 循环变量(i)不可见,如果想知道当前遍历到数组的第几个元素,可能还需要更复杂点的写法。

在遍历集合时同理也会很多局限,自己去慢慢学习吧。


评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 总结得不错,以后回答快点哦

查看全部评分

回复 使用道具 举报
武剑峰 来自手机 中级黑马 2012-6-3 11:41:38
7#
学习了,用了怎么久今天才明白
来自:黑马程序员训练营论坛 Android客户端来自: Android客户端
回复 使用道具 举报
楼主不静心看视频啊~
回复 使用道具 举报
杜俊彪 发表于 2012-6-3 10:36
哥们,别急,   以后的路还长着呢;   慢慢做吧!!!   就foreach()   与for()    你结合看一下,   看看 ...

哦  还没去看到object 这来
回复 使用道具 举报
这个是for循环的加强用法~也就是for循环PK版

用法是:
for(循环的变量类型 循环变量的名称 : 要被遍历的目标)
   {
      具体循环内容;
  }

其实加强版功能用原版一样可以实现,不过写法更简单而已,举个对比例子:
原版:
for(int str = 0; str < target.length; str ++) {
     System.out.println(target[str]);
}

加强版:
for(String str : target) {
     System.out.println(str);
}
其中target[]是一数组~自己具体定义啦

加强版我们可以看出来,加强版木有str<target.length这一段,也就是不用判断条件(本题为数组长度)。
这样就避免了下表越界的情况啦~

但是我现在一直还是用原版,打好基础才是王道。
回复 使用道具 举报
for循环的加强用法格式为:

for (变量类型 变量名 : 所遍历对象)
{
      循环内容
}

for加强循环是一种遍历循环,我感觉它的机制和Iterator比较像,
也就是对所遍历对象从第一个依次进行hasNext()判断,有下一位的话就依次进行循环。
这样最大的好处就是不会越界,不需要像普通的for循环那样需要一个判断循环进行的条件~

回复 使用道具 举报
这是超级for循环,以后视频要讲的:语法是
for (变量类型 变量名 : 所遍历对象)
{
      循环内容
}

String[] greeting= new String[3]   是创建了一个长度为3的 String类型数组
回复 使用道具 举报
这是JDK1.5新特性 高级For循环
格式:
for(数据类型 变量名:被遍历的集合(Collection)或者数组) {
}
对集合进行遍历
只能获取元素,但是不能对集合进行操作
String[] greeting= new String[3]  这是一个长度为3的String类型数组
回复 使用道具 举报
增强FOR循环,在其它语言中称为foreach
1.在JAVA中的用法:
for(数据类型 变量名 :被编历的集合或数组){

}

2.String[] greeting= new String[3]  是一个对象数组,String是Object的子类型。
回复 使用道具 举报
高级for,第十七天的课程
回复 使用道具 举报
黄克帅 发表于 2012-6-3 10:38
这是增强for循环 只能对集合进行遍历,只能获取,不能对集合进行操作,且必须有被遍历的目标
格式
for(数 ...

纠正你一下啊,你说的增强for循环只能获取数据,不能对数据进行操作是对的,

但是你说只能对集合进行遍历是错的,增强for循环还可以对数组和map进行遍历,

而且它只可以遍历实现了iterator接口的集合,对于没有实现iterator接口的集合,是不能采用

增强for循环进行遍历的

//取集合的数据
  List list = new ArrayList();
  list.add("1");
  list.add("2");
  
  for(Object obj : list){
   String str = (String) obj;
   System.out.println(obj);
  }
//数组的数据
  int arr[] = {1,2,3};
  for(int num : arr){
   System.out.println(num);
  }
//取map
  Map map = new LinkedHashMap();
  map.put("1", "aa");
  map.put("2", "bb");
  map.put("3", "cc");
//用增强for迭代map
  for(Object obj : map.entrySet()){
   Map.Entry me = (Entry) obj;
   System.out.println(me.getKey() + "=" + me.getValue());
  }

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马