经过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String

通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
使用平台的默认字符集,这句话怎么理解?

Properties p = System.getProperties();
System.out.println(p.get("file.encoding"));//输出GBK

实际上构造字符串的时候又是根据ASCII码表,代码如下::
byte[] arr = {65,66,67,68};
System.out.println(new String(arr));
//输出ABCD


这个怎么回事呢??谢谢赐教
------解决方案--------------------
String s = "中国人 text here";  
byte[] b = s.getBytes("UTF-8");  
            byte[] c = s.getBytes("GBK");  

------解决方案--------------------
        String str = "ABCD";
        byte[] arr2 = str.getBytes();
        for (byte byt : arr2) {
            System.out.print(byt+"  ");
        }

结果 65  66  67  68
猜测ASCII码范围内的字符,不受编码类型的影响。
------解决方案--------------------
我们常见的很多字符集中,在0~127这个范围也就是最早的ASCII范围内,是和ASCII完全或部分兼容的。
至少在常见的可见字符(也就是键盘上那些字母,数字,符号),是和ASCII完全兼容的。
也就是说,这些字符集中,如果遇到二进制的01000001(十进制65,十六进制0x41)这个字节,都代表字母A。

具体到GBK来说,它单字节部分,也就是高位(左边)第一个bit是0的,代表这个字符,只占用1个字节完全和ASCII兼容(UTF-8也是类似的方式)
引用
字符有一字节和双字节编码,00–7F范围内是一位,和ASCII保持一致,此范围内严格上说有96个文字和32个控制符号。

http://zh.wikipedia.org/wiki/GBK