Wprowadzenie do konwersji typów w Javie

Kiedy zarówno zmienne, jak i stałe różnych typów zostaną połączone w wyrażenie, można je zmienić w podobny typ. Ta technika przekształcania jednego predefiniowanego typu w inny jest nazywana konwersją typów w Javie.

Konwersja typu

Istnieją 2 różne typy konwersji, których używamy w językach programowania.

1. Implikowana konwersja typu

Jeśli konwersja typu jest przeprowadzana natychmiast przez kompilator bez udziału programisty, konwersja typu jest znana jako niejawna konwersja typu. Kompilator zasadniczo zachęca każdy operand w kierunku typu danych największego operandu. Podczas konwersji danych nie dochodzi do utraty danych. Konwersja ilości o mniejszym rozmiarze, o wiele większej, może być domyślną konwersją. Transformacja danych typu liczb całkowitych na zmiennoprzecinkowe.

float i=0;
int j=10;
i=j;

// Może to być niejawna transformacja, ponieważ liczba zmiennoprzecinkowa może być większa niż liczba całkowita, dlatego nie ma braku danych, a także nie ma wyjątku.

2. Jawna konwersja typu

Konwersja typu, którą można wymusić za pomocą programatora, jest znana jako konwersja typu jawnego. zasadniczo programista wyraża wyrażenie, aby stać się określonego typu. Jawna transformacja typu może być znana jako rzutowanie typu. Utrata danych może, ale nie musi wystąpić podczas konwersji danych. Dlatego istnieje prawdopodobieństwo utraty szczegółów. może zgłosić błąd, jeśli być może spróbuje wykonać bez rzutowania. Przekształcenie większej liczby na mniejsze może być jawną konwersją.

float k=123.456
int i= (int) k

// może to być Jawna konwersja, a także (int) to typecast, operator. W tym momencie możemy uniknąć wyjątku, ale widać widoczną utratę danych. tj. i = 123

// .456 można upuścić w procesie konwersji

Wpisz konwersję w Javie

Podobnie jak inne języki programowania, istnieją 2 rodzaje konwersji w Javie:

Konwersja typu niejawnego

  • Na ogół nazywamy to konwersją poszerzającą i można to zrobić automatycznie, ponieważ przechodzimy na szersze typy danych. Więc jeśli mamy 32-bitową liczbę całkowitą i chcemy przejść do 64-bitowej liczby całkowitej, to jest ona szersza. Tak więc wartość można bezpiecznie przenieść, aby można ją było wykonać w sposób domyślny. Kompilator musi podjąć decyzję, w jaki sposób dokonać tych konwersji, a zasady są dość proste.
  • Jeśli mamy wyrażenie z wieloma (Mieszanymi) rozmiarami liczb całkowitych, jeśli mamy krótkie i długie, bez względu na największy rozmiar liczby całkowitej, na co rzeczy to przekonwertują. Więc jeśli wykonamy operację z krótkim i długim, to skrót zostanie domyślnie włączony.
  • Jeśli wykonamy operację z mieszanymi rozmiarami zmiennoprzecinkowymi, więc mamy liczbę zmiennoprzecinkową i podwójną, zawsze będą one przechodzić do podwójnej, ponieważ podwójna jest największą wielkością zmiennoprzecinkową.
  • A jeśli mamy operację, która wykorzystuje mieszane typy liczb całkowitych i zmiennoprzecinkowe, kompilator wyrzuci na dowolną największą zmiennoprzecinkową równanie. Więc jeśli wykonamy operację na długim i na powierzchni, długi zostanie rzucony na powierzchnię.
  • Jeśli wykonamy operację z długim i podwójnym, długi zostanie następnie rzutowany na podwójny.

Jawna konwersja typu

  • Używając tej operacji rzutowania, wyraźnie wykonujemy w naszym kodzie. Kiedy to robimy, bierzemy odpowiedzialność za wszystko, co dzieje się w wyniku tego rodzaju konwersji. Z tego powodu możemy wykonywać zarówno konwersję rozszerzającą, jak i wąską. Tak więc rozszerzenie z 32-bitowego na 64-bitowy, zawężenie, z 64-bitowego na 32-bitowy. Powinniśmy chcieć mieć świadomość, że wiemy, co może się zdarzyć.
  • Jeśli wykonamy jawne rzutowanie z liczby zmiennoprzecinkowej na liczbę całkowitą, więc punkty zmiennoprzecinkowe mogą mieć część ułamkową, liczba całkowita nie może, więc każda część ułamkowa zostałaby odrzucona, gdy rzutujemy tę liczbę zmiennoprzecinkową na liczbę całkowitą.
  • Chcesz zachować ostrożność podczas wykonywania zwężającej się konwersji. Jeśli mamy 64-bitową liczbę całkowitą, może ona przechowywać wartości zbyt duże, aby zmieściły się w 32-bitowej liczbie całkowitej.
  • Więc jeśli przerzucimy ten 64-bitowy na 32-bitowy, program faktycznie to zrobi, ale jeśli wartość jest zbyt duża, aby zmieścić się w 32-bitowym, otrzymasz z tego dziwne wyniki. Więc chcesz mieć pewność, że podczas rzucania zwężającej się obsady wiesz, że to, co robisz, jest bezpieczne.
  • A ostatnią jest to, że chcesz zachować ostrożność podczas konwersji z liczby całkowitej na zmiennoprzecinkową, ponieważ jeśli masz liczbę całkowitą z dużą liczbą cyfr znaczących, ze względu na sposób przechowywania zmiennoprzecinkowego możesz stracić część te znaczące cyfry.

Przykłady konwersji typu

Przykłady wymienionych poniżej typów konwersji:

Kod:

