字符串中单词逆序的实现

在Java中可以用压栈/弹栈的方式:

import java.util.Stack;

public class StackTest {
    public static void main(String argv[]) {
        Stack<String> stack = new Stack<String>();
        for(String s : "I have a round peach".split(" ")) {
            // 按字符串原顺序压栈
            stack.push(s);
        }

        while(!stack.empty()) {
            // 弹栈并输出
            System.out.print(stack.pop() + " ");
        }
    }
}

运行后系统将输出 "peach round a have I "。


Java中十六进制字符串与字节数组的相互转换

原理很简单,直接贴源代码吧。

/**
 * @author wangtao
 * @version 2008.8.14
 */
public class Util {
    public static char[] hexDigits = 
    {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    /**
     * @notes 字节数组转化为字符串
     * @param bytes
     * @return String
     */
    public static String toHexString(byte[] bytes) {
        char[] chars = new char[bytes.length * 2 …

因字符编码导致的编译不通过

从网上下了QR标准的二维码库,打算直接调用里面的类来实现。在Fedora下Java编译通过,只是提示了一下使用了过时的方法。但我把代码复制到Windows里时,却编译不同过,出现了近1k个错误,代码完全一样,只是操作系统不同就会出问题?

回想在Windows里用UltraEdit打开时,提示文件不是"DOS Format",会不会和文字编码有关?Linux用的是UTF-8的编码,而Windows用的是GBK的编码,难道字符编码必须要和本地相同才能编译通过么?试一下,于是把代码用UltraEdit转换成了GBK编码,再次编译,终于正常通过。

看来有时编译不通过不一定是语句问题,连文件的编码也有可能出问题,如果在不同系统中出现类似上面一个正常一个错误的情况,可以考虑看是不是因为文件的编码和系统默认的编码有差异而引起的。


Linux中设置Java环境变量

从网上找资料,自己总结一下:

  1. 从java.sun.com上下载jdk,解压到某个目录,比如"/usr/local/java/jdk1.x.x/"

  2. 修改~/.bashrc文件,在文件末尾加入以下几行:

export JAVA_HOME=/usr/java/j2sdk1.x.x
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

最后重启终端或执行source ~/.bashrc即可。