Quantcast
Viewing all articles
Browse latest Browse all 83164

Blok w konstruktorze i dziwne wartości

Mam taki kod:

import java.util.*;

public class Test {
	
	private int a;
	private String napis;

	//konstruktor
	public Test(){
		this(1,"pusto");
	}
	
	//konstruktor nr2 z argumentami
	public Test(int a, String n){

		
		this.a = a;
		this.napis = n;
		
		{
			a=666;
			napis="lalala";
		
		}
	}

	
	public int getA(){
		return this.a;
	}
	

	public String getNapis(){
		return this.napis;
	}


	public void setA(int x){
		this.a = x;
	}

	public void setNapis(String n){
		this.napis = n;
	}
	
	public static void main(String[] args){
		
		Test t1 = new Test();
		//t1.setA(333);
		//t1.setNapis("Blablabla");		
		System.out.println("a="+t1.getA()+", napis="+t1.getNapis());

		
	}
	
}

Otrzymuję wynik:

a=1, napis=lalala

Dlaczego zmienna 'a' nie jest równa 666 ? Napis się zmienił poprzez blok w konstruktorze 2-argumentowym.

Co dziwne, gdy zmienię argument przekazywany w tym konstruktorze z 'a' na 'z' jest ok:

	//konstruktor nr2 z argumentami
	public Test(int z, String n){

		
		this.a = z;
		this.napis = n;
		
		{
			a=666;
			napis="lalala";
		
		}
	}

Wiem, że jak tam zmienie parametr konstruktowa z 'n' na 'napis' to też będzie inaczej, ale nie potrafię tego sobie wytłumaczyć.


Viewing all articles
Browse latest Browse all 83164