Back to Java
2025-12-257 min read

Rust Arrays (Java)

Learn Rust Arrays (Java) step by step with clear examples and exercises.

Why This Matters

Arrays are a fundamental data structure in Java that allow us to store collections of elements of the same type efficiently. Understanding arrays is crucial for solving complex problems, writing efficient code, and preparing for interviews and exams. In this guide, we will delve into the core concepts of Rust Arrays in Java, providing practical examples, common mistakes, and practice questions to help you master this fundamental concept.

Prerequisites

Before diving into Rust Arrays, it's essential to have a good understanding of the following Java basics:

  • Variables and data types
  • Operators
  • Control structures (if-else statements, loops)
  • Classes and objects
  • Exception handling (optional but recommended for more complex examples)
  • Basic concepts of object-oriented programming (classes, inheritance, interfaces, etc.)

Core Concept

Declaring an Array

In Java, arrays are objects that can be created using the new keyword. To declare an array of a specific type, you first define its size and then create it using the new keyword:

int[] myArray; // declaration
myArray = new int[5]; // creation

In this example, we've created an integer array called myArray with a length of 5.

Initializing an Array

You can initialize an array by assigning values to each element during its creation:

int[] myArray = {1, 2, 3, 4, 5}; // declaration and initialization

Accessing Array Elements

To access an element in an array, you use its index. Indices start at 0 and go up to one less than the array's length:

int firstElement = myArray[0]; // firstElement now holds 1

Modifying Array Elements

You can modify an array element by assigning a new value to it using its index:

myArray[0] = 10; // now, myArray contains {10, 2, 3, 4, 5}

Array Length

To find the length of an array, you can use the length property:

int arrayLength = myArray.length; // arrayLength now holds 5

Multi-dimensional Arrays

Java supports multi-dimensional arrays as well. To create a two-dimensional array, for example, you specify the number of rows and columns when creating the array using brackets:

int[][] my2DArray = {{1, 2}, {3, 4}}; // a 2x2 integer array

Array Copying

To copy an array in Java, you can use the System.arraycopy() method:

int[] sourceArray = {1, 2, 3};
int[] destinationArray = new int[sourceArray.length];
System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length);

Array Sorting

Java provides several built-in sorting algorithms for arrays, such as Arrays.sort(). Here's an example using the bubble sort algorithm:

