当我试图打印未初始化的静态字符数组时,它会给出运行时错误(Null指针异常),而未初始化的静态int数组会给出Null值。为什么?
public class abc {
static int arr[];
static char ch[];
public static void main(String[] args) {
System.out.println(ch); //it gives null pointer exception at run time
System.out.println(arr); //it gives output as "null".
}
}
这是两种不同的方法,它们的API完全描述了行为。
public void println(对象x)
调用字符串。valueOf,如果x为null,则返回“null”。
见:
public void print(char[]c)
调用print(char[]c)方法,如果c为null,该方法将抛出NullPointerException。
见:
答案存在于PrintWriter
源代码中(例如System.out
)。
首先,未初始化的数组作为参考变量,默认值为null
。
println(char[])
(最终)尝试调用。传入数组上的长度
。它为null,导致NullPointerException
println(char[])
(最终)调用write(char[])
:
public void write(char buf[]) {
write(buf, 0, buf.length);
}
没有超负荷的println
匹配int[]
,但有一个println(对象)
。在那里,它(最终)尝试String。valueOf
,传递null
引用,因此字符串。valueOf
获取null
并返回字符串
“null”
println(对象)
调用print(对象)
:
public void print(Object obj) {
write(String.valueOf(obj));
}
系统。out
是PrintStream
的一个实例,这个类有几个重载的println
方法。就你而言:
系统。出来println(ch)
正在使用公共void println(char x[])第二种方法是使用
String.valueOf(x);
要获取我们要打印的对象的字符串表示形式,value eOf
方法的代码看起来像
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
所以它是null安全的(如果引用持有null
,将返回字符串"null"
)。
第一种方法是在某种程度上使用
public void write(char cbuf[]) throws IOException {
write(cbuf, 0, cbuf.length);
// ^^^^^^^ this throws NPE
}
因为cbuf
是null
cbuf.length
将抛出NullPointerExctive,因为null
没有长度
(或任何其他)字段。
问题内容: 我正在尝试将字符串转换为整数数组,以便随后可以对它们执行数学运算。我在以下代码方面遇到麻烦: 这给了我一个“无法转换的类型”错误,要求:int []发现:char我还尝试了其他一些方法,例如Character.getNumericValue,并且直接对其进行了直接分配,而没有进行任何修改。在那种情况下,无论我使用哪种转换方法或(!)字符串的实际值是什么,它总是输出相同的垃圾“ [I @
是否可以将 ?如果是这样 - ? 我目前正在做一个项目,我需要<code>创建一个包含<code>字母表的字符数组。我当前的创建了一个(应该将
我正在通过做微控制器项目来自学C++。我当前的项目是使用一对或Adafruit羽毛分组无线电。无线电数据包的库函数需要一个C样式的字符串(我相信),我理解它是一个char的数组。 我已经设置了一个枚举来反映接收方的各种操作,并希望将该状态发送回发送方。所以我想把枚举变成char的数组。 在搜索将枚举转换为char数组的方法时,最简单的方法(对我来说)是将枚举变量传递给带有switch语句的函数,该
问题内容: 据我了解,字符是单个字符,即字母, 数字 ,标点符号,制表符,空格或类似内容。因此,当我这样做时: 输出1正是我所期望的。那为什么当我这样做时: 我最终的输出是 50 吗? 问题答案: 之所以得到它,是因为它添加了char 的ASCII值。您必须先将其转换为int。
刚从C开始,我想知道是否有人能解释一些事情。 我相信你可以用下面的方法初始化一个字符数组 这将创建一个字符数组,其值为。 但如果我真的创造了这个: 会创建一个数组,以及指向该数组的指针吗? 例如:将指向内存中的第一个元素,以及数组中的其他元素?
描述 (Description) C库函数int putchar(int char)将参数char指定的字符(unsigned char)写入stdout。 声明 (Declaration) 以下是putchar()函数的声明。 int putchar(int char) 参数 (Parameters) char - 这是要写的字符。 这是作为int推广传递的。 返回值 (Return Valu