Ниже кода не работает, компилятор говорит: «Возможно Lossy Преобразование из междунар в полукокс»
public class Main
{
public static void main(String[] args) {
char ch;
ch = 65;
ch=ch+1;
System.out.println(ch);
}
}
то почему же ниже код работает без каких-либо ошибок:
public class Main
{
public static void main(String[] args) {
char ch;
ch = 65;
ch+=1;
System.out.println(ch);
}
}
В то время как единственное различие в обоих кодов является лишь «СН = СН + 1» и «CH + = 1 »?
В Java размер переменной полукокс: 2 байта, В то время как размер переменной ИНТ: 4 байта.
NB: байт состоит из 8 битов, который может содержать числовое значение до 256.
В первом фрагменте кода, когда вы делаете (ч +1) компилятор считает, что 1 является INT значение по умолчанию, таким образом, относительно конечного значения как межд тоже. Затем компилятор пытается поставить конечное значение в ч, который является символом ... опс .. это пытается соответствовать значению, представленному 4 байта в переменный, имеющем размер 2 байта!
Эта проблема может быть исправлена, если вы делаете так: Ch = (символы) (ч + 1)
Во втором фрагменте, вы непосредственно приращение переменной ч, независимо от его размера. Таким образом, вы не участвуете в задаче подстраиваться целочисленное значение в переменной полукокса.