Java中的两种for循环

在学习Hibernate的时候学习一种在Java当中的for循环,估计是以前学习的时候没有记住,忘记了在这里再写下笔记 !

package com.zxd.test;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.zxd.bean.House;
import com.zxd.util.QueryProperty;

/**
 * HQL封闭查询的测试类
 * @author zhang
 *
 */
public class TestHouse {

    public static void main(String[] args) {
        
        //公共的成员变量
        SessionFactory sf = null;
        Session session = null;
        QueryProperty qp = new QueryProperty();
        
        //封装查询的数据
        qp.setTitle("%好房%");
        qp.setStreet_id("1002");
        qp.setType_id("1004");
        qp.setLow_price(20);
        qp.setHigh_price(200);
        qp.setSmall_floorage(50);
        qp.setBig_floorage(180);
         
        //HQL语句
        StringBuffer sb = new StringBuffer();
        sb.append("from House where ");
        sb.append("(title like :title) ");
        sb.append("and (type_id like :type_id) ");
        sb.append("and (street_id like :street_id) ");
        sb.append("and (price between :low_price and :high_price) ");
        sb.append("and (floorage between :small_floorage and :big_floorage)");
        
        
        try {
            //开始执行查询
            sf = new Configuration().configure().buildSessionFactory();
            session  = sf.openSession();
            Query query = session.createQuery(sb.toString());
            query.setProperties(qp);
            List<House> list = query.list();
            
            //第一种用:的循环
/*
            这种循环也叫for循环的增强版在C#中叫foreach用的关键字为in
            在java中用:来代替了in这种循环支持在java1.5以后。
            最重要的一点是在这种循环竟然可以在对集合循环的时候修改取出的对应集合值,但是在循环代变量前加入final关键字就不会出来上面的情况,也增加了代码的安全性
            for(final int i:intary){
            i = i+1;    //这里编译会出错
            System.out.println(i);
        }
            缺点:这种循环只能用于把集合内的内容遍历出来但是如果要用到了索引就不行了,所以在适合用这种for循环的情况中就不要用传统的循环了。
            优点:减少了代码的编写
            在性能方面java在jvm虚拟机中都是把这两种循环还原成一个样子执行所以不用担心性能
        */

 

            /*for(House house:list){
                
                System.out.println("标题是:"+house.getTitle());
                System.out.println("面积是:"+house.getFloorage());
                System.out.println("价格是:"+house.getPrice());
                System.out.println("区是:"+house.getStreet().getDistrict().getName());
                System.out.println("街道是:"+house.getStreet().getName());
                System.out.println("----------------------------------");
            }*/
            
            //第二种循环
  
for(int i = 0;i<list.size();i++){ System.out.println("标题是:"+list.get(i).getTitle()); System.out.println("面积是:"+list.get(i).getFloorage()); System.out.println("价格是:"+list.get(i).getPrice()); System.out.println("区是:"+list.get(i).getStreet().getDistrict().getName()); System.out.println("街道是:"+list.get(i).getStreet().getName()); System.out.println("----------------------------------"); } } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ session.close(); sf.close(); } } }

 

上面例子中的第一种循环是我没有记住的,用了关键字符“:”,一般这种循环是用来对一个集合的遍历上的(List<House>、Map)中的用的很方便。

第二种循环是普通的循环我这是Java中最常见的一种for循环。

posted @ 2012-09-19 10:18  Java_Swing  阅读(781)  评论(0编辑  收藏  举报