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("123"); Integer b = Integer.parseInt("123"); //tutaj zachodzi dodatkowo autoboxing int->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.