Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 292


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Intro to Java Tutorial

Go to all tips in General Java
The Java language, and the ever-growing Java platform, have revolutionized programming. The goal of this tutorial is to introduce you to the Java syntax you're most likely to encounter professionally, and to expose you to idioms that will help you avoid trouble. Follow along with Java professional Roy Miller as he guides you through the essentials Java programming, including the OOP paradigm and how it applies to Java programming; Java language syntax and use; creating objects and adding behavior, working with collections, handling errors; and tips for writing better code.

84 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Friday, January 21, 2005 (00:00:00) (3380 reads)

The Java Lesson 19: Initializing and processing arrays of primitives

Go to all tips in Java Lessons by Jon Huhtala
All Java Lessons contents page | Java Lesson 1 | Java Lesson 2 | Java Lesson 3 | Java Lesson 4 | Java Lesson 5 | Java Lesson 6 | Java Lesson 7 | Java Lesson 8 | Java Lesson 9 | Java Lesson 10 | Java Lesson 11 | Java Lesson 12 | Java Lesson 13 | Java Lesson 14 | Java Lesson 15 | Java Lesson 16 | Java Lesson 17 | Java Lesson 18 | Java Lesson 19 | Java Lesson 20 | Java Lesson 21 | Java Lesson 22 | Java Lesson 23 | Java Lesson 24 | Java Lesson 25 | Java Lesson 26 | Java Lesson 27 | Java Lesson 28 | Java Lesson 29 | Java Lesson 30 | Java Lesson 31 | Java Lesson 32 | Java Lesson 33 | Java Lesson 34 | Java Lesson 35 | Java Lesson 36 | Java Lesson 37 | Java Lesson 38 | Java Lesson 39 | Java Lesson 40 | Java Lesson 41 | Java Lesson 42 | Java Lesson 43 | Java Lesson 44 | Java Lesson 45 | Java Lesson 46

Initializing and processing arrays of primitives

Overview

An array is an indexed table of like values. While they can exist in more than one dimension, we are only interested in one-dimensional arrays as depicted by the following:

Index (offset) Value
[0]

217

[1]

138

[2]

92

[3]

12

[4]

168

This array consists of five elements where each is an integer value (217, 138, 92, 12, and 168).

