1 / 31

Web Based Programming Section 11

Web Based Programming Section 11. James King 12 August 2003. Mass storage - Arrays, Strings and Vectors. Arrays. Mass Storage. Arrays. Arrays allow large numbers of simple data types such as int or instances of classes to be easily accessed. int array[]=new int[10]; array[0]=4;

kelton
Download Presentation

Web Based Programming Section 11

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web Based Programming Section 11 James King 12 August 2003

  2. Mass storage - Arrays, Strings and Vectors

  3. Arrays Mass Storage

  4. Arrays • Arrays allow large numbers of simple data types such as int or instances of classes to be easily accessed. int array[]=new int[10]; array[0]=4; array[9]=1234; System.out.println(array[0]); indicates that the array will hold 10 items indicates variable is an array accessing an element of an array also uses [] arrays start at 0 this is the last element of the array

  5. Arrays holding Objects • Arrays can also hold instances of a class or any of its subclass Monster array[]=new Monster[10]; array[0]=new Monster(); array[9]=new Dragon(); array[0].take_damage(); indicates that the array will hold 10 instances of the Monster class or subclass Dragon is a subclass of Monster so this is fine array[0] is an instance of Monster so we can call take_damage on it

  6. Dangers of Arrays of Objects • with an array of simple types such as ints every element in the array exists even if we don’t assign a value to them int array[]=new int[2]; System.out.println(array[0]); • with an array of Objects elements are null until we assign an instance to them Monster array[]=new Monster[2]; array[0].take_damage(); no problem!! null pointer exception!

  7. Initialising Object Arrays • unlike arrays of simple types arrays of any type of object require each element to be instantiated and inserted into the array... Monster array[]=new Monster[2]; array[0]=new Monster(); array[1]=new Monster(); array[0].take_damage();

  8. Loops and Arrays • loops are natural ways to perform the same operation on each element of an array (or a sub set). For example int array[]=new int[10]; int index; for (index=0;index<10;index=index+1) { array[index]=0; }

  9. Loops and Dangers int array[]=new int[10]; int index; for (index=0;index<10;index=index+1) { array[index]=0; } • There is a problem with this code. Suppose I change the array to only have 5 elements... as soon as the index is 5 and tries to assign 0 to the element in position 5 Java will issue an array out of bounds exception

  10. Finding the number of elements in anarray • Fortunately we can ask the array how long it is using .length int array[]=new int[10]; int index; for (index=0;index<array.length;index=index+1) { array[index]=0; } • Now we can make the array bigger or smaller and the code will not crash and will initialise the entire array

  11. Problems with Arrays I • The single biggest problem with an array is that it is not variable length. You have to declare the length of the array as a constant and you can not tag on extra elements int array[]=new array[20]; array[30]=1234; array out of bounds exception!

  12. Problems with arrays II • You also can not remove elements in an array even if they are no longer needed. For instance suppose I have an array of 4 Monsters which the Hero is fighting. If the Hero kills 2 it would be nice to remove two from the array... the only thing you can do is to replace the dead instance with null.

  13. Strings Mass Storage

  14. Strings • The String class allows you to store and manipulate sequences of characters • Like chars, Strings are case sensitive so “hello” is not the same as “Hello” • Strings are in fact Objects • The length method tells you the length of a string in chars e.g. “hello”.length()==5 • You can get a copy of the character at any position in a string using charAt() • “hello”.charAt(0)==‘h’ • “hello”.charAt(4)==‘o’

  15. Relationship between String and Arrays • It is possible to get a copy of the contents of a String as a char array String s="hello world"; char con[]=new char[s.length()]; s.getChars(0,s.length(),con,0); make sure the array is large enough to store the entire String Starting char in the String ending char +1 in the String starting position in the array array to copy chars into

  16. Relationship between String and Arrays • It is also possible to create a string from a char array String s="hello world"; char con[]=new char[s.length()]; s.getChars(0,s.length(),con,0); con[0]='H'; s=new String(con); System.out.println(s); • However, manipulating char arrays is not easy so in general it is better to manipulate the String by keeping it in its String format

  17. Manipulating Strings • There are many manipulation functions defined for the string object one of the most useful is subString • You can get a copy of part of a string using subString • “hello”.subString(0,2)==“hel” • “hello”.substring(2,3)==“ll” ending index starting index

  18. Adding to your String • Unlike arrays, Strings can be appended and pre-pended to easily String s=“world”; s=“hello “+s; s=s+”!”; • This gives the String “hello world!”

  19. Seeing if Two Strings are Equal using == • For simple types you can use == and != to see if something is equal or not equal. • == and != do not work correctly for objects String s=“hello there”; String s1=“hello there”; s==s is true s1==s1 is true s==s1 is false!!!!!!!!!!!!!! • This is because for objects == and != check where the instance is in memory and not the contents of the instances

  20. Seeing if Two Strings are Equal using equals • To see if two Strings are identical you need to use equals() or equalsIgnoreCase() String s=“hello there”; String s1=“hello there”; s.equals(s) is true s.equals(s1) is true s.equals(s1) is true • This is because equals and equalsIgnoreCase check the contents of the instances and not their locations in memory

  21. Converting other types into Strings • Java will convert almost any simple type into a String for you String s=“”; int i=166; s=“”+i; • This does not work for Objects because Java can not work out how to convert an object into a String “” is an empty String “” converts a copy of i into a String

  22. Converting Strings into other types. • Java provides static methods in classes called Integer, Long, Float and Double to help you: int i=Integer.parseInt("100"); long l=Long.parseLong("100"); float f=Float.parseFloat("100"); double d=Double.parseDouble("100"); • If and only if the entire String looks like another type can the conversion take place. int i=Integer.parseInt(“hello 100"); Exception

  23. More String Functions • There are many more String manipulation functions than we have time for to look at here • Take a look at the Java documentation for the String class and have some fun!

  24. Vectors Mass Storage

  25. Vectors • Vectors offer an alternative from arrays that allow you to insert, delete and add extra elements. • Unfortunately Vectors can only store objects so you can not create a Vector of simple data types such as int.... but there is nothing stopping you putting a single int into a class and putting that class into the Vector... • Vectors are in the package java.util and so require importing import java.util.*;

  26. Vectors • Unlike arrays that can only store a single class and its subclasses Vectors can store anything in any position... Its up to you to remember what is in each element... Vector v=new Vector(); v.insertElementAt(new Monster(),0); v.insertElementAt(new Hero(),1);

  27. Vectors getting the value of an element • Unlike arrays elementAt is used to access an element of the Vector • However, element at returns a generic Object which must be type cast to be used Vector v=new Vector(); v.insertElementAt(new Monster(),0); Monster m=(Monster)v.elementAt(0); m.take_damage();

  28. Vectors and invalid type casts • If you use elementAt and type cast into the wrong type of object you will get a invalid type cast exception Vector v=new Vector(); v.insertElementAt(new Hero(),0); Monster m=(Monster)v.elementAt(0); m.take_damage();

  29. Finding the number of elements in a Vector • The vector is actually a class and we can ask it how many elements are in it using the size method Vector v=new Vector(); v.insertElementAt(new Hero(),0); v.insertElementAt(new Dragon(),1); int i=v.size();

  30. Removing items from Vectors • You can remove a single element from the Vector (all the high numbered elements are moved down to fill the gap) Vector v=new Vector(); v.insertElementAt(new Hero(),0); v.insertElementAt(new Dragon(),1); v.removeElementAt(0); • The elementAt(0) is now an instance of Dragon

  31. Removing All the items from a Vector • You can remove all the items from a vector Vector v=new Vector(); v.insertElementAt(new Hero(),0); v.insertElementAt(new Dragon(),1); v.removeAllElements();

More Related