Значения по умолчанию для определенных пользователем объектов в Java 8 - PullRequest
0 голосов
/ 24 мая 2018

Так что я немного запутался, вот и все, если я просто упускаю что-то действительно очевидное, но, надеюсь, это простой вопрос

Я создал пользовательский объект с двумя конструкторами, по умолчанию конструктор no arg иконструктор, который принимает целое число в качестве аргумента

Затем я создал ссылочную переменную var в другом классе, не создавая объект, так что-то вроде этого

public class A{
     int num;

     public A{}
     public A(int num){this.num = num;}
}

public class B{
  A a;
}

Итак, вот мой вопрос,в классе B переменная экземпляра a , насколько я понимаю, должна получить значение по умолчанию null , так как это ссылка на объект, но вместо этого я получаю значение по умолчанию 0

глядя на мой код, я знаю, что это поведение вызвано типом параметра int param в конструкторе моего класса *

public A(int num){this.num = num;}

Почему это происходит?почему не ноль?

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 мая 2018
public class A{
    int num;
   public A(){
    }
  public A(int num){this.num = num;}
}

public class B {
 A a;
}

public class Main {
    public static void main(String[] args) {
       B b = new B();
      System.out.println(b.a.num);//Will Throw Null pointer exception if you 
      try to access a,in any case it will not be 0
   }
}
0 голосов
/ 24 мая 2018

если вы скажете

B b = new B();
// b.a == null #TRUE
b.a = new A();
// b.a == null # FALSE
// b.a.num == 0 #TRUE
...