Java Objects

You've probably heard or read that Java is a so-called object-oriented language. That means that Java has some special features to allow us to organise our program and data into objects. For now, we can think of things as follows:

An object is some data plus routines to manipulate that data, all packaged together.

Another way of thinking about things is that an object is a "thing with properties". OK, that last point will sound either weird or a statement of the obvious, but all will hopefully become clear in a moment...

To help us understand what an object is, we'll delve straight in and use one. We're going to write a program to simulate 20 dice rolls: that is, print out 20 random numbers between 1 and 6. To do so, we're going to create an object that will act as a random number generator. Once we've created it, then we will call one of its routines 20 times to generate 20 random numbers. The main part of the code looks as follows:

import java.util.Random;

Random ran = new Random();
for (int i = 0; i < 20; i++) {
  int dice = 1 + ran.nextInt(6);
  System.out.println(dice);
}

The very first line (the one that begins with the word import) goes at the top of the program file. In fact, it goes just below the line beginning with the word package which most IDEs will create. The other lines go in the usual place, i.e. inside the curly braces { } after the line public static void main(String[] args) that the IDE will also have created.

Some of this will hopefully be familiar, and some of it won't. You should recognise the code for a for loop . The line with System.out.println for printing something out is also hopefully familiar, even though we still haven't really explained what System.out.println actually means.

Then, the first line of this code creates an object. As you can see, we use the new keyword, in a similar way to when we created an array. But this time we're creating an object1. We also have to specify the type of variable, just as before when we created variables of type int. But this time, our variable type is the type of object. The type or class of object is called Random. This is one of the many object classes built into the standard Java libraries2. (The import essentially tells Java that we're going to be using this class— notice that it has an extra part java.util which says which "package" or part of the libraries the class comes from.)

If you imagine "creating an object" is picking up a calculator, we now want to "push some buttons" on the calculator. For this, we need to call a method. This is the part of the program that says ran.nextInt(6). Here, we're taking the object that we created and called ran, and we're calling a routine (or method in Java jargon) that acts on that object. Notice that the method can take a parameter— in this case 6, the maximum random value— and returns a result— in this case, the random number generated. Notice an important piece of syntax: any parameters go inside normal brackets after the method name (which is nextInt() in this case).

Finally, we add 1 to the random number returned by the nextInt() method. The reason we do this is that nextInt() actually returns a number between 0 and one less than the number we supply, between 0 and 5 inclusive in this case), and to simulate a dice roll we actually need numbers between 1 and 6 inclusive.

Next: more arrays

Now we've introduced the very basics of objects, we're actually going to skip back to arrays temporarily, and look at some more examples of working with Java arrays.


1. Actually, a subtlety in Java is that arrays are also objects, but we'll pretend they're different things for now. Arrays are in any case "special".
2. In computing, a library is a set of "general" or "standard" routines— or, in the case of Java, classes— provided with a language, or sometimes, as an "extension" to the language.


If you enjoy this Java programming article, please share with friends and colleagues. Follow the author on Twitter for the latest news and rants.

Editorial page content written by Neil Coffey. Copyright © Javamex UK 2021. All rights reserved.