Konwersje rozszerzające i zawężające

Wykorzystaj konwersję rozszerzającą i zawężającą. Wypróbuj zamiany różnych typów prostych między sobą. Szczególną uwagę zwróć na rzutowanie char na int. Jak myślisz, co w ten sposób otrzymasz?

Rozwiązanie poniżej ↓ Nie zaglądaj przed samodzielną próbą rozwiązania!

W tym przypadku Twoje zadanie polegało na zabawie różnymi typami danych przy wykorzystaniu rzutowania i konwersji. Typy liczbowe są proste i były omawiane na lekcji. Jednak spróbujmy bezpośrednio przypisać zmienną typu char , do innej zmiennej typu int.

class ConversionsTask {
  public static void main(String[] args){
	  char a = 'a';
	  int b = a;
	  char c = 101;
	  System.out.println(a + " " + b + " " + c);
  }
}

Mamy tutaj do czynienia z kilkoma dziwnymi rzeczami. W wyniku działania programu powinniśmy otrzymać na konsoli wydruk w postaci "a 97 e". Można sobie pomyśleć, jakim cudem?

Zmiennej a przypisujemy znak 'a', więc jej wyświetlanie jest oczywiste.

Następnie do zmiennej typu całkowitoliczbowego przypisujemy zmienną a, a na ekranie pojawia się liczba 97. Jak to się stało?Jest to po prostu kod znaku 'a' w tabeli ASCII.

Z tym samym zjawiskiem, tylko w odwrotną stronę mamy do czynienia w przypadku zmiennej c. Jej z kolei przypisujemy kod 101, który odpowiada znakowi litery 'e'. Można to zrozumieć jako:

char c = (char)101;

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.

Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.

Uczeń JavaStart

A z typem String to też działa (String --> Integer/Integer --> String)?

Sławek Ludwiczak

Nie, ponieważ String jest tablicą znaków. Można co najwyżej użyć dodatkowych metod do konwertowania String->int i odwrotnie. <pre name='code' class='java'> int a = Integer.parseInt(&quot;123&quot;); Integer b = Integer.parseInt(&quot;123&quot;); //tutaj zachodzi dodatkowo autoboxing int-&gt;Integer lub String s = Integer.toString(123); </pre>

bartek

czym się różni Integer od int ?

Lolo

Integer to klasa a int to typ prymitywny.