int[] unsortedArray = {5, 3, 1, 4, 2};
for (int lastUnsortedIndex = unsortedArray.length - 1; lastUnsortedIndex > 0; lastUnsortedIndex--) {
for (int i = 0; i < lastUnsortedIndex; i++) {
if (unsortedArray[i] > unsortedArray[i + 1]) {
int temp = unsortedArray[i];
unsortedArray[i] = unsortedArray[i + 1];
unsortedArray[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(unsortedArray)); // prints [1, 2, 3, 4, 5]

Static Initialization Blocks

Static initialization blocks can be used to initialize arrays with custom values:

public class MyArray {
static int[] myArray = {1, 2, 3};

static {
// you can perform additional initialization here if needed
}
}

Primitive vs Object Arrays

Java has both primitive and object arrays. Primitive arrays hold values of primitive data types (int, char, boolean, etc.), while object arrays hold references to objects:

int[] intArray = new int[5]; // a primitive array of integers
String[] stringArray = new String[3]; // an object array of strings

Array List vs Array

Arrays and ArrayLists are both used for storing collections of elements, but they have some differences:

  • Arrays are fixed-size data structures that require explicit initialization of their size.
  • ArrayLists can dynamically grow or shrink as elements are added or removed, making them more flexible than arrays.

Generic Types and Array Limitations

Java does not support generic types for arrays directly. However, you can use the Object type to create an array that can hold any object:

Object[] mixedArray = new Object[]{1, "hello", new Date()}; // an array that holds integers, strings, and a Date object

Array Iteration

You can iterate through arrays using for-each loops or traditional for loops:

int[] myArray = {1, 2, 3};

// for-each loop
for (int element : myArray) {
System.out.println(element);
}

// traditional for loop
for (int i = 0; i < myArray.length; i++) {
System.out.println(myArray[i]);
}

Worked Example

Let's create a simple Java program that calculates the sum of all elements in an array:

public class ArraySum {
public static void main(String[] args) {
int[] myArray = {1, 2, 3, 4, 5};
int sum = 0;

// for-each loop
for (int element : myArray) {
sum += element;
}

System.out.println("The sum of all elements in the array is: " + sum);
}
}

When you run this program, it will output 15, which is the sum of all elements in the array.

Common Mistakes

Forgetting to Initialize an Array

If you forget to initialize an array before using it, you'll get a NullPointerException:

int[] myArray; // just declaration, not initialization
System.out.println(myArray[0]); // throws NullPointerException

Accessing Array Out of Bounds

Accessing an array element with an index greater than or equal to its length will result in a ArrayIndexOutOfBoundsException:

int[] myArray = {1, 2, 3};
System.out.println(myArray[3]); // throws ArrayIndexOutOfBoundsException

Forgetting to Increment the Loop Variable

If you forget to increment the loop variable in a for loop, you'll create an infinite loop:

int[] myArray = {1, 2, 3};
int sum = 0;
for (int i = 0; i < myArray.length; ) { // no semicolon after the condition
sum += myArray[i];
System.out.println(myArray[i]);
}

Using an Uninitialized Array Length

If you use an uninitialized array length, you'll get a NullPointerException:

int[] myArray; // just declaration, not initialization
int arrayLength = myArray.length; // throws NullPointerException

Common Mistakes (CONT.)

Forgetting to Check for Empty Arrays

If you perform operations on an empty array without checking its length first, you might encounter IndexOutOfBoundsException:

int[] myArray = {}; // an empty array
System.out.println(myArray[0]); // throws IndexOutOfBoundsException

Using Primitive Arrays Incorrectly with Object Methods

Primitive arrays are not objects and do not have methods like toString(). To convert a primitive array to a string, you can use the Arrays.toString() method:

int[] myArray = {1, 2, 3};
System.out.println(myArray); // prints [I@785645f9 (not what we want)
System.out.println(Arrays.toString(myArray)); // prints [1, 2, 3]

Using Object Arrays with Primitive Methods

If you try to use object arrays with primitive methods, you'll get a compile-time error:

Object[] myArray = {1, 2, 3}; // an object array
int sum = myArray.sum(); // compilation error: no such method 'sum()'

Incorrect Comparison of Primitive Arrays

Primitive arrays are compared using the == operator, not .equals():

int[] firstArray = {1, 2, 3};
int[] secondArray = {1, 2, 3};
if (firstArray == secondArray) { // correct comparison
System.out.println("Arrays are equal");
}
if (firstArray.equals(secondArray)) { // compilation error: no such method 'equals()'
System.out.println("Arrays are equal");
}

Practice Questions

  1. Write a program that finds the maximum number in an array.
  2. Create a program that reverses the order of elements in an array.
  3. Write a program that finds all duplicates in an array.
  4. Implement a Java method that sorts an array using the bubble sort algorithm.
  5. Write a program that finds the second largest number in an array.
  6. Create a program that finds all pairs of elements in an array whose sum equals a given target value.
  7. Write a program that merges two sorted arrays into one.
  8. Write a program that checks if an array contains a specific value.
  9. Implement a Java method that rotates an array by a given number of positions.
  10. Write a program that finds the kth smallest number in an unsorted array.
  11. Create a program that finds all permutations of an array.
  12. Implement a Java method that finds the median of an array.
  13. Write a program that checks if an array is sorted in ascending order.
  14. Implement a Java method that finds the first missing number in an array.
  15. Create a program that finds all subarrays with a given sum.

FAQ

Q: Can I create arrays of different data types in Java?

A: Yes, you can create arrays of different data types in Java. For example:

int[] intArray = new int[5]; // an array of integers
String[] stringArray = new String[3]; // an array of strings

Q: How do I create a multi-dimensional array in Java?

A: To create a multi-dimensional array in Java, you specify the number of rows and columns when creating the array using brackets:

int[][] my2DArray = {{1, 2}, {3, 4}}; // a 2x2 integer array

Q: How do I create an empty array in Java?

A: To create an empty array in Java, you can initialize it without providing any values:

int[] myEmptyArray = new int[0];

Q: How do I find the index of a specific element in an array in Java?

A: To find the index of a specific element in an array, you can use the Arrays.binarySearch() method or write your own linear search algorithm:

int[] myArray = {1, 2, 3, 4, 5};
int target = 3;
int index = Arrays.binarySearch(myArray, target); // returns 2 (the index of the target element)

Q: How do I create a dynamic array in Java?

A: In Java, you can't create a true dynamic array like in some other languages. However, you can use ArrayLists as a more flexible alternative to arrays:

import java.util.ArrayList;

ArrayList<Integer> myDynamicArray = new ArrayList<>(); // an empty dynamic array of integers
myDynamicArray.add(1);
myDynamicArray.add(2);
myDynamicArray.add(3);

Q: How do I sort an array in Java?

A

Rust Arrays (Java) | Java | XQA Learn