// Creating, manipulating, and exchanging char, int, double, and String data
public class DataTypesII {
  public static void main( String args[] )
  {
    // Declarations
    int intData;
    char charData;
    double doubleData;
    String stringData;

    // Assignments
    charData = 'A';         // A literal constant 'A' is assigned to charData
    intData = charData;     // charData is assigned to intData

    System.out.println("Both set to 'A',                         charData: "
      + charData + " intData: " + intData);

    // Manipulations
    charData++;              // charData is incremented by 1
    System.out.println("charData incremented,                    charData: "
      + charData + " intData: " + intData);

    intData += 5;             // intData is incremented by 5
    System.out.println("intData incremented,                     charData: "
      + charData + " intData: " + intData);

    //charData = intData;       // intData is assigned to charData - compile error
    charData = (char) intData;   // intData is converted (cast) and assigned to charData
    System.out.println("charData set to intData,                 charData: "
      + charData + " intData: " + intData);

    doubleData = intData;        //intData is assigned to doubleData
    System.out.println("intData set to doubleData,               intData: "
      + intData + " doubleData: " + doubleData);

    doubleData += .5;           // doubleData incremented by .5
    System.out.println("doubleData incremented by .5,            intData: "
      + intData + " doubleData: " + doubleData);

    //intData = doubleData;        // doubleData assigned to intData - compile error
    intData = (int) doubleData;        // doubleData cast andassigned to intData
    System.out.println("intData cast and assigned to doubleData, intData: "
      + intData + " doubleData: " + doubleData);

   // Converting to String:  (NOTE: String is a class, stringData is an object)

   //stringData = intData;        // intData assigned to stringData - compile error
   //stringData = Integer.toString( intData);      // Convert int to String

   // The "" is a NULL String but it establishes a 'String context' and toString is
   // called automatically
   stringData = "" + intData;

   System.out.println("stringData from intData: " + stringData);

   //stringData = charData;      // charData is assigned to stringData - compile error

   // EEK - no method!
   //stringData = Character.toString(charData);         // convert char to String explicitly
   stringData = "" + charData;                          // Using a String context
   System.out.println("stringData from charData: " + stringData);

   // Converting Strings to int and double
   stringData = Integer.toString(intData);      // int to String
   // stringData = '' + intData;
   intData = Integer.parseInt(stringData);      // String to int

   //stringData = Double.toString(intData);     // String to double
   stringData = "" + doubleData;
   doubleData = Double.parseDouble(stringData);

   System.out.println("\nFrom stringData, \n"
      + "intData is: " + intData + " and doubleData is: " + doubleData);

   // From String to char, one character at a time
   System.out.println("\nstringData: " + stringData + " one character at a time:");

   for (int i=0; i < stringData.length(); i++)
   {
     charData = stringData.charAt(i);
     System.out.println("Character " + i + ": " + charData);
   }


  }
}
