03 Strings ArraysX6[1]

download 03 Strings ArraysX6[1]

of 5

Transcript of 03 Strings ArraysX6[1]

  • 8/9/2019 03 Strings ArraysX6[1]

    1/5

    Advanced Programming

    with Java

    Strings and Arrays

    Oranit Dror and Ohad Barzilay

    Advanced Java ProgrammingTel Aviv University

    2

    TheThe StringString ClassClass

    Represents a character string (e.g. "Hi")

    Implicit constructor:

    String quote = "Hello World";

    All string literals are String instances

    Object has a toString() method

    More details in JDK 5.0 documentation

    http://java.sun.com/j2se/1.5.0/docs/

    string literal

    Advanced Java Programming

    Tel Aviv University

    3

    String ImmutabilityString Immutability

    Strings are constantsString s = " Tea ";

    s = s.trim();

    s = s.replace('T', 'S');

    A string reference may be set:String s = "Tea";

    s = "Sea";Advanced Java Programming

    Tel Aviv University

    4

    String InterningString Interning

    Avoids duplicate stringsString[] array = new String[1000];

    for (int i=0 ; i

  • 8/9/2019 03 Strings ArraysX6[1]

    2/5

  • 8/9/2019 03 Strings ArraysX6[1]

    3/5

    Advanced Java ProgrammingTel Aviv University

    13

    More efficient version with StringBuffer:

    public static String

    duplicate(String s, int times) {StringBuffer result = new StringBuffer(s);

    for (int i=1; i

  • 8/9/2019 03 Strings ArraysX6[1]

    4/5

    Advanced Java ProgrammingTel Aviv University

    19

    Array Creation and InitializationArray Creation and Initialization

    Creating and initializing small arrayswith a-prioriknown values:

    int[] odds = {1,3,5,7,9,11,13,15};

    String months[] =

    {"Jan", "Feb", "Mar", "Apr","May", "Jun", "July", "Aug","Sep", "Oct", "Nov", "Dec"};

    Jan

    String Pool

    months:

    Advanced Java ProgrammingTel Aviv University

    20

    Loop through ArraysLoop through Arrays

    By promoting the array's index:

    for (int i=0 ; i < months.length ; i++) {

    System.out.println(months[i]);

    }

    In Java 5.0:

    for (String month: months) {

    System.out.println(month);

    }

    The variable month is assignedthe next element in each iteration

    Advanced Java Programming

    Tel Aviv University

    21

    Manipulating arraysManipulating arrays

    The java.util.Arrays class has methods for

    sorting and searching arrays e.g. public static void sort(int[] a)

    public static int binarySearch(int[] a, int key)

    In the java.lang.System class: public static void arraycopy(Object src, int srcPos,

    Object dest, int destPos,

    int length)

    Advanced Java Programming

    Tel Aviv University

    22

    Copying ArraysCopying Arrays

    Nave copy:

    int vec1[] = {1,2,3};

    int vec2[] = {8,7,6,5};

    vec1 = vec2;

    Doing it by hand is

    inefficient arraycopy(vec2, 0, vec1, 0, 3);

    will replace 1,2,3 in vec1 with 8,7,6

    Advanced Java Programming

    Tel Aviv University

    23

    Manipulating arrays (cont.)Manipulating arrays (cont.)

    What is the output of the following code:int[] odds = {1,3,5,7,9,11,13,15};

    int[] newOdds = new int[8];System.arraycopy(odds, 1, newOdds, 1, 7);

    for (int odd: odds) {

    System.out.print(odd + " ");

    }

    Output:0 3 5 7 9 11 13 15

    Advanced Java Programming

    Tel Aviv University

    24

    Reading command line argumentsReading command line arguments

    class CommandLineDemo

    {

    public static voidmain(String args[])

    {

    for (int i=0; i java CommandLineDemo Apple Box Car

    Argument number 1 is : Apple

    Argument number 2 is : Box

    Argument number 3 is : Car

  • 8/9/2019 03 Strings ArraysX6[1]

    5/5

    Advanced Java ProgrammingTel Aviv University

    25

    2 Dimensional Arrays

    There are no 2D arrays in Java but you canbuild array of arrays:

    char[] board[] = new char[3][];for (int i = 0; i