Wednesday, November 6, 2019

6 ways to declare and initialize Two-dimensional (2D) String and Integer Array in Java - Example Tutorial

Declaring a two-dimensional array is very interesting in Java as Java programming language provides many ways to declare a 2D array and each one of them has some special things to learn about. For example, It's possible to create a two-dimensional array in Java without specifying the second dimension, sounds crazy right? but it's possible because two-dimensional array in Java is nothing but an array of array. You can even create a two-dimensional array where each subarray has a different length or different type, also known as a heterogeneous array in Java. This means it's possible to create a two-dimensional array with variable column length in Java.

Some of the ways described here also apply how you declare a one-dimensional array like changing the place of square brackets and how it impacts any other variables declared in the same line. This is actually a tricky concept to remember and you will always find some questions on this topic on Java certifications like OCAJP and OCPJP.

An array is a data structure which stores elements in the contiguous memory location and allowed constant time access using indexes. For a detailed description of an array and how to use it in your code, I suggest you go through a good data structure and algorithm course like Data Structures and Algorithms: Deep Dive Using Java on Udemy.

It will not only teach you about array but also other fundamental data structures like linked list, binary tree, and hash table, which are very important for your day-to-day programming.

Now, let's see a couple of ways to declare a two-dimensional array in Java to understand the concept better.




6 ways to declare and initialize a 2D String and Integer Array in Java

As far as Java is concerned, you should always remember that there is nothing like a two-dimensional array, in fact, it's just an array of one-dimensional array.  This is the key to writing an algorithm involving multi-dimensional array like looping through a 2D array, searching elements, etc.

Now, that you know what is a 2D or two-dimensional array in Java, let's see a couple of examples of how to create and initialize a 2D array. I have chosen both int and String array as they are the most common type of array you will find while coding.

1st Example - Declare the 2D array with both dimensions

Our first example is about declaring a 2D array with both dimensions. Let's declare a  homogeneous two-dimensional array following is a two-dimensional int array with 3 rows and 2 columns and next is 2 dimensional String array with 4 rows and 3 columns:

int[][] squares = new int[3][2];
String[][] cubes = new String[4][3];


2nd example -Declaring a two-dimensional array with just one dimension

In Java, you can declare a 2D array with just one dimension but that has to be the first dimension. Leaving both dimension or first dimension while declaring an array is illegal in Java and throw compile time error as shown below:

int[][] numbers = new int[][] ; // error - first dimension mandatory
int[][] primes = new int[][2] ; // error - first dimension mandatory

int[][] multipliers = new int[10][]; // ok, second dimension is optional
String[][] names = new String[5][];

Btw, if you a beginner and not familiar with array syntax in Java or if you want to learn more about Java Programming language, I also suggest you go through a comprehensive Java course like The Complete Java MasterClass on Udemy. It's also the most up-to-date course in Java and always updated to cover the latest Java version.

How to declare and Initialize 2D or two dimensional int and String Array in Java


Our 3rd example - position of the square bracket

You can also interchange square bracket position while declaring an array in Java as shown in the following code example:

int[] quotes[] = new int[2][2]; // ok

The important thing to note about this code is that here quotes is not a two-dimensional array but just one dimension array. We have actually declared int[] only

Another thing to remember about this code is that if multiple variables are declared in the same line they would be the type of int[] which is one dimensional, not two dimensional like in following example prices is a 2D array but abc is just a one-dimensional int array.

int[] prices[], abc;

Again, this is a tricky array concept in Java and that's why you will often find questions on this topic on various Java certifications. Btw, if you are preparing for Java certification then don't worry, all good exam simulators and exam software like Whizlabs and David Mayer's OCAJP dumps covers this topic very well.

4th example - another twist with the position of the square bracket

It is also possible to put both square brackets after variable name like in following declaration number is int variable, a is one-dimensional int array and b is a two-dimensional int array.

int number, a[], b[][];

If you are still confused then I suggest you take a look at Java Fundamentals Part 1 and Part 2 in Pluralsight, two of the in-depth Java courses on Pluarlsight.

how to declare 2D String array in Java with example

5th example - 2D array with the variable column length

Creating a 2D array where each array is of different length for example, in following code ids contain three one-dimensional int array each of different length i.e. 10, 20 and 30

int[][] ids = new int[3][];
ids[0] = new int[10];
ids[1] = new int[20];
ids[2] = new int[30];


6th example  - declaring and initializing a heterogeneous 2D array

Creating a heterogeneous 2D array in Java. In the heterogeneous array, each subarray is of a different type like in the following example, items subarray is of Integer, String and Float type.

Object[][] items = new String[3][];
items[0] = new Integer[]{1, 2, 4};
items[1] = new String[]{"a", "b"};
items[2] = new Float[]{1.0f, 2.0f};


Here is a summary of different ways of declaring a two-dimensional array in Java:

6 ways to declare a two dimensional array in Java



That's all about 6 different ways to declare a two-dimensional array in Java. You can see 2D array offers a lot of flexibility and power e.g. you can declare a 2D array without specifying the second dimension, you can declare two-dimensional array where each subarray is of different length, and you can even create a heterogeneous 2D or two-dimensional array in Java.

Further Learning
Data Structures and Algorithms: Deep Dive Using Java
Data Structures in Java: An Interview Refresher
Cracking the Coding Interview - 189 Questions and Solutions


Related Data Structure and Algorithm Interview Questions from Javarevisited Blog
  • Top 30 Array Coding Interview Questions with Answers (see here)
  • How to find a missing number in an array? (answer)
  • How to compare two arrays in Java? (answer)
  • How to reverse an array in place in Java? (solution)
  • Top 15 Data Structure and Algorithm Interview Questions (see here)
  • Top 20 String coding interview questions (see here)
  • How to remove duplicate elements from an array in Java? (solution)
  • How to find all pairs whose sum is equal to a given number in Java (solution)
  • Top 30 linked list coding interview questions (see here)
  • Top 50 Java Programs from Coding Interviews (see here)
  • 5 Free Data Structure and Algorithms Courses for Programmers (courses)
  • 10 Algorithms Books Every Programmer Should read (books)
  • 50+ Data Structure and Algorithms Problems from Interviews (questions)
  • 10 Free Data Structure and Algorithm Courses for Programmers (courses)
  • 100+ Data Structure Coding Problems from Interviews (questions)
Thanks for reading this article so far. If you like this article then please share with your friends and colleagues. If you have any question or doubt then please let us know and I'll try to find an answer for you. As always suggestions, comments, innovative and better answers are most welcome.

P. S. - If you are looking for some Free Algorithms courses to improve your understanding of Data Structure and Algorithms, then you should also check the Easy to Advanced Data Structures course on Udemy. It's authored by a Google Software Engineer and Algorithm expert and its completely free of cost.

2 comments :

Aakash Verma said...

If you execute those 4 lines of declaration in 6th example per se, it would definitely be a runtime error. To really induce dynamic binding as you want to with different wrapper types, you should actually go for "Objects[] items[]=new Objects[][];" and not "new String[][]".

Javin Paul said...

@Aakash, Yes, you are right, for storing objects, it has to be Objects[] items = new Object[][];

Post a Comment