<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    CoffeeTree
    IT 男人's Blog helloheyongjin@sina.com
    你大娘已經(jīng)不是你從前的大娘,你大爺依舊是你大爺
    由于涉java尚淺,今天在寫個小程序的時候遇到了個問題,無解,反復查看和調(diào)試后,了然,寫下以免忘卻。

    問題展示:

    代碼1:(Eshop類中定義下面一個方法,估計高手一看就知道我錯哪了)

        public static ArrayList getItems(String id)

        {

           ArrayList tempList = new ArrayList();

           if(id=="1"){

               tempList.add(new Product("11","Windows","$100"));

               tempList.add(new Product("12","Linux","$80"));

               tempList.add(new Product("13","XP2","$59"));

           }

           else if(id=="2"){

               tempList.add(new Product("21","Tomcat","$200"));

               tempList.add(new Product("22","Eclipse","$95"));

               tempList.add(new Product("23","Mysql","$48"));

           }

           else if(id=="3"){

               tempList.add(new Product("31","Jsp","$35"));

               tempList.add(new Product("32","J2EE","$15"));

               tempList.add(new Product("33","HTML","$45"));

           }

           return tempList;

        }

    代碼2:(某JSP頁面中表格)

    <table>

       <%

            String id = request.getParameter("catid");

            if(id==null)

               id="1";

            ArrayList pro = Eshop.getItems(id);

            Product p = null;

            for(int j=0;j<pro.size();j++)

            {

               p = (Product) pro.get(j);

        %>

        <tr>

            <td><%=p.getName() %></td><td><%=p.getPrice() %></td>

        </tr>

        <%

        }

        %>

    </table>

    問題:當?shù)刂窓诘刂窞?/span>http://localhost:8080/Eshop2/index.jsp?catid=2時沒有達到我預期下段代碼的輸出:

            else if(id=="2"){

               tempList.add(new Product("21","Tomcat","$200"));

               tempList.add(new Product("22","Eclipse","$95"));

               tempList.add(new Product("23","Mysql","$48"));

           }

    錯誤原因:混淆equals==的區(qū)別。

    解決辦法:

           id=="1"           id.equals("1")

           id=="2"           id.equals("1")

    id=="3"           id.equals("1")

     

    下面說說:equals == 的區(qū)別

     

    JDK1.6定義 String.equals 如下:

    public boolean equals(Object anObject)

    將此字符串與指定的對象比較。當且僅當該參數(shù)不為 null,并且是與此對象表示相同字符序列的 String 對象時,結(jié)果才為 true。

    定義說明只有兩個對象的“值”相等的時候返回true,equals是對象值的比較,然而“==”是引用的比較,也就是說只要不是引用的同一個對象那么就為false.

     

    一個典型的例子:

        <%!

        String str1 = new String("abc");

        String str2 = new String("abc");

        String str3 = str1;

        String str4 = "abc";

        String str5 = "abc";

    %>

     

    下面是網(wǎng)上找到的相關(guān)介紹:

     

    ==

    1、 比較的是操作符兩端的操作數(shù)是否是同一個對象

    2、 兩邊的操作數(shù)必須是同一類型的(可以是父子類之間)才能編譯通過。

    3、 比較的是地址,如果是具體的阿拉伯數(shù)字的比較,值相等則為true

    equals:

        比較的是兩個對象是否為同一個對象。

    String s="abce"是一種非常特殊的形式,new有本質(zhì)的區(qū)別,它是java中唯一不需要new 就可以產(chǎn)生對象的途徑. String s="abce"形式賦值在java中叫直接量,它是在常量池中而不是象new 一樣放在壓縮堆中. 這種形式的字符串,JVM內(nèi)部發(fā)生字符串拘留,即當聲明這樣的一個字符串后,JVM會在常量池中先查找有有沒有一個值為"abcd"的對象,如果有,就會把它賦給當前引用.即原來那個引用和現(xiàn)在這個引用指向了同一對象,如果沒有,則在常量池中新創(chuàng)建一個"abcd",下一次如果有String s1 = "abcd";又會將s1指向"abcd"這個對象,即以這形式聲明的字符串,只要值相等,任何多個引用都指向同一對象. String s = new String("abcd");和其它任何對象一樣.每調(diào)用一次就產(chǎn)生一個新對象.

    總結(jié):

    定義java變量的時候,實際上只是產(chǎn)生了一個指向該類型的引用(它也占用內(nèi)存空間),對這個“引用”進行賦值,就是將其指向某個內(nèi)存空間;多次對“引用”進行賦值,jvm會產(chǎn)生多個內(nèi)存空間,同時回收以前不用的內(nèi)存空間。

    posted on 2008-12-23 02:32 何永進 閱讀(317) 評論(0)  編輯  收藏 所屬分類: JSP
     
    主站蜘蛛池模板: 精品免费tv久久久久久久| 人人爽人人爽人人片A免费| 两性色午夜视频免费网| 国产一区二区三区在线免费| 亚洲日本一线产区和二线| 国产美女在线精品免费观看| 精品久久亚洲中文无码| 免费中文熟妇在线影片| 亚洲中文字幕乱码一区| 免费无码又爽又刺激毛片| 亚洲av中文无码乱人伦在线观看| 四虎影视大全免费入口| 亚洲a∨无码一区二区| 亚洲国产日韩在线观频| 国产精品无码免费专区午夜 | 国产精品亚洲片在线va| 日韩精品无码区免费专区 | 四虎影视在线看免费观看| 亚洲AV网站在线观看| 国产免费人成视频尤勿视频| 亚洲色婷婷一区二区三区| 无码人妻一区二区三区免费看 | 亚洲一区在线观看视频| 日本一区免费电影| A毛片毛片看免费| 亚洲黄色在线电影| 免费涩涩在线视频网| 久久久久国色AV免费观看| 亚洲五月激情综合图片区| 成人毛片18女人毛片免费| 免费一级特黄特色大片| 亚洲va在线va天堂va888www| 中文字幕乱码免费视频| 亚洲AV无码成人网站在线观看| 国产乱辈通伦影片在线播放亚洲| 99免费在线视频| 久久夜色精品国产噜噜亚洲a| 亚洲成人高清在线| 免费观看美女用震蛋喷水的视频 | 国产免费看插插插视频| 久久精品国产免费|