存储在存储器中的字符串

时间:2017-08-30 01:14:22

标签: java memory bits

我正在学习位以及内存如何存储整数和其他数据类型。我知道int a = 11将作为1011位存储在内存中。如何将String b = "11"存储为位。

2 个答案:

答案 0 :(得分:1)

实际上,大多数机器上的int存储为

00000000000000000000000000001011

它总是使用语言/机器上的字大小(或大多数情况下为32位)。

字符串是一个对象。它具有各种属性,语言之间的实现可能有很大差异。对于主要部分,实际的字符串数据,有两种相当典型的存储方式:分别存储长度或空终止。

无论哪种方式确定长度,字符都存储为字节序列。每个字符的大小取决于语言/编译器设置等。为了支持非英语语言和特殊字符,通常每个字符存储16位,但较旧的语言通常仍然使用8位。

字符编码基于旧的ASCII表,但更新的规范涵盖了更多。查看UTF-8和UTF-16。

但是,为了理解基础知识,ASCII表为我们提供了一个可去的地方。字符串中的每个字符都由一个数字定义,然后该数字以二进制编码,就像int。

http://www.asciitable.com/

字符“1”由ASCII码49(十进制)表示,二进制为00110001.整个字符串可能如下所示:

001100010011000100000000

包括空终止符。

答案 1 :(得分:1)

public static void main(String[] args) {
    for(final byte b : "11".getBytes()) {
        String asBinary = String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0');
        System.out.print(asBinary);
    }
}