*Through the use of the **interface** keyword, Java allows you to fully abstract the interface from its implementation. Using interface, you can specify a set of methods that can be implemented by one or more classes. The interface, itself, does not actually define any implementation. Although they are similar to abstract classes, interfaces have an additional capability: A class can implement more than one interface. By contrast, a class can only inherit a single superclass (abstract or otherwise).*
*There is one special class, **Object**, defined by Java. All other classes are subclasses of Object. That is, Object is a superclass of all other classes. This means that a reference variable of type Object can refer to an object of any other class. Also, since arrays are implemented as classes, a variable of type Object can also refer to any array.*
* The Object Class
* The String Class
* Wrapper Classes
* The Math Class
> *The **String Class** represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. Strings are constant; their values cannot be changed after they are created. Java String class provides a lot of methods to perform operations on strings such as compare(), concat(), equals(), split(), length(), replace(), compareTo(), intern(), substring() etc.*
> *The **wrapper class** in Java provides the mechanism to convert primitive into object and object into primitive.*
> *The **class Math** contains methods for performing basic numeric operations such as the elementary exponential, logarithm, square root, and trigonometric functions.*
> *As with all modern programming languages, Java supports several types of data. You may use these types to declare variables and to create arrays. Java’s approach to these items is clean, efficient, and cohesive.*
> *An **array** is a group of like-typed variables that are referred to by a common name. Arrays of any type can be created and may have one or more dimensions. A specific element in an array is accessed by its index. Arrays offer a convenient means of grouping related information.*
> *An **ArrayList** class is a resizable array, which can be found in the java.util package. The difference between a built-in array and an ArrayList in Java, is that the size of an array cannot be modified (if you want to add or remove elements to/from an array, you have to create a new one). While elements can be added and removed from an ArrayList whenever you want.*
> *An **ArrayList** class is a resizable array, which can be found in the java.util package. The difference between a built-in array and an ArrayList in Java, is that the size of an array cannot be modified (if you want to add or remove elements to/from an array, you have to create a new one). While elements can be added and removed from an ArrayList whenever you want.*
> ***Recursion** is the technique of making a function call itself. This technique provides a way to break complicated problems down into simple problems which are easier to solve.*
> ***Sorting** is the process of arranging the elements of an array so that they can be placed either in ascending or descending order.*
> ***Searching Algorithms** are designed to check for an element or retrieve an element from any data structure where it is stored.*
> *In this, we will try to create an activity on the basis of concepts learned so far.*