В чем разница между char a = 1 vs char a = '1' java [duplicate]

Вы можете использовать собственную выборку GitHub для этого:

Frontend: https://github.com/github/fetch или для Backend, версия Node.js: https://github.com/bitinn/node-fetch

fetch(url)
  .then(function(res) {
    if (res.status == '200') {
      return image;
    } else {
      return placeholder;
    }
  }

Изменить: этот метод заменит XHR и предположительно уже был в Chrome. Для тех, кто читает это в будущем, вам может не понадобиться упомянутая выше библиотека.

87
задан user2640480 1 August 2013 в 04:51
поделиться

12 ответов

int a = 1;
char b = (char) a;
System.out.println(b);

hola, ну, я прошел ту же проблему, но я сделал следующий код.

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

С этим вы получаете десятичное значение в виде символьного типа. Я использовал charAt () с индексом 0, потому что единственное значение в этой строке - «a», и, как вы знаете, позиция «a» в этой строке начинается с 0.

Извините, если мой английский isn ' t хорошо объяснил, надеюсь, что это вам поможет.

9
ответ дан 3ryck 18 August 2018 в 06:33
поделиться

Если вы хотите преобразовать символ в его соответствующее целое число, вы можете сделать что-то вроде этого:

int a = (int) 'a';
char b = (char) a;
System.out.println(b);

Это происходит потому, что в ASCII есть некоторые элементы, которые невозможно напечатать в обычном режиме.

Например, числа с 97 по 122 являются целыми числами, соответствующими строчным буквам от a до z.

-2
ответ дан Addison 18 August 2018 в 06:33
поделиться
  • 1
    извините, но вы просто скопировали старые ответы ... – Miki 26 October 2016 в 23:09

Всякий раз, когда вы вводите целое число cast в char, оно возвращает значение ascii этого int (один раз пройдите через таблицу ascii для лучшего понимания)

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D
0
ответ дан ajay verma 18 August 2018 в 06:33
поделиться
  • 1
    Сорт .... char - это код UTF-16. 68 как кодовый блок UTF-16 является единственным блоком кода, необходимым для представления кодового пункта Unicode U + 0044 . System.out изменит кодировку текста на кодировку по умолчанию (предположительно, соответствующую терминалу / консоли, в которой запущена программа). println принимает символ и пытается его кодировать. Поскольку char является полным кодом, он может попробовать. Так как U + 0044 является символом почти всех наборов символов, должен быть успех в том, чтобы довести его до конечного гангстера. Ничего общего с ASCII. – Tom Blodget 30 December 2016 в 01:43

Никто не ответил на настоящий «вопрос» здесь: вы преобразовываете int в char правильно; в таблице ASCII десятичное значение 01 является «началом заголовка», непечатаемым символом. Попробуйте найти таблицу ASCII и преобразовать значение int между 33 и 7E; который даст вам персонажей, на которые нужно смотреть.

1
ответ дан apraetor 18 August 2018 в 06:33
поделиться

Убедитесь, что целочисленное значение является значением ASCII алфавита / символа.

Если нет, сделайте это.

for e.g. if int i=1

затем добавьте 64, чтобы он стал 65 = ASCII значение 'A' Затем используйте

char x = (char)i;

print x

// 'A' will be printed 
1
ответ дан Cryptopat 18 August 2018 в 06:33
поделиться

В java char есть int. Ваш первый фрагмент печатает символ, соответствующий значению 1 в схеме кодирования по умолчанию (что, вероятно, является Unicode). Символ Unicode U + 0001 является непечатаемым символом, поэтому вы не видите никакого вывода.

Если вы хотите распечатать символ «1», вы можете посмотреть значение '1' в используемой схеме кодирования. В Unicode это 49 (то же, что и ASCII). Но это будет работать только для цифр 0-9.

Возможно, вам лучше использовать String, а не char, и использовать встроенный метод toString() Java:

int a = 1;
String b = toString(a);
System.out.println(b);

Это будет работать независимо от вашей системной кодировки и будет работать для многозначных чисел.

0
ответ дан david25272 18 August 2018 в 06:33
поделиться
  • 1
    Извините, но char не является int, потому что он состоит из другого количества байтов (быстрое ref. char-intпредставление - stackoverflow ). Символ может быть представлен числом, вы правы, но это не целое число. – morels 9 October 2015 в 07:00
  • 2
    Кроме того, я думаю, вы можете обнаружить, что вторая строка должна быть прочитана & quot; String b = Integer.toString (a); & quot; – Faulty 5 April 2016 в 00:59
  • 3
    Тип данных char хорошо определен в java.lang.Character , а также его отношение к кодам и кодовым единицам int и unicode. – Ian 25 October 2017 в 18:32

Мой ответ похож на ответ jh314, но я объясню немного глубже.

Что вы должны сделать в этом случае:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

Здесь мы использовали ' 0 ', потому что символы фактически представлены значениями ASCII. «0» - это символ и представлен значением 48.

Мы набрали (a + '0'), и для того, чтобы добавить их, Java преобразовал «0» в значение ASCII, которое равно 48, а a равно 1 поэтому сумма равна 49. Тогда мы сделали:

(char)(49)

Мы выполнили int до char. ASCII эквивалент 49 равен «1». Вы можете преобразовать любую цифру в char таким образом и умнее и лучше, чем использовать метод .toString(), а затем вычитать цифру с помощью метода .charAt().

36
ответ дан Haggra 18 August 2018 в 06:33
поделиться
int a = 1;
char b = (char) a;
System.out.println(b);

распечатает символ с значением ascii 1 (символ начала заголовка, который не может быть распечатан).

int a = '1';
char b = (char) a;
System.out.println(b);

распечатает символ с значением ascii 49 ( [1])

Если вы хотите преобразовать цифру (0-9), вы можете добавить 48 к ней и произнести, или что-то вроде Character.forDigit(a, 10);.

Если вы хотите преобразовать int, как в значение ascii, вы можете использовать Character.toChars(48), например.

75
ответ дан jh314 18 August 2018 в 06:33
поделиться
  • 1
    System.out.println('b'+3); как я могу получить b3 вместо 101 с помощью println? любым другим способом вместо printf? – Asif Mushtaq 10 March 2016 в 15:20
  • 2
    @UnKnown Вам нужно сделать его строкой вместо символа char следующим образом System.out.println (& quot; b & quot; + 3); – Haggra 18 April 2016 в 23:52
  • 3
    – weaknespase 27 October 2018 в 12:54
public class String_Store_In_Array 
{
    public static void main(String[] args) 
    {
        System.out.println(" Q.37 Can you store string in array of integers. Try it.");

        String str="I am Akash";
        int arr[]=new int[str.length()];
        char chArr[]=str.toCharArray();
          char  ch;
        for(int i=0;i<str.length();i++)
        {

            arr[i]=chArr[i];
        }
        System.out.println("\nI have stored it in array by using ASCII value");
        for(int i=0;i<arr.length;i++)
        {

            System.out.print(" "+arr[i]);
        }
        System.out.println("\nI have stored it in array by using ASCII value to original content");
        for(int i=0;i<arr.length;i++)
        {
             ch=(char)arr[i];

            System.out.print(" "+ch);
        }
    }
}
0
ответ дан Jules Dupont 18 August 2018 в 06:33
поделиться
  • 1
    Пожалуйста, дайте объяснение вместо простого списания кода. – Jules Dupont 3 February 2018 в 16:38
  • 2
    Хотя этот пост только для кода может ответить на вопрос, пожалуйста, добавьте объяснение, почему оно это делает. Это поможет будущим пользователям оценить ответ на их ситуацию. – Tom Brunberg 3 February 2018 в 21:54

Если мы говорим о типах классов, а не о примитивах, необходимо сделать следующий трюк:

Integer someInt;
Character someChar;

someChar = (char)Integer.parseInt(String.valueOf(someInt);
1
ответ дан matua 18 August 2018 в 06:33
поделиться

, если вы хотите печатать символы ascii на основе их ascii-кода и не хотите идти дальше этого (например, символы юникода), вы можете определить свою переменную как байт, а затем использовать (char) convert. т. е .:

public static void main(String[] args) {
    byte b = 65;
    for (byte i=b; i<=b+25; i++) {
        System.out.print((char)i + ", ");
    }

BTW, код ascii для буквы «A» равен 65

0
ответ дан MohS 18 August 2018 в 06:33
поделиться

Похоже, вы ищете метод Character.forDigit:

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

Существует также метод, который может преобразовать из char обратно в int:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

Обратите внимание, что, изменяя RADIX, вы также можете поддерживать шестнадцатеричный (радиус 16) и любой радиус до 36 (или Character.MAX_RADIX, так как он также известен).

28
ответ дан Simon Forsberg 18 August 2018 в 06:33
поделиться
  • 1
    @ProgrammingNub Определить значение «int». Не хотите ли вы распечатать цифру 4? Или вы хотите напечатать значение Ascii для int, чтобы 65 печатал A? Потому что мой ответ здесь отображает ожидаемое поведение для требований этого вопроса. См. ideone.com/09LAFR – Simon Forsberg 5 November 2017 в 22:06
Другие вопросы по тегам:

Похожие вопросы: