Привет, ребята Я новичок в java-программировании. Я пытался поэкспериментировать с Java-классами, и то, что я сделал, это то, что я создал переменную экземпляра x, а затем y, которая копирует эти значения x. Затем я определяю конструктор, который принимает значение или x в качестве аргумента. Теперь, когда я пытаюсь напечатать значение y, он дает значение как 0 в то время как или x оно дает 5. Почему проблема происходит? Когда мы используем новое ключевое слово и конструктор, то создается только все поля экземпляра, так что я чувствую, что после того, как мы используемОбъект класса Java Динамическое распределение памяти
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test;
/**
*
* @author Mridul
*/
public class Test {
int x;
int y=x;
Test(int a)
{
x=a;
}
void print()
{
System.out.println(x);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Test ob=new Test(5);
ob.print();
System.out.println(ob.y);
// TODO code application logic here
}
}
Output
5
0
Когда мы используем новое ключевое слово и конструктор, то создается только все поля экземпляра, так что я чувствую как после того, как мы используем
Test ob=new Test(5);
Тогда только все коды в классе (х, у = х) должен работать, и он не должен был создать проблему. Пожалуйста, помогите
для 'int'' x = a' является своего рода * копией *, любое изменение 'a' не отражается на' x' после '=' (и 'int x;' эквивалентно 'int x = 0') –
, но на выходе он дает x = 5 и y = 0 –
... потому что инициализация поля экземпляра запускает операторы конструктора _before_. – Seelenvirtuose