【发布时间】:2013-12-18 08:44:06
【问题描述】:
我有两种方法都可以在数组上打印内容,一种被声明为public void,另一种被声明为static void。但是,当我从主程序类调用这些方法时,它们会表现出不同的行为。
公共无效:
public void listStudent() {
for (int i = 0;i < 10;i++) {
if (studentNamesArray[i] != null) {
System.out.println(studentNamesArray[i]);
for(int y = 0;y < 3;y++) {
System.out.println(studentMarksArray[i][y]);
}
}
}
}
静态无效:
static void printArrays() {
for (int i = 0;i < 10;i++) {
if (studentNamesArray[i] != null) {
System.out.println(studentNamesArray[i]);
for(int y = 0;y < 3;y++) {
System.out.println(studentMarksArray[i][y]);
}
}
}
}
public void 调用时会导致 nullPointerEception 错误,而 static void 调用不会打印任何内容(如预期的那样)。在这两种情况下,数组都是空的,但是如果我存储一个值然后删除该值,public void 方法则不会按预期打印任何内容。即public void 仅在创建对象之前调用它会导致错误,即使该对象随后立即从数组中删除。
为什么这些方法的行为方式不同?声明方法static void 是否被认为是不好的做法?
【问题讨论】:
-
你怎么称呼
public void?显示你的方法调用代码。 -
为什么是
i < 10?使用i < studentNamesArray.length -
public 和 static 是两个完全不同的东西
-
static和public是两个完全不同的东西。在继续其他任何事情之前,您需要学习它们。静态:stackoverflow.com/q/413898/1005102 公开:stackoverflow.com/q/215497/1005102 -
你为什么不显示你的
main方法,你在哪里调用这些方法。
标签: java arrays class oop object