首先确认下 称Player player[]为数组对象 有问题吗?还是叫数组引用? 还是别的 ? - -!! player长度至少大于 1 ,然后需要清空 ,我做如下处理:
public void clearPlayers(){
for(int i = 0; i < player.length;i++){
player[i] = null;
}
player= null;
}我不知道这是不是多此一举。 或者说 只要 player = null 就可以了
public void clearPlayers(){
for(int i = 0; i < player.length;i++){
player[i] = null;
}
player= null;
}我不知道这是不是多此一举。 或者说 只要 player = null 就可以了
player[i] = null;
}
这个之后 player 还不是空,它还有几个对Player的引用;
你再 player = null;后你这个引用就是空了;
player是一个数组引用,它包含几个Player的引用;
public static void main(String[] args) {
A[] a = new A[4];
if(a[1]== null){
System.out.println( "对象数组中的引用为空");
}else{
System.out.println( "对象数组中的引用不为空");
}
if(a == null){
System.out.println( "对象数组引用为空");
}else{
System.out.println( "对象数组引用为空");
}
a = null;
if(a[1]== null){ // 这次将有异常。
System.out.println( "对象数组中的引用为空");
}else{
System.out.println( "对象数组中的引用不为空");
}
if(a == null){
System.out.println( "对象数组引用为空");
}else{
System.out.println( "对象数组引用为空");
}
}
}
class A{
int i = 100;
}测试结果:
对象数组中的引用为空
对象数组引用为空
Exception in thread "main" java.lang.NullPointerException
at com.keeya.test.Test.main(Test.java:17)
public static void main(String[] args) {
A[] a = new A[4];
if(a == null){
System.out.println( "对象数组引用为空");
}else{
System.out.println( "对象数组引用不为空");
}
if(a[1]== null){
System.out.println( "对象数组中的引用为空");
}else{
System.out.println( "对象数组中的引用不为空");
}
a = null;
if(a == null){
System.out.println( "对象数组引用为空");
}else{
System.out.println( "对象数组引用不为空");
}
if(a[1]== null){ //这里将会出现异常
System.out.println( "对象数组中的引用为空");
}else{
System.out.println( "对象数组中的引用不为空");
}
}
}
class A{
int i = 100;
}测试结果:
Exception in thread "main" java.lang.NullPointerException
at com.keeya.test.Test.main(Test.java:22)
对象数组引用不为空
对象数组中的引用为空
对象数组引用为空
...
player= null;的话原来的数组里面的内容仍然不是null,这样有可能产生内存漏.而且其它地方也可能引用该数组