
import static java.lang.System.*;

public class HelpStrings 
{
  public static void main(String[] args) 
  {
       
        // using a string
  out.println("The String Class");
  out.println();
  out.println();
  
  /*
  out.println("String Methods");
  out.println();
  out.println("toString()   returns a new String which is the same as the original String");
  out.println("length()     returns the number of characters in the String (int)");
  out.println("charAt()     returns the character (char) at the given position (index)");
  out.println("indexOf()    searches for a given character or String and returns the \n                position found or -1 if not found");
  out.println("equals()     compares this String to a given String and returns true or false");
  out.println("compareTo()  compares this String to a given String and returns a negative, \n                0, or positive int (dictionary order)");
  out.println("substring()  returns a new String which is a portion of the original String");
  out.println("replaceAll() returns a String replacing a given String with another \n                given String");
  out.println();
  out.println();
  */
  
  String s1 = "abc de";
  //           012345
  // What is ?
  // s1.toString()          abc de
  // s1.length()            6
  // s1.charAt(0)           a                 
  // s1.charAt(2)           c     
  // s1.charAt(3)                  
  // s1.charAt(5)           e        
  // s1.charAt(s1.length()) index out of bounds                
  // s1.charAt(6)           index out of bounds
  
  
  String s2 = "abc cde9,!";
  //           0123456789
  // What is ?
  // s2.toString()          abc cde9,!
  // s2.length()            10
  // s2.charAt(0)           a                 
  // s2.charAt(2)           c     
  // s2.charAt(3)                   
  // s2.charAt(5)           d        
  // s2.charAt(s2.length()) index out of bounds error      
  // s2.charAt(6)           e      
  
  // "abc cde9,!";
  //  0123456789
  // s2.substring(4)        cde9,!   
  // s2.substring(6)        e9,!   
  // s2.substring(7)        9,!  
  // 
  // "abc cde9,!";
  //  0123456789
  // s2.substring(2,3)        c   
  // s2.substring(2,5)        c c   
  // s2.substring(4,5)        c   
  // s2.substring(4,6)        cd   
  // s2.substring(7,10)       9,!  
  
  // "abc cde9,!";
  //  0123456789
  // s2.indexOf('b')          1   
  // s2.indexOf('c')          2   
  // s2.indexOf("c")          2   
  // s2.indexOf("f")          -1   
  // s2.indexOf("cde")        4  
  
  out.println("String s1="+"\""+s1+"\""); // prints out abc de 
  out.println("\""+ s1 +"\"" +".toString() returns "+s1.toString()); // prints out abc de 
  out.println();
  
  out.println("String s2="+"\""+s2+"\""); // prints out abc cde
  out.println("\""+ s2 +"\"" + ".toString() returns "+s2.toString()); // prints out abc cde
  out.println("\"abc\".toString() returns "+"abc"); // prints out abc 
  out.println();
  
  out.println("\""+ s1 +"\"" +".length() returns "+s1.length()); // prints out 6
  out.println("\""+ s2 +"\"" +".length() returns "+s2.length()); // prints out 7
  out.println("\"abc\".length() returns "+"abc".length()); // prints out 3
  out.println();
        
  out.println("\""+ s1 +"\"" + ".charAt(0) returns "+s1.charAt(0)); // prints out the character a
  out.println("\""+ s1 +"\"" +".charAt(2) returns "+s1.charAt(2)); // prints out the character c
  out.println();
  
  out.println("\""+ s1 +"\"" + ".indexOf('c') returns "+s1.indexOf('c')); // prints out 2
  out.println("\""+ s1 +"\"" +".indexOf(\"bc\") returns "+s1.indexOf("bc")); // prints out 1
  out.println("\""+ s1 +"\"" +".indexOf(\"ac\") returns "+s1.indexOf("ac")); // prints out -1 
  out.println();
      
  out.println("\""+ s1 +"\"" + ".equals(s2) returns "+s1.equals(s2)); // prints out false
  out.println("\""+ s1 +"\"" +".equals(\"abc de\") returns "+s1.equals("abc de")); // prints out true
  out.println();
  
  out.println("\""+ s1 +"\"" +".compareTo(s2) returns "+s1.compareTo(s2)); // prints out 1 ('d' - 'c')
  out.println("\""+ s1 +"\"" +".compareTo(\"abc de\") returns "+s1.compareTo("abc de")); // prints out 0
  out.println();
  
  out.println("\""+ s1 +"\"" + ".substring(4,6) returns "+s1.substring(4,6)); // prints out de
  out.println("\""+ s1 +"\"" + ".substring(0,3) returns "+s1.substring(0,3)); // prints out abc
  out.println("\""+ s1 +"\"" + ".substring(2) returns "+s1.substring(2)); // prints out c de 
  out.println("\"abcabc\".substring(3) returns "+"abcabc".substring(3)); // prints out abc 
  out.println("\""+ s2 +"\"" + "s2.substring(2) returns "+s2.substring(2)); // prints out c cde 
  out.println();
  
  out.println("\""+ s1 +"\"" + ".replaceAll(\"c\",\"a\") returns "+s1.replaceAll("c","a")); // prints out aba de  
  out.println("\""+ s1 +"\"" + ".replaceAll(\"ab\",\"f\") returns "+s1.replaceAll("ab","f")); // prints out fc de  
  out.println("\"abcabca\".replaceAll(\"ab\",\"f\") returns "+"abcabca".replaceAll("ab","f")); // prints out fcfca
  
    

  }
}

/*
The String Class


String s1="abc de"
"abc de".toString() returns abc de

String s2="abc cde9,!"
"abc cde9,!".toString() returns abc cde9,!
"abc".toString() returns abc

"abc de".length() returns 6
"abc cde9,!".length() returns 10
"abc".length() returns 3

"abc de".charAt(0) returns a
"abc de".charAt(2) returns c

"abc de".indexOf('c') returns 2
"abc de".indexOf("bc") returns 1
"abc de".indexOf("ac") returns -1

"abc de".equals(s2) returns false
"abc de".equals("abc de") returns true

"abc de".compareTo(s2) returns 1
"abc de".compareTo("abc de") returns 0

"abc de".substring(4,6) returns de
"abc de".substring(0,3) returns abc
"abc de".substring(2) returns c de
"abcabc".substring(3) returns abc
"abc cde9,!"s2.substring(2) returns c cde9,!

"abc de".replaceAll("c","a") returns aba de
"abc de".replaceAll("ab","f") returns fc de
"abcabca".replaceAll("ab","f") returns fcfca

*/

