W przypadku platform opartych na MIDP 2 / CLDC 1.1 (które ich nie mają Character.toString(char), stackoverflow.com/a/6210938/923560 zapewnia dodatkowe rozwiązania.
Abdull,
Jaki jest powód (char)wyznaczenia? Innymi słowy, dlaczego nie mogę po prostu powiedzieć Character.toString(i);? (Java noob)
Adam Hughes
1
Zauważ, że to nie zadziała dla tego Integertypu, pojawi się błąd „Nie można przesłać java.lang.Integer do java.lang.Character”. Dodaj obsadę do intpierwszej, np .: Character.toString((char)(int)myInteger);
gbmhunter
1
Te iwartości (0-255) będzie od zestawu znaków ISO-8859-1. (Osoba zadająca pytanie odmówiła określenia, który „rozszerzony ASCII” [niejasny termin] był poszukiwany, chyba że zaakceptował tę odpowiedź.)
Zakładając, że liczba całkowita jest, jak mówisz, między 0 a 255, otrzymasz tablicę z pojedynczym znakiem z powrotem z Character.toChars, która stanie się ciągiem jednoznakowym po przekazaniu do String.valueOf.
Korzystanie Character.toCharszaleca się metody z udziałem obsady od intcelu char(tj (char) i) dla wielu powodów, w tym, że Character.toCharsrzuci IllegalArgumentExceptionjeśli nie uda się poprawnie zweryfikować całkowitą natomiast obsada będzie przełknąć błąd (na tym zwężenie specyfikacji prymitywne konwersje ), co potencjalnie daje wyjście inne niż zamierzone.
Zakładając, że liczba całkowita mieści się w zakresie od 0 do 255 (jak twierdzisz, że tak jest ... i jak określa pytanie), jest ona niepotrzebna i nieoptymalna w użyciu toChars.
Stephen C
5
Masz całkowitą rację, że coś takiego Character.toString((char) i)jest szybsze niż String.valueOf(Character.toChars(i)). Przeprowadzenie szybkiego testu porównawczego konwersji 1000000 losowych liczb całkowitych w podanym zakresie (100 razy, aby być bezpiecznym) na moim komputerze daje średni czas 153,07 nanosekund w porównaniu z 862,39 nanosekund. Jednak w każdej interesującej aplikacji będą znacznie ważniejsze rzeczy do optymalizacji. Wartość dodana bezpiecznej, deterministycznej obsługi i łatwość rozszerzenia poza zakres [0,255], gdyby była wymagana, przeważa nad niewielkim spadkiem wydajności.
Odpowiedzi:
Character.toString ((char) i);
źródło
Character.toString(char)
, stackoverflow.com/a/6210938/923560 zapewnia dodatkowe rozwiązania.(char)
wyznaczenia? Innymi słowy, dlaczego nie mogę po prostu powiedziećCharacter.toString(i);
? (Java noob)Integer
typu, pojawi się błąd „Nie można przesłać java.lang.Integer do java.lang.Character”. Dodaj obsadę doint
pierwszej, np .:Character.toString((char)(int)myInteger);
i
wartości (0-255) będzie od zestawu znaków ISO-8859-1. (Osoba zadająca pytanie odmówiła określenia, który „rozszerzony ASCII” [niejasny termin] był poszukiwany, chyba że zaakceptował tę odpowiedź.)System.out.println((char)65);
wypisze „A”źródło
(char) 65
aby dowiedzieć się, jaki to znak.String.valueOf
(
Character.toChars(int)
)
Zakładając, że liczba całkowita jest, jak mówisz, między 0 a 255, otrzymasz tablicę z pojedynczym znakiem z powrotem z
Character.toChars
, która stanie się ciągiem jednoznakowym po przekazaniu doString.valueOf
.Korzystanie
Character.toChars
zaleca się metody z udziałem obsady odint
celuchar
(tj(char) i
) dla wielu powodów, w tym, żeCharacter.toChars
rzuciIllegalArgumentException
jeśli nie uda się poprawnie zweryfikować całkowitą natomiast obsada będzie przełknąć błąd (na tym zwężenie specyfikacji prymitywne konwersje ), co potencjalnie daje wyjście inne niż zamierzone.źródło
toChars
.Character.toString((char) i)
jest szybsze niżString.valueOf(Character.toChars(i))
. Przeprowadzenie szybkiego testu porównawczego konwersji 1000000 losowych liczb całkowitych w podanym zakresie (100 razy, aby być bezpiecznym) na moim komputerze daje średni czas 153,07 nanosekund w porównaniu z 862,39 nanosekund. Jednak w każdej interesującej aplikacji będą znacznie ważniejsze rzeczy do optymalizacji. Wartość dodana bezpiecznej, deterministycznej obsługi i łatwość rozszerzenia poza zakres [0,255], gdyby była wymagana, przeważa nad niewielkim spadkiem wydajności.to jest proste rozwiązanie
źródło
Otrzymasz ciąg o długości jeden, którego pojedynczy znak ma kod (ASCII) 65. W Javie znaki są numerycznymi typami danych.
źródło
Można iterować od a do z w ten sposób
źródło
Łatwiejszy sposób na zrobienie tego samego:
Wpisz rzutowaną liczbę całkowitą na znak, niech
int n
będzie liczbą całkowitą, a następnie:źródło
źródło
Dlaczego nie uprościć go do metody, która zwraca znak ascii?
źródło
To jest przykład, który pokazuje, że konwertując int na char, można określić odpowiedni znak w kodzie ASCII.
źródło
górna odpowiedź tylko przy rozwiązaniu problemu. oto twoja odpowiedź:
Integer.decode (Character.toString (char c));
źródło