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

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

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

    yxhxj2006

    常用鏈接

    統計

    最新評論

    #

    POS響應代碼解析

    代碼 POS顯示的內容原因/操作員應采取的措施
    00   交易成功       承兌或交易成功
    01   交易失敗       請聯系發卡行 查發卡行
    02   交易失敗       請聯系發卡行向發卡行查詢
    03   商戶未登記     聯系銀行卡服務中心處理
    04   沒收卡         請聯系收單行 操作員沒收卡
    05   交易失敗       請聯系發卡行 發卡不予承兌,與發銀行聯系查詢
    06   交易失敗       請聯系發卡行發卡行故障
    07   沒收卡         請聯系收單行 特殊條件下沒收卡
    09   交易失敗       請重試 重做該交易
    12   交易失敗       請重試 發卡行不支持的交易
    13   交易金額超限   請重試交易金額無效,采用小金額交易或與發卡行聯系
    14   無效卡號       請聯系發卡行無效卡號,與銀行卡服務中心或發卡行聯系
    15   此卡不能受理   請與銀行卡服務中心聯系處理
    19   交易失敗       請聯系發卡行 刷卡讀取數據有誤,重新刷卡
    20   交易失敗       請聯系發卡行 與銀行卡服務中心或發卡行聯系
    21   交易失敗       請聯系發卡行 與銀行卡服務中心或發卡行聯系
    22   操作有誤       請重試 POS狀態與中心不符,重新簽到
    23   交易失敗       請聯系發卡行 不可接受的交易費
    25   交易失敗     請聯系發卡行發卡行未能找到有關記錄,核對有關資料重做該交易或與發卡行聯系
    30   交易失敗       請重試 檢查卡磁條是否完好或反方向刷卡
    31   此卡不能受理   此發卡方未與中心開通業務
    33   過期卡         請聯系發卡行 過期的卡或與發卡行聯系
    34   沒收卡         請聯系收單行 有作弊嫌疑的卡,操作員可以沒收
    35   沒收卡         請聯系收單行 有作弊嫌疑的卡,操作員可以沒收
    36   此卡有誤       請換卡重試 有作弊嫌疑的卡,操作員可以沒收
    37   沒收卡         請聯系收單行 有作弊嫌疑的卡,操作員可以沒收
    38   密碼錯誤次數超限   密碼輸錯的次數超限
    39   交易失敗       請聯系發卡行 可能刷卡操作有誤
    40   交易失敗       請聯系發卡行 發卡行不支持的交易類型
    41   沒收卡         請聯系收單行 掛失的卡,與發卡行聯系處理
    42   交易失敗       請聯系發卡方 發卡行找不到此帳戶
    43   沒收卡         請聯系收單行 被竊卡, 操作員可以沒收
    44   交易失敗       請聯系發卡行 可能刷卡操作有誤
    51   余額不足       請查詢 帳戶內余額不足
    52   交易失敗       請聯系發卡行 無此支票賬戶
    53   交易失敗       請聯系發卡行 無此儲蓄卡賬戶
    54   過期卡         請聯系發卡行 過期的卡
    55   密碼錯         請重試 密碼輸錯,可重新輸入
    56   交易失敗       請聯系發卡行 發卡行找不到此帳戶,與發卡行聯系
    57   交易失敗       請聯系發卡行不允許持卡人進行的交易,與發卡行聯系
    58   終端無效       請聯系收單行或銀聯重新簽到再試或與銀行卡服務中心聯系
    59   交易失敗       請聯系發卡行 與發卡行聯系
    60   交易失敗       請聯系發卡行 與發卡行聯系
    61   金額太大       超出去款金額限制
    62   交易失敗       請聯系發卡行 受限制的卡
    63   交易失敗       請聯系發卡行 違反安全保密規定
    64   交易失敗       請聯系發卡行原始金額不正確,核對原始資料或與發卡行聯系
    65   超出取款次數限制   超出取款次數限制
    66   交易失敗       請聯系收單行或銀聯 與發卡放聯系處理
    67   沒收卡         沒收卡
    68   交易超時       請重試發卡行規定時間內沒有應答,與銀行卡服務中心或發卡行聯系
    75   密碼錯誤次數超限允許的輸入PIN次數超限   該卡要重置密碼方能使用
    77   請向網絡中心簽到   重做簽到
    79   POS終端重傳脫機數據 POS終端上傳的脫機數據對帳不平
    90   交易失敗       請稍后重試日期切換正在處理,與銀行卡服務中心或發卡行聯系
    91   交易失敗       請稍后重試 電話查詢發卡方或銀聯,可重作
    92   交易失敗       請稍后重試銀行通訊故障,電話查詢發卡方或網絡中心
    93   交易失敗       請聯系發卡行 交易違法、不能完成。重新簽到后再試
    94   交易失敗       請稍后重試重新簽到后再交易或與銀行卡服務中心聯系
    95   交易失敗       請稍后重試發卡行調節控制錯,與發卡行聯系
    96   交易失敗       請稍后重試 與發卡行或銀行卡服務中心聯系
    97   終端未登記     請聯系收單行或銀聯與銀行卡服務中心聯系
    98   交易超時       請重試銀聯收不到發卡行應答,與銀行卡服務中心或發
    卡行聯系
    99   校驗錯         請重新簽到 重新簽到再作交易
    A0   校驗錯         請重新簽到 重新簽到作交易

    posted @ 2013-08-09 21:47 奮斗成就男人 閱讀(509) | 評論 (0)編輯 收藏

    POS機的報文格式

         摘要: POS機的主要功能點: 1. 簽到 2. 輸入密碼 3. 消費 4. 余額查詢 5. 撤銷 6. 系統設置 我公司建議: 1:為統一格式及今后擴展,近可能按照銀聯標準開發: 2:增加“批結算”功能; 3:建議把卡號信息寫在磁條卡“2磁道”; 4:報文格式: TPDU(10字節) + 報文頭(12字節)+ 消息類型(4字節)+ 位圖(8字節)+位圖保護...  閱讀全文

    posted @ 2013-08-09 21:45 奮斗成就男人 閱讀(1748) | 評論 (0)編輯 收藏

    MyEclipse快捷鍵大全

    -------------------------------------
    MyEclipse 快捷鍵1(CTRL)
    -------------------------------------
    Ctrl+1 快速修復
    Ctrl+D: 刪除當前行 
    Ctrl+Q  定位到最后編輯的地方 
    Ctrl+L  定位在某行  
    Ctrl+O  快速顯示 OutLine 
    Ctrl+T  快速顯示當前類的繼承結構 
    Ctrl+W  關閉當前Editer 
    Ctrl+K  快速定位到下一個 
    Ctrl+E 快速顯示當前Editer的下拉列表
    Ctrl+J  正向增量查找(按下Ctrl+J后,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,)    
    Ctrl+Z 返回到修改前的狀態 
    Ctrl+Y 與上面的操作相反
    Ctrl+/  注釋當前行,再按則取消注釋 
    Ctrl+D刪除當前行。
    Ctrl+Q跳到最后一次的編輯處
    Ctrl+M切換窗口的大小 
    Ctrl+I格式化激活的元素Format Active Elements。
    Ctrl+F6切換到下一個Editor
    Ctrl+F7切換到下一個Perspective
    Ctrl+F8切換到下一個View
    ------------------------------------------
    MyEclipse 快捷鍵2(CTRL+SHIFT)
    ------------------------------------------
    Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作) 
    Ctrl+Shift+/ 自動注釋代碼 
    Ctrl+Shift+\自動取消已經注釋的代碼 
    Ctrl+Shift+O 自動引導類包 
    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查) 
    Ctrl+Shift+F4 關閉所有打開的Editer 
    Ctrl+Shift+X  把當前選中的文本全部變為小寫 
    Ctrl+Shift+Y  把當前選中的文本全部變為小寫 
    Ctrl+Shift+F  格式化當前代碼
    Ctrl+Shift+M(先把光標放在需導入包的類名上) 作用是加Import語句 
    Ctrl+Shift+P 定位到對于的匹配符(譬如{}) (從前面定位后面時,光標要在匹配符里面,后面到前面,則反之) 
    Ctrl+Shift+F格式化文件Format Document。
    Ctrl+Shift+O作用是缺少的Import語句被加入,多余的Import語句被刪除。 
    Ctrl+Shift+S保存所有未保存的文件。
    Ctrl+Shift+/ 在代碼窗口中是這種/*~*/注釋,在JSP文件窗口中是 <!--~-->。 
    Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
    -----------------------------------------
    MyEclipse 快捷鍵3(ALT)
    -----------------------------------------
    Alt+/ 代碼助手完成一些代碼的插入 ,自動顯示提示信息
    Alt+↓  當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了) 
    Alt+↑  當前行和上面一行交互位置(同上) 
    Alt+←  前一個編輯的頁面 
    Alt+→  下一個編輯的頁面(當然是針對上面那條來說了) 
    Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性

    MyEclipse 快捷鍵4(ALT+CTRL)

    Alt+CTRL+↓ 復制當前行到下一行(復制增加) 
    Alt+CTRL+↑ 復制當前行到上一行(復制增加)
    -------------------------------------------
    MyEclipse 快捷鍵5(ALT+SHIFT)
    -------------------------------------------
    Alt+Shift+R 重命名 
    Alt+Shift+M 抽取方法
    Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定) 
    Alt+Shift+L 抽取本地變量
    Alt+Shift+F 把Class中的local變量變為field變量
    Alt+Shift+I 合并變量
    Alt+Shift+V 移動函數和變量
    Alt+Shift+Z 重構的后悔藥(Undo) Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最后) 
    Alt+Shift+O(或點擊工具欄中的Toggle Mark Occurrences按鈕) 當點擊某個標記時可使本頁面中其他地方的此標記黃色凸顯,并且窗口的右邊框會出現白色的方塊,點擊此方塊會跳到此標記處。 
    下面的快捷鍵是重構里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快捷鍵都是Alt+Shift開頭的了)

    --------------------------------------------
    MyEclipse 快捷鍵(6) 
    --------------------------------------------
    F2當鼠標放在一個標記處出現Tooltip時候按F2則把鼠標移開時Tooltip還會顯示即Show Tooltip Description。 
    F3跳到聲明或定義的地方。 
    F5單步調試進入函數內部。 
    F6單步調試不進入函數內部,如果裝了金山詞霸2006則要把“取詞開關”的快捷鍵改成其他的。 
    F7由函數內部返回到調用處。 
    F8一直執行到下一個斷點。

    posted @ 2013-08-09 01:56 奮斗成就男人 閱讀(189) | 評論 (0)編輯 收藏

    Java對象的持久化

    Java對象的持久化主要使用ObjectInputStream與ObjectOutputStream類 來實現!


    public class Student implements Serializable {
     
            String name;
            int id ;
         int age;
            String department;
      public Student(String name, int id, int age, String department) {
       this.age = age;
       this.department = department;
       this.id = id;
       this.name = name;
      }

    public static void saveObjects(Student student, String fileName) { 
    FileOutputStream os = new FileOutputStream("fileName.dat"); 
    ObjectOutputStream oos = new ObjectOutputStream(os); 
    oos.writeObject(student); 
    }

    public static Student readObjects(String fileName) { 
    Student student; 
    Object obj; 
    try
    FileInputStream is = new FileInputStream("fileName.dat"); 
    ObjectInputStream ois = new ObjectInputStream(is); 
    obj = ois.readObject(); 
    }catch (Exception e) { 
    e.printStackTrace(); 

    if(obj instanceof Student){ 
    Student stu= (Student)obj; 
    return stu; 

    return null
    }

    posted @ 2013-08-09 01:30 奮斗成就男人 閱讀(259) | 評論 (0)編輯 收藏

    JAVA讀取Properties配置文件


    JAVA獲取文件絕對路徑Thread.currentThread().getContextClassLoader().getResource("abc.properties");                                   


     配置文件:XXX.properties 常用操作


     1:加載properties配置文件
      /**
         * 根據key從Properties對象中得到相應的值
         * 
    @param key
         * 
    @return 對應的值
         
    */
        public static String getValue(String key) {
            if (p !=  null) {
                return p.getProperty(key);
            }
            String property = null
            InputStream in = null;
            
            try {
                System.out.println("gleepay.properties is path : " + gleepayURL.getFile());
                File file = new File(gleepayURL.getFile());
                in = new FileInputStream(file);
                p = new Properties();
                p.load(in);
                property = p.getProperty(key);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }  finally {
                if (in != null) {
                    try {
                            in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return property;
        }

    2:寫入propertis配置信息
    /**
         * 寫入properties信息
         * 
    @param parameterKey
         * 
    @param parameterValue
         * 
         * 
    @return
         
    */
        public static void writeProperties_MACkey(String parameterKey, String parameterValue) {
            String filePath = MACkeyURL.getFile();
            Properties prop = new Properties();
            try {
                InputStream fis = new FileInputStream(filePath);
                // 從輸入流中讀取屬性列表(鍵和元素對)
                prop.load(fis);
                // 調用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
                
    // 強制要求為屬性的鍵和值使用字符串。返回值是 Hashtable 調用 put 的結果。
                OutputStream fos = new FileOutputStream(filePath);
                prop.setProperty(parameterKey, parameterValue);
                // 以適合使用 load 方法加載到 Properties 表中的格式,
                
    // 將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流
                prop.store(fos, "Update '" + parameterKey + "' value");
            } catch (IOException e) {
                System.err.println("Visit " + filePath + " for updating "
                        + parameterKey + " value error");
                e.printStackTrace();
            }
        }
        

    3:根據key讀取propertis文件value值
        /**
         * 根據key讀取value
         * 
    @param filePath
         * 
    @param key
         * 
    @return 對應的值
         
    */
        public static String readValueByKey(String filePath, String key) {
            System.out.println("properties file is path : " + filePath);
            Properties props = new Properties();
            try {
                InputStream in = new BufferedInputStream(new FileInputStream(filePath));
                props.load(in);
                String value = props.getProperty(key);
                System.out.println(" --> " + key + "=" + value);
                return value;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        
    4:讀取properties配置文件所有信息
        /**
         *  讀取properties的全部信息
         * 
    @param filePath
         * 
    @return
         
    */
        @SuppressWarnings("unchecked")
        public static void readPropertiesAll(String filePath) {
            System.out.println("properties file is path : " + filePath);
            Properties props = new Properties();
            try {
                InputStream in = new BufferedInputStream(new FileInputStream(filePath));
                props.load(in);
                Enumeration en = props.propertyNames();
                while (en.hasMoreElements()) {
                    String key = (String) en.nextElement();
                    String Property = props.getProperty(key);
                    System.out.println(" --> " + key + "=" + Property);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    posted @ 2013-08-08 23:43 奮斗成就男人 閱讀(167) | 評論 (0)編輯 收藏

    JAVA 對象拷貝

         摘要: JAVA 對象拷貝 為什么需要有對象拷貝? 對象拷貝相對的自然是引用拷貝。java初學者經常會問,我這個方法要改變一個對象的屬性,可以把參數傳進去了,為什么沒有改變了? ——基本數據類型傳值,而對象傳引用或引用的拷貝。 而有時候我們要獲取到一個當前狀態的對象復制品,他們是兩個獨立對象。不再是引用或者引用拷貝(實質都是指向對象本身)。就是說a是b的拷貝,b發生變化的時候,不要...  閱讀全文

    posted @ 2013-08-08 23:26 奮斗成就男人 閱讀(169) | 評論 (0)編輯 收藏

    用JAVA輕松操作properties文件

    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;
    import java.util.Properties;
    public class TestMain {
     
     //根據key讀取value
     public static String readValue(String filePath,String key) {
      Properties props = new Properties();
            try {
             InputStream in = new BufferedInputStream (new FileInputStream(filePath));
             props.load(in);
             String value = props.getProperty (key);
                System.out.println(key+value);
                return value;
            } catch (Exception e) {
             e.printStackTrace();
             return null;
            }
     }
     
     //讀取properties的全部信息
        public static void readProperties(String filePath) {
         Properties props = new Properties();
            try {
             InputStream in = new BufferedInputStream (new FileInputStream(filePath));
             props.load(in);
                Enumeration en = props.propertyNames();
                 while (en.hasMoreElements()) {
                  String key = (String) en.nextElement();
                        String Property = props.getProperty (key);
                        System.out.println(key+Property);
                    }
            } catch (Exception e) {
             e.printStackTrace();
            }
        }

        //寫入properties信息
        public static void writeProperties(String filePath,String parameterName,String parameterValue) {
         Properties prop = new Properties();
         try {
          InputStream fis = new FileInputStream(filePath);
                //從輸入流中讀取屬性列表(鍵和元素對)
                prop.load(fis);
                //調用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
                
    //強制要求為屬性的鍵和值使用字符串。返回值是 Hashtable 調用 put 的結果。
                OutputStream fos = new FileOutputStream(filePath);
                prop.setProperty(parameterName, parameterValue);
                //以適合使用 load 方法加載到 Properties 表中的格式,
                
    //將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流
                prop.store(fos, "Update '" + parameterName + "' value");
            } catch (IOException e) {
             System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
            }
        }
        public static void main(String[] args) {
         readValue("info.properties","url");
            writeProperties("info.properties","age","21");
            readProperties("info.properties" );
            System.out.println("OK");
        }
    }

    posted @ 2013-08-08 22:12 奮斗成就男人 閱讀(195) | 評論 (0)編輯 收藏

    Scanner----java控制臺和文件讀取的利器

    今天介紹的Scanner這個類是java 5新增加的類,不僅使用方便,功能更是強大。先來看一個簡單的例子:
    import java.util.*;
    public class ScannerTest {
     
       public static void main(String[] args){
            Scanner scanner=new Scanner(System.in);
            double a=scanner.nextDouble();
            System.out.println(a);
        }
    }
    運行
    輸入 一個任意數然后輸出這個數
     
    注意粗體字的地方,這一行就實現了從控制臺輸入數字的功能,如果要輸入字符串
    可以用
    String a=scanner.next();//注意不是nextString()
     
    Scanner還可以直接掃描文件。比如(有點長,耐心一點):
    import java.util.*;
    import java.io.*;
    public class ScannerTest {
        public static void main(String[] args) throws IOException{//這里涉及到文件io操作
            double sum=0.0;
            int count=0;
            FileWriter fout=new FileWriter("text.txt");
            fout.write("2 2.2 3 3.3 4 4.5 done");//往文件里寫入這一字符串
            fout.close();
            FileReader fin=new FileReader("text.txt");
            Scanner scanner=new Scanner(fin);//注意這里的參數是FileReader類型的fin
            while(scanner.hasNext()){//如果有內容
                if(scanner.hasNextDouble()){//如果是數字
                    sum=sum+scanner.nextDouble();
                    count++;
                }else{
                    String str=scanner.next();
                    if(str.equals("done")){
                        break;  
                    }else{
                        System.out.println("文件格式錯誤!");
                        return;
                    }
                }
            }
            fin.close();
            System.out.println("文件中數據的平均數是:"+sum/count);
        }
    }
    結果輸出文件中數據的平均數是:3.1666666666666665
    這段程序的功能是將"2 2.2 3 3.3 4 4.5 done"寫入文件scanner讀取文件中的數直到done結束。并求出數字的平均值,比較有意思的是scanner會自動一空格作為分割符區分不同數字。當然也可以通過scanner.useDelimiter(Pattern pattern)來設置不同的分割符,比如 scanner.useDelimiter(",*");

    posted @ 2013-08-08 22:11 奮斗成就男人 閱讀(186) | 評論 (0)編輯 收藏

    字節流與字符流轉換

         摘要: 字節流與字符流之間的區別卻可以聯系起來,這就是表中的兩個類InputStreamReader和OutputStreamWriter。InputStreamReader負責把字節輸入流轉換為字符輸入流,OutputStreamWriter負責把輸出字節流轉換為輸出字符流。下面來看看如何進行轉換。1.字節輸入流轉換為字符輸入流InputStreamReader是字節流通向字符流的橋梁,它使用指定的ch...  閱讀全文

    posted @ 2013-08-08 22:08 奮斗成就男人 閱讀(5231) | 評論 (0)編輯 收藏

    面理解Java中的String數據類型

    1.首先String不屬于8種基本數據類型,String是一個對象。

      因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

      2. new String()和new String(“”)都是申明一個新的空字符串,是空串不是null;

      3. String str=”kvill”;
    String str=new String (“kvill”);的區別:

      在這里,我們不談堆,也不談棧,只先簡單引入常量池這個簡單的概念。

      常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數據。它包括了關于類、方法、接口等中的常量,也包括字符串常量。

      看例1:

    String s0=”kvill”;
    String s1=”kvill”;
    String s2=”kv” + “ill”;
    System.out.println( s0==s1 );
    System.out.println( s0==s2 );
      結果為:

    true
    true
      首先,我們要知道Java會確保一個字符串常量只有一個拷貝。

      因為例子中的s0和s1中的”kvill”都是字符串常量,它們在編譯期就被確定了,所以s0==s1為true;而”kv”和”ill”也都是字符串常量,當一個字符串由多個字符串常量連接而成時,它自己肯定也是字符串常量,所以s2也同樣在編譯期就被解析為一個字符串常量,所以s2也是常量池中”kvill”的一個引用。

      所以我們得出s0==s1==s2;

      用new String() 創建的字符串不是常量,不能在編譯期就確定,所以new String() 創建的字符串不放入常量池中,它們有自己的地址空間。

      看例2:

    String s0=”kvill”;
    String s1=new String(”kvill”);
    String s2=”kv” + new String(“ill”);
    System.out.println( s0==s1 );
    System.out.println( s0==s2 );
    System.out.println( s1==s2 );
      結果為:

    false
    false
    false
      例2中s0還是常量池中”kvill”的應用,s1因為無法在編譯期確定,所以是運行時創建的新對象”kvill”的引用,s2因為有后半部分new String(“ill”)所以也無法在編譯期確定,所以也是一個新創建對象”kvill”的應用;明白了這些也就知道為何得出此結果了。

      4. String.intern():

      再補充介紹一點:存在于.class文件中的常量池,在運行期被JVM裝載,并且可以擴充。String的intern()方法就是擴充常量池的一個方法;當一個String實例str調用intern()方法時,Java查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等于str的字符串并返回它的引用;看例3就清楚了

      例3:

    String s0= “kvill”;
    String s1=new String(”kvill”);
    String s2=new String(“kvill”);
    System.out.println( s0==s1 );
    System.out.println( “**********” );
    s1.intern();
    s2=s2.intern(); //把常量池中“kvill”的引用賦給s2
    System.out.println( s0==s1);
    System.out.println( s0==s1.intern() );
    System.out.println( s0==s2 );
      結果為:

    false
    **********
    false //雖然執行了s1.intern(),但它的返回值沒有賦給s1
    true //說明s1.intern()返回的是常量池中”kvill”的引用
    true
      最后我再破除一個錯誤的理解:

      有人說,“使用String.intern()方法則可以將一個String類的保存到一個全局String表中,如果具有相同值的Unicode字符串已經在這個表中,那么該方法返回表中已有字符串的地址,如果在表中沒有相同值的字符串,則將自己的地址注冊到表中“如果我把他說的這個全局的String表理解為常量池的話,他的最后一句話,“如果在表中沒有相同值的字符串,則將自己的地址注冊到表中”是錯的:

      看例4:

    String s1=new String("kvill");
    String s2=s1.intern();
    System.out.println( s1==s1.intern() );
    System.out.println( s1+" "+s2 );
    System.out.println( s2==s1.intern() );
      結果:

    false
    kvill kvill
    true
      在這個類中我們沒有聲名一個”kvill”常量,所以常量池中一開始是沒有”kvill”的,當我們調用s1.intern()后就在常量池中新添加了一個”kvill”常量,原來的不在常量池中的”kvill”仍然存在,也就不是“將自己的地址注冊到常量池中”了。

      s1==s1.intern()為false說明原來的“kvill”仍然存在;

      s2現在為常量池中“kvill”的地址,所以有s2==s1.intern()為true。

      5. 關于equals()和==:

      這個對于String簡單來說就是比較兩字符串的Unicode序列是否相當,如果相等返回true;而==是比較兩字符串的地址是否相同,也就是是否是同一個字符串的引用。

      6. 關于String是不可變的

      這一說又要說很多,大家只要知道String的實例一旦生成就不會再改變了,比如說:String str=”kv”+”ill”+” “+”ans”;
    就是有4個字符串常量,首先”kv”和”ill”生成了”kvill”存在內存中,然后”kvill”又和” “ 生成 ”kvill “存在內存中,最后又和生成了”kvill ans”;并把這個字符串的地址賦給了str,就是因為String的“不可變”產生了很多臨時變量,這也就是為什么建議用StringBuffer的原因了,因為StringBuffer是可改變的.

    posted @ 2013-08-08 21:57 奮斗成就男人 閱讀(134) | 評論 (0)編輯 收藏

    僅列出標題
    共23頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
    主站蜘蛛池模板: 亚洲国产无套无码av电影| 亚洲天天做日日做天天欢毛片| a毛片成人免费全部播放| 久久久久久久尹人综合网亚洲| 蜜桃成人无码区免费视频网站 | 国产日韩亚洲大尺度高清| 一级毛片免费毛片一级毛片免费| 亚洲H在线播放在线观看H| 免费a级毛片视频| 最近高清中文字幕免费| 免费播放美女一级毛片| 亚洲日本在线看片| 一本色道久久88综合亚洲精品高清| 国产午夜无码精品免费看 | 亚洲人AV在线无码影院观看| 中文字幕在亚洲第一在线| 美女视频黄免费亚洲| 国产一级a毛一级a看免费视频| 亚洲精品亚洲人成在线播放| 亚洲国产婷婷六月丁香| 国产三级免费观看| 真人做A免费观看| 99在线视频免费观看| 亚洲AV无码成人精品区日韩| 亚洲天堂在线播放| 国产精品亚洲综合专区片高清久久久| 在线永久看片免费的视频| 天黑黑影院在线观看视频高清免费 | 国产AV无码专区亚洲Av| 日韩毛片免费在线观看| 91精品手机国产免费| 精品97国产免费人成视频| 日韩亚洲综合精品国产| 亚洲五月综合网色九月色| 亚洲av永久无码精品国产精品 | 亚洲av无码专区国产不乱码| 亚洲成人免费电影| 亚洲av永久无码精品漫画| 久久久久亚洲?V成人无码| 国产精品黄页在线播放免费| 在线永久看片免费的视频|