Konwersja (implicit casting) i Rzutowanie (explicit casting)
- Konwersją typów (implicit conversion) – czyli automatycznym dopasowaniem typu danych przez kompilator (np. int → double).
- Rzutowaniem typów (explicit casting) – czyli ręcznym wymuszeniem zmiany typu (np. (int) 3.14).
W JavaScript (Conversion & Coercion). W JavaScript typy są dynamiczne, więc coercion (niejawna konwersja) jest bardzo częste i może być zaskakujące (np. "2" + 2 → "22"). W Javie typy są statyczne, więc konwersje są bardziej przewidywalne – niejawna konwersja działa tylko w ramach kompatybilnych typów (np. int na long), a w innych przypadkach trzeba rzutować jawnie.
Cel konwersji | JavaScript (dynamiczny) | Java (statyczny) | Uwagi |
---|---|---|---|
String → Integer (liczba całkowita) | Number("123") parseInt("123") | Integer.parseInt("123") | W Javie wyjątek NumberFormatException przy błędnym formacie |
String → Double (liczba zmiennoprzecinkowa) | Number("12.5") parseFloat("12.5") | Double.parseDouble("12.5") | W Javie wymaga kropki jako separatora dziesiętnego |
Integer → String | String(123) 123.toString() | String.valueOf(123) Integer.toString(123) | W Javie + "" też działa |
Double → String | String(12.5) 12.5.toString() | String.valueOf(12.5) Double.toString(12.5) | |
Integer → Double | automatycznie | double d = 123; | W Javie to tzw. implicit widening |
Double → Integer | automatycznie (może obciąć) | int i = (int) 12.5; | Wymaga jawnego rzutowania w Javie |
Boolean → String | String(true) | String.valueOf(true) | |
String → Boolean | Boolean("true") | Boolean.parseBoolean("true") | W Javie tylko "true" (małe litery) daje true |
Automatyczna konwersja liczbowa | "2" * 2 → 4 "2" + 2 → "22" | brak automatycznej konwersji String→Number | W Javie trzeba jawnie parsować |
Jawne rzutowanie typów | (Number) zmienna | (typ) zmienna np. (int) 3.14 | W Javie wymaga zgodności lub konwersji możliwej przez kompilator |
Przykład - java
public class ConversionExample {
public static void main(String[] args) {
String a = "123";
int b = Integer.parseInt(a); // String → int
String c = String.valueOf(b); // int → String
double d = Double.parseDouble("12.5"); // String → double
boolean e = Boolean.parseBoolean("true"); // String → boolean
System.out.println("int b: " + b);
System.out.println("String c: " + c);
System.out.println("double d: " + d);
System.out.println("boolean e: " + e);
}
}
Przykład - javascript
public class ConversionExample {
public static void main(String[] args) {
String a = "123";
int b = Integer.parseInt(a); // String → int
String c = String.valueOf(b); // int → String
double d = Double.parseDouble("12.5"); // String → double
boolean e = Boolean.parseBoolean("true"); // String → boolean
System.out.println("int b: " + b);
System.out.println("String c: " + c);
System.out.println("double d: " + d);
System.out.println("boolean e: " + e);
}
}