Szkolenia programowania we Wrocławiu
Kurs Java Podstawy - rozszerzony

Rozwiązanie 1.6

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.

public class Konwersje{
  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;

Komentarze

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.


int a = Integer.parseInt("123");
Integer b = Integer.parseInt("123"); //tutaj zachodzi dodatkowo autoboxing int->Integer
lub
String s = Integer.toString(123);
bartek

czym się różni Integer od int ?

Lolo

Integer to klasa a int to typ prymitywny.