Strings and StringBuffers.

// The program demonstrates various methods of String and StringBuffer
// classes. 
// The main difference between the two is that String objects are immutable
// (once created, they can't be changed), so you have to assign
// the result of every operation to a variable.
// StringBuffer is mutable (can be changed directly in memory)
 
public class StringTest {
	public static void main( String [] args) {
	    String s1 = "Hi there!"; // don't need 'new' to create a string

	    // STRING OPERATIONS

	    // create a new string "HI THERE!", store its address in s1
	    s1 = s1.toUpperCase();
	    System.out.println(s1);

	    // string concatenation ("gluing together"):
	    String s2 = s1 + " Haven't seen you in a while...";
	    System.out.println(s1); // s1 doesn't change
	    System.out.println(s2);

	    // various String methods (see more in the API)
	    boolean b = s2.startsWith(s1);
	    System.out.println("b = " + b);
	    int length = s1.length();
	    System.out.println("length of " + s1 + " is " + length);


	    String s3 = "HI THERE!"; // another string with the same contents

	    // comparing strings: == compares the addresses
	    System.out.println("comparing with ==");
	    if (s1 == s3) {
		System.out.println("the strings are the same");
	    } else {
		System.out.println("the strings are different");
	    }

	    
	    // comparing strings: .equals compares the contents 
	    System.out.println("comparing with .equals()");
	    if (s1.equals(s3)) {
		System.out.println("the strings are the same");
	    } else {
		System.out.println("the strings are different");
	    }

	    s2 = s2.toLowerCase();
	    System.out.println(s1.equalsIgnoreCase(s2));

	    // What's going on there? Try different strings. 
	    s1 = "apples";
	    s2 = "oranges";
	    int result1 = s1.compareTo(s2); // The result is an integer!
	    System.out.println("s1.compareTo(s2) = " + result1);
	    int result2 = s2.compareTo(s1); // The result is an integer!
	    System.out.println("s2.compareTo(s1) = " + result2);

	    // YOU CAN DO MUCH MORE WITH STRINGBUFFER
	    // The StringBuffer is changing
	    StringBuffer sb1 = new StringBuffer("Apples are tasty");
	    sb1.insert(11, "red and ");
	    System.out.println(sb1);
	    sb1.replace(0,6,"Tomatoes");
	    System.out.println(sb1);
	    sb1.reverse();
	    System.out.println(sb1);
	    sb1.reverse();
	    System.out.println(sb1);
	    sb1.delete(13,21);
	    System.out.println(sb1);
	}
}

This is an example from CSci 2101 course.