Lab guideJava

Lab 5: Packages And Array In Java

Last updated 2 December 2023

Package in Java

Definition: A package is a grouping of related types providing access protection and namespace management. Note that types refer to classes, interfaces, enumerations, and annotation types. Enumerations and annotation types are special kinds of classes and interfaces, respectively, so types are often referred to in this lesson simply as classes and interfaces.

Why we need to create a package

Purpose: To make types easier to find and use, to avoid naming conflicts, and to control access, programmers bundle groups of related types into packages.

Case: Suppose you write a group of classes that represent graphic objects, such as circles, rectangles, lines, and points. You also write an interface, Draggable, that classes implement if they can be dragged with the mouse.

//in the Draggable.java file
public interface Draggable {
    ...
}

//in the Graphic.java file
public abstract class Graphic {
    ...
}

//in the Circle.java file
public class Circle extends Graphic implements Draggable {
    . . .
}

//in the Rectangle.java file
public class Rectangle extends Graphic implements Draggable {
    . . .
}

//in the Point.java file
public class Point extends Graphic implements Draggable {
    . . .
}

//in the Line.java file
public class Line extends Graphic implements Draggable {
    . . .
}

You should bundle these classes and the interface in a package for several reasons, including the following:

  • You and other programmers can easily determine that these types are related.
  • You and other programmers know where to find types that can provide graphics-related functions.
  • The names of your types won’t conflict with the type names in other packages because the package creates a new namespace.
  • You can allow types within the package to have unrestricted access to one another yet still restrict access for types outside the package.

Creating a Package in Java

To create a package, you choose a name for the package (naming conventions are discussed in the next section) and put a package statement with that name at the top of every source file that contains the types (classes, interfaces, enumerations, and annotation types) that you want to include in the package. For instance, The package statement (for example, package graphics😉 must be the first line in the source file. There can be only one package statement in each source file, and it applies to all types in the file. Here, the package name is ‘graphics’.

//in the Draggable.java file
package graphics;
public interface Draggable {
    . . .
}

//in the Graphic.java file
package graphics;
public abstract class Graphic {
    . . .
}

//in the Circle.java file
package graphics;
public class Circle extends Graphic
    implements Draggable {
    . . .
}

//in the Rectangle.java file
package graphics;
public class Rectangle extends Graphic
    implements Draggable {
    . . .
}

//in the Point.java file
package graphics;
public class Point extends Graphic
    implements Draggable {
    . . .
}

//in the Line.java file
package graphics;
public class Line extends Graphic
    implements Draggable {
    . . .
}

Note: If you do not use a package statement, your type ends up in an unnamed package which is like default. Honestly speaking, an unnamed package is only for small or temporary applications or when you are just beginning the development process. Otherwise, classes and interfaces belong in named packages.

Case 0: All the import statement must be written above of the class keyword

//save as Temp.java
import java.awt.\*;     // "import" keyword is responsible for importing package  
import java.util.\*;      // ‘\*’ includes all the classes & interfaces of that package
class Temp{
    public static void main(String s\[\]){
        Frame f=new Frame(); // “Frame” is class of    awt    package
        Date d=new Date();    // “Date” is a class of   util    package
                System.out.println(d);  // reference variable d of class is containing the current date and time
    }
}
/\*
Output:

            F:\\coreJAVA\\9Packages>javac Temp.java
            F:\\coreJAVA\\9Packages>java Temp
            Wed Aug 11 10:15:40 IST 1993

\*/

Case 1: Without any import statement

//save as Temp2.java 
class Temp2{
    public static void main(String s\[\]){
        // Fully qualified class path
        java. uti l.Date d= new java.util.Date();
        System.out.println(d);
    }
}
/\*
Output:

            F:\\coreJAVA\\9Packages>javac Temp2.java
            F:\\coreJAVA\\9Packages>java Temp2
            Wed Aug 11 10:15:40 IST 2020

\*/

Array in Java

Normally, an ARRAY is a collection of similar type of elements that have a contiguous memory location.Java array is an object which contains elements of a similar data type. It is a data structure where we store similar elements. We can store only a fixed set of elements in a Java array.

Case 0: Creating a dynamic array

// save as Array1.java
class Array1{   
    public static void main(String s\[\]){
    int x\[\]=new int\[10\];                      // creating array as dynamically
    for(int i=0;i<x.length;i++){          // for loop to store array
        x\[i\]=i+1;
    }
        System.out.print("Array is:");  // to print in same line
    for(int i=0;i<x.length;i++){      // for loop to print array
        
        System.out.print("  "+x\[i\]); // to print array
    
    }
    System.out.println("\\nsize of array is:  "+ x.length); // to print size of array
    
        }
    
}
Output
Javac Array1.java
Java Array1
Array is: 1 2 3 4 5 6 7 8 9 10
size of array is : 10

Case 1: Finding a maximum value of an array

// save as Array2.java

class Array2{
    public static void main(String s\[\]){
        int x\[\]={100,20,30,40,50,900};// array initialization
        for(int i=0;i<x.length;i++){
            System.out.println(x\[i\]);
        }
        //finding the maximum value of array
        int max = x\[0\];    
        for(int i = 0; i < x.length; i++) {
        // comparison between among numbers
            if(max < x\[i\]){ 
                max = x\[i\];
            }
        }
        //printing the maximum value
        System.out.println("Maximum value:"+max);
    }
}
/\*
Output:
            F:\\coreJAVA\\10ARRAY>javac Array2.java
            F:\\coreJAVA\\10ARRAY>java Array2
            100
            20
            30
            40
            50
            900
            Maximum value: 900
\*/

Case 2: Array declaration in constructor

//save as Array3.java
class Array3{
    int \[\]a;
    Array3(int z){                 // constructor
        a=new int\[z\];
        System.out.print("Array is:");         // to print array
        for(int i=0;i<a.length;i++){
            a\[i\]=i+1;
            System.out.print(" "+a\[i\]);
        }
    }
    public static void main (String ...s){
        Array3 arr=new Array3(12);
    }
}

/\*
Output:
            F:\\coreJAVA\\10ARRAY>javac Array3.java
            F:\\coreJAVA\\10ARRAY>java Array3
            Array is: 1 2 3 4 5 6 7 8 9 10 11 12

\*/

Case 3: Passing array to method:

// save as Array4.java

class  Array4{  
    //creating a method which receives an array as a parameter  
    static void min(int arr\[\]){ 
    int min=arr\[0\];  
    for(int i=1;i<arr.length;i++)// finding minimum
        if(min>arr\[i\])  
            min=arr\[I\];  
        //to print minimum value
        System.out.println("minimum elements of an array is "+min);
    }  
  
    public static void main(String args\[\]){  
        //declaring and initializing an array
        int a\[\]={33,3,4,50,60,80,10};  
        min(a);//passing array to method  
    }
}
/\*
Output:
            F:\\coreJAVA\\10ARRAY>javac Array4.java
            F:\\coreJAVA\\10ARRAY>java Array4
           minimum elements of an array is  3

\*/

Case 4: Creation of Anonymous Array

//save as AnonymousArray.java
public class AnonymousArray{ 
 
    /\*	
        creating a method which receives an array as a parameter  
        static method can be referenced from static context
    \*/
    static void printArray(int arr\[\]){     
        for(int i=0;i<arr.length;i++)  
            System.out.println(arr\[i\]);// printing array
    }  
    public static void main(String args\[\]){
        //passing anonymous array to method  		
        printArray(new int\[\]{10,22,44,66}); 
    }
}  
/\*
Output:
            F:\\coreJAVA\\10ARRAY>javac AnonymousArray.java
            F:\\coreJAVA\\10ARRAY>java AnonymousArray
           10
           22
           44
\*/

Case 5: ArrayIndexOutOfBoundsException in a Java Array

//save as TestArrayException.java
class TestArrayException{  
    public static void main(String args\[\]){  
        int arr\[\]={50,60,70,80};  
        for(int i=0;i<=arr.length;i++){  
            System.out.println(arr\[i\]);  
        }  
    }
} 
Output
F:\\coreJAVA\\image>javac TestArrayException.java

F:\\coreJAVA\\image>java TestArrayException
50
60
70
80
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
        at TestArrayException.main(TestArrayException.java:6)
Case 6: Array of Arrays
//save as Array5.java
class Array5 {
    public static void main(String args\[\]) {
        
        // declaring and initializing 2D array
        int arr\[\]\[\] = { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } }; 
         // printing 2D array
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                
                System.out.print(arr\[i\]\[j\] + " ");
            }
            System.out.println();
        }
    }
}
/\*
 Output:
            F:\\coreJAVA\\10ARRAY>javac AnonymousArray.java
            F:\\coreJAVA\\10ARRAY>java AnonymousArray
           1 2 3
           2 4 5
           4 4 5
