为什么 char、double 和 float 的默认值打印成这样?
Why are the default values of char, double and float printed like that?
我一直在尝试找出 当我打印一个使用默认值 [=12] 初始化的 char 变量时,为什么我得到 ' '
=]?
我也知道 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 的默认值打印为“”。对于 float,它是 "0.0",对于 double,它是 "0.0"。简而言之,我的问题是:
为什么我得到的是 ' ' 而不是 '\u0000' 或 char 的 null(或类似的东西)?为什么不打印 float 和 double 默认值中存在的后缀? (比如 "0.0f" 和 "0.0d")
注意:还有其他问题,例如:Primitives/Objects Declaration, default initialization values and what's the default value of char?,但与我的问题不同,这些问题仅讨论它们的默认值,而不讨论打印它们。
我现在想到的事情:
在您的代码中您错过了最后的“}”,用于 class 检查。
你试过打印吗
System.out.println(obj.c); // Without the String
添加字符串可能会读取 null ass a '' 和 d 和 f 作为格式的一部分,因此它只打印 0.0。
当您为某些值打印 ascii 代码时 java 编译器将其读取为预期值,我的意思是当您打印 char 时它可能会打印“\u0000” , 但当编译器读取它时,他将其设为 '',与 float 和 double 值的格式相同。
在上下文中就像打印 \n,你只是不能因为被解释为分号。
这些后缀在 java 代码之外没有任何意义,因此它们永远不会打印到控制台、文件或 Socket
.
“\u”前缀也一样(java确实内部使用Unicode),当你打印一个char值时,你实际上是在打印相应的字符.
默认 character
值 '\u0000' 不为空,并且是不可打印的字符,根据您的系统给出不同的输出:空,a正方形...
如果你尝试打印一个,系统应该输出一些东西,'something' 将取决于平台,但它不应该忽略你的打印,即使它无法显示正确。
我一直在尝试找出 当我打印一个使用默认值 [=12] 初始化的 char 变量时,为什么我得到 ' '
=]?
我也知道 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 的默认值打印为“”。对于 float,它是 "0.0",对于 double,它是 "0.0"。简而言之,我的问题是: 为什么我得到的是 ' ' 而不是 '\u0000' 或 char 的 null(或类似的东西)?为什么不打印 float 和 double 默认值中存在的后缀? (比如 "0.0f" 和 "0.0d")
注意:还有其他问题,例如:Primitives/Objects Declaration, default initialization values and what's the default value of char?,但与我的问题不同,这些问题仅讨论它们的默认值,而不讨论打印它们。
我现在想到的事情:
在您的代码中您错过了最后的“}”,用于 class 检查。
你试过打印吗
System.out.println(obj.c); // Without the String
添加字符串可能会读取 null ass a '' 和 d 和 f 作为格式的一部分,因此它只打印 0.0。
当您为某些值打印 ascii 代码时 java 编译器将其读取为预期值,我的意思是当您打印 char 时它可能会打印“\u0000” , 但当编译器读取它时,他将其设为 '',与 float 和 double 值的格式相同。 在上下文中就像打印 \n,你只是不能因为被解释为分号。
这些后缀在 java 代码之外没有任何意义,因此它们永远不会打印到控制台、文件或 Socket
.
“\u”前缀也一样(java确实内部使用Unicode),当你打印一个char值时,你实际上是在打印相应的字符.
默认 character
值 '\u0000' 不为空,并且是不可打印的字符,根据您的系统给出不同的输出:空,a正方形...
如果你尝试打印一个,系统应该输出一些东西,'something' 将取决于平台,但它不应该忽略你的打印,即使它无法显示正确。