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 奋斗成就男人 阅读(503) | 评论 (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 奋斗成就男人 阅读(1730) | 评论 (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 奋斗成就男人 阅读(183) | 评论 (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 奋斗成就男人 阅读(252) | 评论 (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 奋斗成就男人 阅读(161) | 评论 (0)编辑 收藏

JAVA 对象拷贝

     摘要: JAVA 对象拷贝 为什么需要有对象拷贝? 对象拷贝相对的自然是引用拷贝。java初学者经常会问,我这个方法要改变一个对象的属性,可以把参数传进去了,为什么没有改变了? ——基本数据类型传值,而对象传引用或引用的拷贝。 而有时候我们要获取到一个当前状态的对象复制品,他们是两个独立对象。不再是引用或者引用拷贝(实质都是指向对象本身)。就是说a是b的拷贝,b发生变化的时候,不要...  阅读全文

posted @ 2013-08-08 23:26 奋斗成就男人 阅读(163) | 评论 (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 奋斗成就男人 阅读(192) | 评论 (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 奋斗成就男人 阅读(182) | 评论 (0)编辑 收藏

字节流与字符流转换

     摘要: 字节流与字符流之间的区别却可以联系起来,这就是表中的两个类InputStreamReader和OutputStreamWriter。InputStreamReader负责把字节输入流转换为字符输入流,OutputStreamWriter负责把输出字节流转换为输出字符流。下面来看看如何进行转换。1.字节输入流转换为字符输入流InputStreamReader是字节流通向字符流的桥梁,它使用指定的ch...  阅读全文

posted @ 2013-08-08 22:08 奋斗成就男人 阅读(5223) | 评论 (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 奋斗成就男人 阅读(132) | 评论 (0)编辑 收藏

仅列出标题
共23页: First 上一页 6 7 8 9 10 11 12 13 14 下一页 Last