java中为什么0x00不会输出空,而是输出的小方块。不好意思,本人初学java,希望高手回答,谢谢!

如题所述

Eclipse 提供的 Console 视图并不完全不等同于 System.out,这个 Console 视图本身能提供输入功能,类似在 DOS 命令行做的一样,但毕竟是个图形界面模拟的,有些瑕玼,比如如果你有东西要输入那么第一次输入之前你需要手工把输入光标移到最后,否则当我们输入中文时会第一个汉字会出现奇怪的错误。

一个控制字符因为是不可见的字符,所以在 Console 这个图形界面上会被认为是这个字符在当前使用的字体中找不到对应的符号而显示成方框,所有字体都不可能为一个不能够显示出来的字符提供图形式的字形,对吧?在 Windows 上显示成方框就是字体的问题,而在 Linux/MacOS 上字体中找不到字符时会显示成一个方框,里面包括4个小方形,每个方形都是这个字符的内部编码的16进制表示形式,它比 Windows 的好处是,至少你作为技术人员还能通过16进制编码知道它是什么字符,而 Windows 上一片空白你不知道它到底是什么字符。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-07
这是字符串编码问题。可以看看源码(或者你可以反过来,已知一个String,然后调用getBytes方法看看构成这个String的byte数组),用byte数组构造String的时候,会把byte数组解码成char数组,然后就构成String了。new String-->StringCoding.decode-->StringDecoder.decode-->CharsetDecoder.decode-->CharsetDecoder.decodeLoop,最终把byte数组解码成char数组是在CharsetDecoder.decodeLoop方法里完成的,但这是个抽象方法,它的实现类有一大堆,依据你系统的默认编码,假设是UTF-8,那就仔细看看sun.nio.cs.UTF_8这个类的decodeLoop实现,不过这个类貌似没开源,所以只能反编译出来看看,或者网上找找。。我反正是没看明白这个decodeLoop。。你可以研究研究
第2个回答  推荐于2018-03-19
0x00表示null 表示控制字符,
如果输出到cmd中,显示为空,但在myeclipes控制台输出显示小方框本回答被网友采纳
第3个回答  2013-01-07
public static void main(String[] args){
byte[] enp = new byte[]{0x00,0x30,0x31,0x00,0x41};
String str = new String(Arrays.toString(enp));//这里,数组转化成字符串的时候要调用数组自己的转化方法,否则就会出现这种奇怪输出。
System.out.println(str);
}

我好像错了。。

输出方块应该是为了和空格区分开来吧。本回答被网友采纳

java中为什么0x00不会输出空,而是输出的小方块。不好意思,本人初学java...
0x00表示null 表示控制字符,如果输出到cmd中,显示为空,但在myeclipes控制台输出显示小方框

在JAVA中经常出现0X00之类的表示什么意思???
0x开头表示该数为16进制数。

java中4个字节0x00组成的16进制数,和0有什么区别?
不过,JAVA里面,byte[]就是byte[],要转成int,才能比较。

Java程序怎么传递16进制指令0x00到默认已打开的LPT1端口
byte[] b = new byte[10];b[0] = (byte) 0xf8;b[1] = (byte) 0xf9;b[2] = (byte) 0x0f;b[3] = (byte) 0xff;b[4] = (byte) 0x24;b[5] = (byte) 0x00;b[6] = (byte) 0xfe;b[7] ...

java 俄罗斯方块
java 俄罗斯方块 170 请高手指教当方块到达底部时怎么样固定方块并且让新的方块产生并且下落这个过程我暂时没法实现请高手帮忙指点迷津希望在详细讲解其过程并且通俗易懂谢谢我是一个初学者所以希望高手们... 请高手指教 当方块到达底部时 怎么样固定方块 并且让新的方块产生并且下落 这个过程我暂时没法实现 请高手...

JAVA中byte类型的介绍。 谢谢
上述代码,最后会输出-56。原因如下:200的二进制表示是111001000,由于int是32位的二进制,所以在计算机中,实际上是00000000000……111001000,当int转成byte的时候,那么计算机会只保留最后8位,即11001000。然后11001000的最高位是1,那么表示是一个负数,而负数在计算机中都是以补码的形式保存的,所以...

求java高手解答
可选flags 是修改输出格式的字符集。有效标志集取决于转换类型。可选width 是一个非负十进制整数,表明要向输出中写入的最少字符数。可选precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。参考JDK API java.util.Formatter 类 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 ...

java的数字二进制输出
二进制以B开头,那就b代表下看咯,不行再去查。事实也证明是不行的,查了一下,还真没有二进制的输出形式。Integer 类倒是有相应的方法:static StringtoBinaryString(int i)以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。System.out.print(Integer.toBinaryString(x));...

java .int R = (red << 16) & 0x00FF0000;什么意思
&的是与操作 按位与 例如 输出结果分别为 0、1、0 所有的按位操作都是二进制数、十六进制数也一样操作前线准换成二进制数 System.out.println(1 & 0);System.out.println(1 & 1);System.out.println(0 & 0);可以猜一下 \/\/ 0011 & 0100= 0000 十进制3&4=0 \/\/ 0100 & 0110= ...

在java中 如何将得到的String转换为Short型 急。。
这在lang包中,系统自动加载。public class Zh {public static void main(String[] args) {\/\/建立StringString b="4";\/\/用基本数据类型的对象包装器将String转换为shortShort a=new Short(b);\/\/输出aSystem.out.println(a);}}这样就成功的将String转换为short,希望能帮到你。

相似回答