To access a particular element within an array, its corresponding index (offset) is used. For example, the integer value at index location 3 within this array is 12. Notice that the indexes are zero based because the offset of the first element is always zero (you don't have to skip over any other elements to get there).

While all programming languages include the ability to process arrays, Java provides enhanced integrity and other features not found in other languages.

Java arrays

  • Require that all elements be of the same data type. For example, you may create an array of char values, or an array of float values, or an array of boolean values, etc..

You may NEVER have elements with different data types in the same array. This restriction guarantees that each element occupies the same amount of memory and helps the compiler calculate the location of each element based upon its index.

  • Are objects and must be declared like one. The general syntax is as follows:

data-type[] identifier = new data-type[n];

or

data-type identifier[] = new data-type[n];

where identifier is the array (object) reference and n is an integer expression that specifies how many elements are in the array. The first form is preferred. The second form is similar to the array definition technique used in C++.

For example, to create a 5 element array of int values a programmer might code

int[] myArray = new int[5];

Alternatively, a programmer may split the definition of the array reference and the instantiation of the array into two statements as follows:

int[] myArray;
myArray = new int[5];

Using either technique, it is important to understand what is created. The following diagram may help:

myArray

Heap space

----->

0

0

0

0

0

The array reference (myArray) can be thought of as pointing to the array whose elements reside on the memory heap.

Notes:

  1. At the time an array reference is declared, it initially contains null (it doesn't point to anything). It doesn't receive a value until an array is assigned to it.

  2. An array reference can only be assigned an array of the correct type. In the above example, myArray is declared to be a reference to an int array, so only an array of int values can ever be assigned to it. To attempt otherwise will result in a compile error.

  3. An array reference may be reused to point to a different array (of the appropriate type). Like all objects, however, an array that can no longer be referenced will be garbage collected.

  4. When instantiated, all array elements are automatically initialized to binary zeros. This means all elements of numeric arrays will be zero, all elements of boolean arrays will be false, and all elements of char arrays will be the null character.

  • Can be constructed from a value list. This is an alternative construction technique as shown by

char[] chars = {'a', 'b', 'c'};

which creates a three element array of characters. The first element is initialized to 'a', the second is initialized to 'b', and the third is initialized to 'c'.

Notes:

  1. The number of elements in the array is determined by the number of values in the list and the new keyword isn't coded.

  2. When a value list is used, it can only be coded in the statement that declares the array reference. In other words, the following will not compile:

char[] chars;
chars = {'a', 'b', 'c'};

  • Permit an element to be accessed via its unique index. For example, if an array is defined as

int[] numbers = {12, 15, 3, 8};

the following expression will reference the third element (an int with a value of 3)

numbers[2]

Notes:

  1. An index must be int or able to be widened to int to avoid a compile error. It may not be boolean, long, float, or double.

  2. If an index is negative of exceeds the maximum valid index for the array, a runtime error occurs. The JVM will throw an ArrayIndexOutOfBoundsException. Catching and processing such exceptions is a topic in advanced Java.

  • Have a publicly available length field. This is an int constant representing the number of elements within the array. It is extremely useful when coding a loop to process all the elements within an array.

For example, the following small program creates an array, loads it with some random numbers, and displays the array's contents:

public class App {
public static void main(String[] args) {
double[] values = new double[10];
for (int i = 0; i < values.length; i++) {
values[i] = Math.random();
}
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
}
}

Notes:

  1. In an array object, length is a field and NOT a method. A common mistake is to code length() as you would with a String or StringBuffer object and get a compile error.

  2. Because the for loops are limited by the length of the array, the code is very flexible. Changing the number of elements in the array declaration is all that is needed to work with a different sized array.


Sample program

The following program allows a user to specify the number of elements and the actual element values for an array of double variables. After the values have been entered, the array is displayed along with summary information about its contents. The user is then asked if they want to do another array.

public class App {
public static void main(String[] args) {

// Loop control variable.

char again = 'y';

// Main loop. One array is entered and processed in each iteration.

another:

while (again == 'Y' || again =='y') {

// Local variables for performing array processing.

double[] numbers;
int noElements;
double total;
double largest;
double smallest;

// Prompt for and read how many numbers the array is to contain.

Utility.separator(40, '=');
System.out.print("How many numbers will you enter? " );
noElements = Keyboard.readInt();

// If the number of elements is invalid, display an error message
// and continue the main loop from the beginning.

if (noElements <= 0) {
Utility.skip();
System.out.println(" Invalid number of elements");
continue another;
}

// Instantiate the array and loop to load its elements with values
// entered by the user.

numbers = new double[noElements];
Utility.skip();
for (int i = 0; i < noElements; i++) {
System.out.print("Element (" + i + "): ");
numbers[i] = Keyboard.readDouble();
}

// Display a message saying that loading is complete.

Utility.skip();
System.out.println(" Loading is complete");
System.out.println(" The array contains:");

// Prepare to display the array and gather array statistics. Prior
// to looping, the largest and smallest values are assumed to be
// the first element and the total is set ot zero.

Utility.skip();
largest = numbers[0];
smallest = numbers[0];
total = 0;

// Loop through the entire array to display the value of each
// element. Along the way, the total of all elements is
// accumulated and the largest and smallest element values
// are found.

for (int i = 0; i < noElements; i++) {
System.out.println(" " + numbers[i]);
total += numbers[i];

// If beyond the first element, test for a new largest and
// smallest element and save them if found.

if (i != 0) {
if (numbers[i] > largest) {
largest = numbers[i];
}
if (numbers[i] < smallest) {
smallest = numbers[i];
}
}
}

// Display the array statistics.

Utility.skip();
System.out.println(" Largest: " + largest);
System.out.println(" Smallest: " + smallest);
System.out.println(" Average: " + total/numbers.length);
System.out.println(" Total: " + total);

// Ask the user if they want to do it again and repeat the loop as
// requested.

Utility.separator(40, '=');
System.out.print("Again? (Y/N): ");
again = Keyboard.readChar();
}
}
}

Looking ahead

In this lesson, each array element was of a primitive data type. Java also permits object arrays in which each element is an object (such as a String or StringBuffer object). You can also pass an array to a method and receive an array from a method. These topics will be covered in the next few lessons.

Lab exercise for Ferris students

E-mail your answers to this assignment no later than the due date listed in the class schedule.

Review questions

  1. Assuming that all unseen code is correct, what will result from attempting to compile and execute the following code? The line numbers are for reference purposes only.

1
2
3
long[] array;
array = new long[5];
System.out.println("Value is: " + array[4]);
  1. Compilation will fail at line 1

  2. Compilation will fail at line 2

  3. Compilation will fail at line 3

  4. Compilation will succeed but a runtime error will occur

  5. Compiles and runs to display "Value is: 0"

  6. Compiles and runs to display an unpredictable value

  1. Assuming that all unseen code is correct, what will result from attempting to compile and execute the following code? The line numbers are for reference purposes only.

1
2
double[] x = {2.1, 3.7, -1.8};
System.out.println("Value is: " + x[3]);
  1. Compilation will fail at line 1

  2. Compilation will fail at line 2

  3. Compilation will succeed but a runtime error will occur

  4. Compiles and runs to display "Value is: -1.8"

  5. Compiles and runs to display "Value is: 0.0"

  6. Compiles and runs to display an unpredictable value

  1. What will result from an attempt to compile and execute the following statement?

char z = {'x', 'y', 'z'};

  1. The statement will not compile

  2. The statement will compile and execute to create an array having 3 elements

  3. z[1] will have a value of 'x'

  4. z[2] will have a value of 'z'

  5. both B and D

  1. True or False: If someArray references an array of int variables, the following expression represents the number of elements in the array.

someArray.length()

  1. True

  2. False


9964 bytes more | 3 comments | Printer Friendly Page  Send to a Friend | Score: 5
Posted by jalex on Thursday, January 20, 2005 (00:00:00) (13842 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293|
292
| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy