编译后的Java字符

时间:2014-10-24 16:08:42

标签: java io

刚刚了解.class文件的这种行为。

说我有这段代码:

public class Demo
{
    public static void main(String...args)
    {
        char ch = 'A';
    }
}

如果我编译文件并使用cavaj反编译器打开.class文件,它会显示如下内容:

public class Demo
{

    public Demo()
    {
    }

    public static transient void main(String args[])
    {
        byte byte0 = 65;
    }
}

这里,char被写为byte。但是如果我打印这个字符并写下这样的代码:

public class Demo
{
    public static void main(String...args)
    {
        char ch = 'A';
        System.out.println(ch);
    }
}

反编译后,我得到了这段代码:

import java.io.PrintStream;

public class Demo
{

    public Demo()
    {
    }

    public static transient void main(String args[])
    {
        char c = 'A';
        System.out.println(c);
    }
}

我想知道两件事。首先,为什么PrintStream类已被编译器显式导入。第二,为什么' char'被写成' char'而不是'字节'与前一种情况一样,或者如何打印字符会改变行为?

提前致谢:)

0 个答案:

没有答案