• JavaScript对象及函数机制

    看Angular.js时候感觉JavaScript水平吃紧,所以需要充点电咯!我个人对JavaScript这语言的看法是,既简单有复杂。简单在语言特性少,复杂在灵活性太大。花了几天看大致看完了《JavaScript语言精粹》。这本书也大致定位为JavaScript的进阶读物,所以还是有一些收获的。当然书中也还是有一些不清楚甚至不正确的东西。

    一切都还是要从proto变量开始,这是JavaScript很多语言特性的基础。

    1. 对象是“名/值”对的集合,JavaScript中的对象都有一个proto变量。
    2. 对象字面量的proto连接到Object.prototype;函数对象的proto连接到Function.prototype。
    3. Function.prototype.proto连接到Object.prototype。

    4. Object.prototype本身是一
    【查看更多】
  • Java的字符编码

    想到这个问题的缘由是如下这段代码:

        String inputStr = "abc";
        byte[] input = inputStr.getBytes();
        System.out.println(input.length);
    

    按照我的常识,Java的String类使用的是utf-16编码。在BMP平面的字符都是可以使用两个字节表示的,四个字节的情况并不常见。对于例子中的inputStr,它应该占用六个字节的存储空间。但是这段程序的执行结果是3。

    这是为什么呢?原来String类还有一个getBytes(String charset)方法。直接调用String.getBytes()相当于调用String.getBytes(Charset.getDefaultCharset())。在中文操作系统下,一般的默认编码都是GBK。

    首先需要明确的是,中文编码GB18030GBKGB2312ASCII,这里的大于号是兼容包含的含义。在三个中文编码标准中,除了128个ASCII是一个字节外,其他都是两个字节。所以中文编码严格算来也是变长编码格式。然而这些中文… 【查看更多】