Principles of a char: Char is an int in disguise When converting a character that's a digit to an int, you must normalize it by subtracting '0'. You then assign it to an int. When assigning an int to a character, you must cast it. An int has 4 bytes and a char has 2 bytes. (4 doen't fit into 2) Rules: 0. a char is an int in disguise 1. when a char appears in a calculation the ascii code is used 2. when a char is assigned to an int no casting is required and the char's ascii code is assigned to the int 3. when an int (be it one variable or the result of a char in a calculation) is assigned to a char, it must be cast. The character corresponding to the int's ascii code value is assigned to the char. In jdk 1.6, char ch = 'a' +1; is allowed. In jdk 1.5, however, you must write char ch = (char)('a' + 1); 4. when a string is used(read) in a program you usually find its length, and use charAt() with a for loop; Except when you just want the first or second character from the string. 5. You can't assign a string to a char or int (or any primitive type). This int m = (int)"123" is illegal, as is m = (int)s, where s is a string 6. To assign a string consisting of only digits to an int use Integer.parseInt() 7. You cannot use a char with Integer.parseInt(). You must concatenate it with the empty string. Thus int m = Integer.parseInt("" + ch) where ch is a char variable.