// File: CharTest.java // CharTest class shows that primitive chars are stored as integers (16-bit). // When mixing ints and chars in an expression, the result is "promoted" to // type int (the "higher" type), and can be explicitly converted to char // Also shows String methods charAt() and length(), and static Character class // methods toUpperCase() and toLowerCase() public class CharTest { public static void main (String [] args) { char letter ; int number ; letter = 'A' ; // letter gets 65 number = 66 ; System.out.println("After assigning 'A' to letter, 66 to number...") ; System.out.println("letter: " + letter + "\tnumber: " + number) ; // print mixed expression: letter + number System.out.println("\nAdding letter + number, result is " + (letter + number) ) ; number = number - 'A' ; System.out.println("\nAfter assignment: number = number - 'A' ;" + "\nnumber is: " + number) ; letter++ ; // increment letter by 1 System.out.println("\nAfter autoincrement: letter++ ; " + "\nletter is: " + letter) ; // this will not compile: letter = letter + 1 // to convert mixed expression to char, need explicit cast letter = (char)(letter + 1) ; System.out.println("\nAfter assignment: letter = (char)(letter + 1) ; " + "\nletter is: " + letter) ; letter = 97 ; number = '?' ; // implicitly converted to int 63 System.out.println("\nAfter assigning 97 to letter, '?' to number...") ; System.out.println("letter: " + letter + "\tnumber: " + number) ; // demonstrate the charAt method String greeting = "Hello!" ; System.out.println("\nString greeting = \"Hello!\"") ; // get and print first char letter = greeting.charAt(0) ; System.out.println( "\ngreeting.charAt(0) returns: " + letter ) ; // get and print 2nd char letter = greeting.charAt(1) ; System.out.println( "greeting.charAt(1) returns: " + letter ) ; //get and print last char letter = greeting.charAt( greeting.length()-1 ) ; System.out.println( "greeting.charAt( greeting.length()-1 ) returns: " + letter ) ; // static Character class methods toUpperCase and toLowerCase letter = Character.toUpperCase('q') ; System.out.println( "\nCharacter.toUpperCase('q') returns: " + letter) ; letter = Character.toUpperCase('H') ; System.out.println( "Character.toUpperCase('H') returns: " + letter) ; letter = Character.toUpperCase('*') ; System.out.println( "Character.toUpperCase('*') returns: " + letter) ; letter = Character.toLowerCase('q') ; System.out.println( "\nCharacter.toLowerCase('q') returns: " + letter) ; letter = Character.toLowerCase('H') ; System.out.println( "Character.toLowerCase('H') returns: " + letter) ; letter = Character.toLowerCase('*') ; System.out.println( "Character.toLowerCase('*') returns: " + letter) ; } } /* program output After assigning 'A' to letter, 66 to number... letter: A number: 66 Adding letter + number, result is 131 After assignment: number = number - 'A' ; number is: 1 After autoincrement: letter++ ; letter is: B After assignment: letter = (char)(letter + 1) ; letter is: C After assigning 97 to letter, '?' to number... letter: a number: 63 String greeting = "Hello!" greeting.charAt(0) returns: H greeting.charAt(1) returns: e greeting.charAt( greeting.length()-1 ) returns: ! Character.toUpperCase('q') returns: Q Character.toUpperCase('H') returns: H Character.toUpperCase('*') returns: * Character.toLowerCase('q') returns: q Character.toLowerCase('H') returns: h Character.toLowerCase('*') returns: * */