当我打印一个使用默认值' '
初始化的char变量时,我一直试图找出为什么我得到'\u0000'
?
另外我知道float和double有一个default value of "0.0f" and "0.0d",但是当我打印它们的默认值后缀" f"和" d"不打印。那么为什么这些后缀没有打印出值?
以下是代码:
class Check{
char c;
float f;
double d;
public static void main(String a[]) {
Check obj = new Check();
System.out.println("Default value of char : " + obj.c);
System.out.println("Default value of float : " + obj.f);
System.out.println("Default value of double: " + obj.d);
}
}
在char的默认值代码中打印为' &#39 ;.对于浮点数,它是" 0.0" ,而对于double," 0.0" 。简而言之,我的问题是: 为什么我会得到一个' '而不是' \ u0000'或者为null(或类似的东西)为char?为什么不打印float和double的默认值中出现的后缀? (比如" 0.0f" 和" 0.0d" )
注意:还有其他问题,例如:Primitives/Objects Declaration, default initialization values和what's the default value of char?,但与我的问题不同,这些问题只讨论了默认值,而不是打印它们。
答案 0 :(得分:3)
这些后缀在java代码之外没有任何意义,因此它们永远不会打印到控制台,文件或Socket
。
同样适用于" \ u"前缀(java 内部使用Unicode),当您打印char值时,实际上是在打印相应的字符。
默认character
值' \ u0000' 不为空,并且是不可打印的字符,根据您的系统提供不同的输出:空,a平方...
如果你试图打印一个,系统应该输出一些东西,'某些东西'将取决于平台,但它不应该忽略您的打印,即使它无法正确显示它。
答案 1 :(得分:-2)
现在我想到的事情:
在您的代码中,您会错过最后的“}”,类为Check。
您是否尝试打印
System.out.println(obj.c); // Without the String
添加字符串可能会读取null ass a''和d和f作为格式的一部分,因此它只打印0.0。
当您为某些值打印ascii代码时,java编译器将其作为预期值读取,我的意思是,当您打印char时,它会打印出一个“\ u0000”,但是当编译器读取它时使它成为'',与float和double值的格式相同。 在上下文就像打印\ n,你只是因为被解释为分号而不能。