Your first Java program | CodeGuru

Your first Java program

Bruce Eckel’s Thinking in Java Contents | Prev | Next Finally, here’s the program. [15] It prints out information about the system that it’s running on using various methods of the System object from the Java standard library. Note that an additional style of comment is introduced here: the ‘ //’, which is a comment […]

Written By
CodeGuru Staff
CodeGuru Staff
Mar 1, 2001
5 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Finally,


here’s the program.


[15]

It prints out information about the system that it’s running on using


various methods of the


System

object from the Java standard library. Note that an additional style of comment


is introduced here: the ‘


//

’,


which is a comment until the end of the line:

// Property.java
import java.util.*;
 
public class Property {
  public static void main(String[] args) {
    System.out.println(new Date());
    Properties p = System.getProperties();
    p.list(System.out);
    System.out.println("--- Memory Usage:");
    Runtime rt = Runtime.getRuntime();
    System.out.println("Total Memory = "
                       + rt.totalMemory()
                       + " Free Memory = "
                       + rt.freeMemory());
  }
}

At


the beginning of each program file, you must place the


import

statement to bring in any extra classes you’ll need for the code in that


file. Note that it is “extra.” That’s because there’s a


certain library of classes that are automatically brought into every Java file:


java.lang

.


Start up your Web browser and look at the documentation from Sun. (If you


haven’t downloaded it from


java.sun.com

or otherwise installed the Java documentation, do so now). If you look at the


packages.html

file, you’ll see a list of all the different class libraries that come


with Java. Select


java.lang

.


Under “Class Index” you’ll see a list of all the classes that


are part of that library. Since


java.lang

is implicitly included in every Java code file, these classes are automatically


available. In the list, you’ll see


System

and


Runtime

,


which are used in


Property.java

.


There’s no


Date

class listed in


java.lang

,


which means you must import another library to use that. If you don’t


know the library where a particular class is, or if you want to see all of the


classes, you can select “Class Hierarchy” in the Java


documentation. In a Web browser, this takes awhile to construct, but you can


find every single class that comes with Java. Then you can use the


browser’s “find” function to find


Date.

When


you do you’ll see it listed as


java.util.Date

,


which lets you know that it’s in the


util

library and that you must


import
java.util.*

in order to use


Date

.

If


you look at the documentation starting from the


packages.html

file (which I’ve set in my Web browser as the default starting page),


select


java.lang

and then


System

.


You’ll see that the


System

class has several fields, and if you select


out

you’ll discover that it’s a


static
PrintStream

object.


Since it’s


static

you don’t need to create anything. The


out

object is always there and you can just use it. What you can do with this


out

object is determined by the type it is: a


PrintStream

.


Conveniently,


PrintStream

is


shown in the description as a hyperlink, so if you click on that you’ll


see a list of all the methods you can call for


PrintStream

.


There are quite a few and these will be covered later in the book. For now all


we’re interested in is


println( )

,


which in effect means “print out what I’m giving you to the console


and end with a new line.” Thus, in any Java program you write you can say


System.out.println(“things”)

whenever you want to print something to the console.

The


name of the class is the same as the name of the file. When you’re


creating a stand-alone program such as this one, one of the classes in the file


must have the same name as the file. (The compiler complains if you don’t


do this.) That class must contain a method called


main( )

with the signature shown:

public
static void main(String[] args) {

The


public

keyword means that the method is available to the outside world (described in


detail in Chapter 5). The argument to


main( )

is an array of


String

objects. The


args

won’t be used in this program, but they need to be there because they


hold the arguments invoked on the command line.

The


first line of the program is quite interesting:

System.out.println(new
Date());

Consider


the argument: a


Date

object is being created just to send its value to


println( )

.


As soon as this statement is finished, that


Date

is unnecessary, and the garbage collector can come along and get it anytime. We


don’t need to worry about cleaning it up.

The


second line calls


System.getProperties( )

.


If you consult the online documentation using your Web browser, you’ll


see that


getProperties( )

is


a


static

method


of class


System

.


Because it’s


static

,


you don’t need to create any objects in order to call the method; a


static

method


is always available whether an object of its class exists or not. When you call


getProperties( )

,


it



produces


the system properties as an object of class


Properties

.


The handle that comes back is stored in a


Properties

handle called


p

.


In line three, you can see that the


Properties

object has a method called


list( )

that sends its entire contents to a


PrintStream

object that you pass as an argument.

The


fourth and sixth lines in


main( )

are typical print statements. Note that to print multiple


String

values, we simply separate them with ‘


+


signs. However, there’s something strange going on here. The ‘


+


sign doesn’t mean addition when it’s used with


String

objects. Normally, you wouldn’t ascribe any meaning to ‘


+


when you think of strings. However, the Java


String

class is blessed with something called “operator overloading.” That


is, the ‘


+


sign, only when used with


String

objects, behaves differently from the way it does with everything else. For


String

s,


it means “concatenate these two strings.”

But


that’s not all. If you look at the statement:

    System.out.println("Total Memory = "
                       + rt.totalMemory()
                       + " Free Memory = "
                       + rt.freeMemory());
totalMemory( )

and


freeMemory( )

return


numerical
values

,


and not


String

objects. What happens when you “add” a numerical value to a


String

?


The compiler sees the problem and magically calls a method that turns that


numerical value (


int

,


float

,


etc.) into a


String

,


which can then be “added” with the plus sign. This


automatic
type conversion

also falls into the category of operator overloading.

Much


of the Java literature states vehemently that operator overloading (a feature


in C++) is bad, and yet here it is! However, this is wired into the compiler,


only for


String

objects, and you can’t overload operators for any of the code you write.

The


fifth line in


main( )

creates a


Runtime

object by calling the


static

method


getRuntime( )

for the class


Runtime

.


What’s returned is a handle to a


Runtime

object; whether this is a static object or one created with


new

doesn’t need to concern you, since you can use the objects without


worrying about who’s responsible for cleaning them up. As shown, the


Runtime

object can tell you information about memory usage.



[15]

Some programming environments will flash programs up on the screen and close


them before you

ve had a chance to see the results. You can put in the


following bit of code at the end of


main( )

to pause the output:

  try {
      Thread.currentThread().sleep(5 * 1000);
    } catch(InterruptedException e) {}

}

This


will pause the output for five seconds. This code involves concepts that will


not be introduced until much later in the book, so you won’t understand


it until then, but it will do the trick.

Contents

|

Prev

|

Next
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.