\*/
Case 7: Addition of Array
//save as Array6.java
class Array6{
    public static void main(String s\[\]){
        int a\[\]\[\]={{2,4,6},{3,5,7}};        // initializing 2D array
        int b\[\]\[\]={{1,6,3},{5,10,5}};
        
        int c\[\]\[\]=new int\[2\]\[3\];           // creating variable to store the result 
        System.out.println("sum of two matrices:");
        for(int i=0;i<2;i++){                 // logic of adding two matrices 
            for(int j=0;j<3;j++){
                c\[i\]\[j\]=a\[i\]\[j\]+b\[i\]\[j\];
            System.out.print("  "+c\[i\]\[j\]+" ");
            }
            System.out.println();    // to change line
        }
    }
}
Output
javac Array6.java
jav Array6
sum of two matrices: 
3 10 9
8 15 12
Case 8: Multiplication of Array
// save as MatrixMulti.java
class MatrixMulti{
    public static void main(String s\[\]){
        int a\[\]\[\]={{1,2,3},{2,2,2},{3,3,3}};
        int b\[\]\[\]={{1,2,1},{2,2,2},{3,3,3}};
        int c\[\]\[\]=new int\[3\]\[3\];  // matrix of 3\*3
        
        for(int i=0;i<3;i++){                 
            for(int j=0;j<3;j++){
                c\[i\]\[j\]=0;
                for(int k=0;k<3;k++){
                    c\[i\]\[j\]=c\[i\]\[j\]+a\[i\]\[k\]\*b\[k\]\[j\];  // logic of array multiplication
                }
                System.out.print(c\[i\]\[j\]+"  ");
            }
            System.out.println();
        }
    }
}
Output
javac MatrixMulti.java
java MatrixMulti
14 15 14 
12 14 12
18 21 18
Learn this on the racks

Reading it is one thing. Configuring it is another.

Our batches run labs like this one end to end on real kit, in the Mumbai classroom or live online, taught by practicing engineers.