12.5 Chapter Summary
Summary of the main points in this chapter.
You can find the code from this lecture here.
Exceptions
Most likely you have encountered an exception in your code such as a NullPointerException
or an IndexOutOfBoundsException
. Now we will learn about how we can “throw” exceptions ourselves. Here is an example of an exception that we throw:
This is useful to ensure reasonable functioning of our code, even when facing unexpected behavior.
Iteration
Difference between Iterators and Iterables
These two words are very closely related, but have two different meanings that are often easy to confuse. The first thing to know is that these are both Java interfaces, with different methods that need to be implemented. Here is a simplified interface for Iterator:
Here is a simplified interface for Iterable:
Notice that in order for an object (for example an ArrayList or LinkedList) to be iterable, it must include a method that returns an iterator. The iterator is the object that actively steps through an iterable object. Keep this relationship and distinction in mind as you work with these two interfaces.
Object Methods
toString
The toString()
method returns a string representation of objects. For example, System.out.println(someObject)
calls the toString()
method of someObject
, and prints to console whatever string it returns.
This is most helpful when we are debugging, as it allows us to much more easily understand the current state of our Objects.
== vs .equals
We have two concepts of equality in Java- “==” and the “.equals()” method. The key difference is that when using ==, we are checking if two objects have the same address in memory (that they point to the same instance or object). On the other hand, .equals() is a method that can be overridden by a class and can be used to define some custom way of determining equality. This permits the class to utilize the additional knowledge it has about itself to more accurately answer questions of equality.
For example, say we wanted to check if two stones are equal:
If we want to consider s and r equal because they have the same weight. If we do check equality using ==, these Stones would not be considered equal because they do not have the same memory address.
On the other hand, if you override the equals method of Stone as follows
We would have that the stones would be considered equal because they have the same weight.
Last updated