Mamy tutaj prosty program, niektóre deklaracje na górze, zmiennoprzecinkowe, podwójne, bajtowe, krótkie i długie, a każda ze zmiennych jest nazwana, aby pomóc określić, jakie są ich typy, zmiennoprzecinkowa jest zmiennoprzecinkowa,

Kod:

long is longVal

Kod:

A program po prostu drukuje komunikat Sukces, jeśli jest uruchomiony.

Zobaczmy więc, jak w grę wchodzi konwersja typów. Po pierwsze, chodźmy i stwórz zmienną. Mamy krótkie i po prostu nazwiemy to wynikiem.

W rzeczywistości chodźmy dalej i nazwijmy to wynikiem 1. I po prostu wykonajmy proste zadanie. A więc najpierw przypiszemy do niej bajtVal. Teraz, jak się spodziewamy, jeśli uruchomimy to, więc uruchom pomyślnie.

Kod:

Wynik:

Wiemy, że jest to prawidłowe przypisanie, ponieważ bajt można przypisać do krótkiego, ponieważ jest to konwersja rozszerzająca.

Jeśli jednak weźmiemy ten bajtVal i zmienimy go na longVal, to teraz jest on naprawdę długi, jeśli go uruchomimy, otrzymamy komunikat o błędzie informujący o niezgodnym typie, możliwej utracie konwersji z długiej na krótką.

Kod:

Zatem możemy tutaj zrobić wyraźną obsadę. Wyprzedzimy to krótko. Więc teraz jest ważny, abyśmy mogli go uruchomić.

Kod:

I oczywiście działa. Ponieważ długo nie można było streścić, ponieważ było to zwężenie nawrócenia.

Wynik:

Ale umieszczając jawną obsadę przed nią, teraz jest ważna. Jeśli chcemy, możemy umieścić zapis rzutowania w sposób bardzo wyraźny i powiedzieć, że wiesz, wiemy, że chociaż konwersja bajtów jest legalna, chcemy wyraźnie pokazać, że przesyłamy ją, umieszczając tam krótki rzut, możemy to zrobić i to jest całkowicie legalne.

Kod:

Wynik:

Spójrzmy teraz na inny scenariusz. Stworzymy kolejną zmienną, którą nazwiemy wynikiem2 , a wynik2 również jest krótki. Chcemy tutaj wziąć nasz byteVal i chcemy odjąć longVal. Teraz wiemy, że jest to niezgodne z prawem, ponieważ wynikiem wyrażenia będzie rozmiar największej liczby całkowitej, czyli długość.

Kod:

Jeśli więc to uruchomimy, pojawi się błąd informujący, że konwersja długiego na krótki nie jest poprawna.

Powiedzmy jednak, że chcemy iść naprzód i utrzymać ten wynik jako krótki. Musimy zrobić obsadę. Ale chcemy rzucić ten czas tutaj wartość całego wyniku tutaj. Więc co zamierzamy to zrobić, umieść tutaj krótką obsadę.

Umieść krótką obsadę przed nią tutaj. I zawiń wszystko w nawiasy. I uruchom to.

Kod:

Będzie działać poprawnie.

Wynik:

Teraz zadeklaruj inną zmienną o nazwie wynik3, ale zadeklaruj tę jako długą. Tak więc otrzymaliśmy wynik 3, a tym, co tutaj zrobimy, jest przypisanie tego naszego longVal - floatVal. Tak więc działamy, błąd przepada podczas konwersji z liczby zmiennoprzecinkowej na długą, ponieważ za każdym razem, gdy mamy typ całkowity i dowolny typ zmiennoprzecinkowy, wynikiem będzie typ zmiennoprzecinkowy.

Kod:

A więc chodźmy i przekonwertuj nasz wynik teraz na liczbę zmiennoprzecinkową. Tak więc, czyniąc ten float, powinniśmy być w stanie iść naprzód i go uruchomić. I działa pomyślnie.

Kod:

Wynik:

Ale teraz, jeśli weźmiemy tutaj floatVal i przekonwertujemy ją na doubleVal, a jeśli spróbujemy to uruchomić, otrzymamy błąd, ponieważ mówi, że wynik będzie podwójny, ponieważ gdy wykonasz liczbę całkowitą i zmiennoprzecinkową, jest to wielkość największej liczby zmiennoprzecinkowej w równaniu.

Kod:

Przejdźmy więc do tego, aby ten wynik podwoić, abyśmy mogli go uruchomić.

Kod:

Wynik:

Wniosek

1. Zmienne są silnie wpisywane w Javie
2. Typy pierwotne

  • Typy całkowite, typy zmiennoprzecinkowe, typ znakowy, typ logiczny

3. Konwersja typu

  • Często musimy przechodzić między różnymi typami, ponieważ w miarę jak nasze programy stają się bardziej złożone, prawdopodobnie będą obejmować wiele typów danych.
  • Kompilator może obsługiwać konwersje typów, które się poszerzają, przechodząc z jednego typu na drugi, który może zawierać większe wartości,
  • Ale możesz także użyć rzutowania, aby jawnie wykonać te typy konwersji, których kompilator nie może wykonać automatycznie.

Polecane artykuły

Jest to przewodnik po konwersji typów w Javie. Tutaj omawiamy wprowadzenie, konwersję typów w Javie, takie jak niejawne i jawne, oraz przykłady wykorzystujące różne sytuacje. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-

  1. Konstruktor w Javie
  2. Sortowanie w Javie
  3. Konstruktor w Javie
  4. JCheckBox w Javie
  5. Rzut vs Rzuty | 5 najważniejszych różnic, które powinieneś znać
  6. Jak zaimplementować pole wyboru w Bootstrap
  7. Konwersja w Javie z przykładami