260 likes | 373 Vues
This guide delves into the core concepts of object-oriented programming in Java, focusing on the differences between implementation and interface, the nature of variables, string comparisons, and the powerful HashMap class. You will learn how to interact with Java library classes, how to import packages, and the protocols for comparing strings. Furthermore, it explains how HashMaps map keys to values and their significance in data storage and retrieval, enhancing your understanding of Java's underlying mechanisms.
E N D
Coming up • Implementation vs. Interface • The Truth about variables • Comparing strings • HashMaps
Lecture 9 Shhh, no talking in the library OO
Coming up • Implementation vs. Interface • The Truth about variables • Comparing strings • HashMaps
Implementation and interface • The API describes • what a class does (interface of the class) • not how a class does it (implementation of a class) • When you write classes, you write the implementation of those classes
Library • The java library is full of helpful classes • Like ArrayList • What does the inside of an ArrayList look like? • How does it handle the resizing? • How does it know when the throw an error? • How does it handle renumbering when removing elements? Implementation
OO Interface • All we need to know to use the ArrayList class, and the other library classes is what their interface is • Interface is how we interact with a class • what methods to call • what they will return • etc
Importing • Library classes must be imported using an import statement • except classes from java.lang. • i.e. String – look it up on API import java.util.ArrayList; public class myClass{ ArrayList<String> arrl; arrl = new ArrayList<String>; public static void main(String[] args){ } }
Importing packages • Classes are organised in packages. • Single classes may be imported:import java.util.ArrayList; • Whole packages can be imported:import java.util.*;
Strings • Strings are actually objects • Did you notice we always use a capital S like other classes? • You don’t need to import them – they are from the automatically imported from java.lang.*; • As is System as in System.out.println()
Coming up • Implementation vs. Interface • The Truth about variables • Well, an abstract version of the truth anyway • Comparing strings • HashMaps
OO Have you ever.. • Accidently tried to output (print) an object? int[] array = new int[10]; System.out.println(array); You’ll get something like: [I@955cd5
OO What’s that? • This is the address in memory that the computer uses to store objects • in some other langauges (i.e. C++) you can manipulate those addresses and their contents directly • It’s time to look into the “variables as cups” anaology in a bit more detail
So far... • We’ve said • A variable is a cup • A primitive fits into a cup • A remote control to an object fits into a cup
The Truth • The “cup” is a bit of storage on a silicone chip in the computer somewhere • By giving the storage cups names, the computer associates the name of the cup with the address in memory where the storage is. • int age = 7; really means • “when the user types ‘age’ they really mean the contents of memory area 010111011010001010111001110101010”
The Truth • A bit pattern goes into the storage • 0100100111110101110101000011011000010011 • This bit pattern can either represent: • A number, character or other primitive value • The address in memory of something else, an object
OO So what? • Why is this important? • It’s important to know for comparing Strings.
Coming up • Implementation vs. Interface • The Truth about variables • Comparing strings • HashMaps
A word about comparing Strings Tests Identity if(input == “hello") { //code here } if(input.equals(“hello")) { //code here } • Strings should always be compared with.equals Tests Equality OO
OO identity vs equality • name1==name2 • False, different addresses • name1.equals(name2) • True, same value • name1==name2 • True, same address • name1.equals(name2) • True, same characters • name1 == name2 • False, different addresses • name1.equals(name2) • False, different value Memory Harry Ron Harry name1 name2 String String
Coming up • Implementation vs. Interface • The Truth about variables • Comparing strings • HashMaps
HashMap • One of the most useful classes in the library is the HashMap • It: • takes an object (The key) • looks at the internal properties within it • uses algorithms to compute a number based on those properties. This is the object’s hash code • stores the object in something like an array in the index given by the hash code
Then... • Then the HashMap associates the second object (the value) with the key object • This is useful
Maps Alfie 407351 • Maps are a collection type that map a key to a value • add(“Alfie”,“407351”); • and so on Memory Map: Name -> Phone number Jenny 763412
Lookup • Lookup is the act of supplying the key and having the value returned String num = myHashMap.get(“Alfie”); Memory myHashMap<String, Integer> Alfie 407351
HashMaps are used in upcoming labs... • you will come across Sets. They are a collection like any other, you can use the for-each loop with them etc • What happens if you add a key and a value, and then add the same key again, but with a different value? • Check out HashMaps in the API
Covered today • Implementation vs. Interface • The Truth about variables • Comparing strings • HashMaps