Saturday, 30 November 2013

Data-types in Java

Lets have a look at primitive datatypes in Java with their sizes and ranges.

S. No.Data-typeSizeRange
1byte8-bit-128 to 127
2short16-bit-32,768 to 32,767
3integer32-bit-2147483648 to 2147483647
4long64-bit-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
5float32-bit- Floating point integer -
6double64-bit- Floating point integer -
Apart from these primitive data types, java.lang.String provides a data-type String.

Now lets look at the examples to learn how to use these in our programs. We'll be initializing these data-types and printing them to see how they look like...




Each data-type has its benefits and limitations. A good programmer exploits the benefits and avoids the limitation. Let us take the following case...

Assume we have a huge array of 10000000000 indices. And the value that we wish to store against each index is between 0 to 5. (Like in case of movie ratings!). So here, instead of using integer we can use byte to save space because we are certain that the value will never be greater than 5.

But at times we might tend to go over-board with this and encounter errors in our programs! Like if we wish to store radius of curvature of a rocket in flight, we would want to use a data-type that can hold huge and precise values rather than something like byte or short!

So its all about striking a good balance :)
| Advertisement |

Thursday, 14 November 2013

Random integers between two values (a range) in java

Refer to : http://mycodedock.blogspot.in/2013/11/random-integers-in-java.html

Before we go to it, look at the code below. It generates 100 random numbers between 0 and 50 using randomObject.nextInt(int x) function.



Note that the the range of numbers generated is inclusive of 0 but exclusive of 50 (upper limit).

Now, let us modify this program to generate random numbers between two values. What if we want to generate numbers between two ranges? Let us say range is from 100 to 1000.

We will use something like x = MINVAL + RandomObj.nextInt(MAXVAL - MINVAL)

Analyze this code:



Note that all numbers are between 100(inclusive) and 1000(exclusive). This is pretty much what we wished to achieve.

| Advertisement |

Random integers in java

java.util.Random provides randomObject.nextInt() function to generate random integers. Lets explore how this can be used.

Example to generate 100 random integers and print them:


Note that in java integers are 32 bits long. Which means we can have 232 integers. Hence, we have 4294967296 integers which range from -2147483648 to +2147483647 (including 0).

| Advertisement |

Tuesday, 12 November 2013

Function over-loading in Java - part 2

Refer to : http://mycodedock.blogspot.in/2013/11/function-over-loading-in-java-part-1.html

Now, we wish to create a function called calcAns() that takes in two integers - int a, int b and returns a*b. However, at times we also need to calculate answer for three integers - int a, int b, int c which should return a*b*c.

Since the nature of both these functions is very similar, it would be very handy if we could use the same function name for both these functions. Is it possible? Lets find out!


Note that the compiler automatically decides which *version* of calcAns() to use when you call it depending upon number of arguments.

Thumb rule for using function over-loading

  • The functions much have same names
  • The functions must differ either by number of arguments or type of arguments or both (else it would be redundant)
  • The functions may have different return types


| Advertisement |

Function over-loading in Java - part 1

Let us suppose we wish to create a function myFunc() that can take in three integers as arguments - int x, int y, int z and returns (x*y)+z. It is fairly easy to write such a function. But what if later on we wish to give the same sort of functionality for three arguments of type - double, lets say - double a, double b, double c. Can this be achieved without creating a function with a new name?

Lets have a look at the code given below -


Note that the compiler automatically detects which *version* of the method to use when you call myFunc() depending upon the type of arguments.

| Advertisement |

Monday, 11 November 2013

Constructor overloading in Java

The task is to create a class called UselessClass which holds two variables int x and double y. If a class is initialized with a passed value, then it must be set in these variable while creating an instance. Else it sets the variables to zero.

The example code in Java7 is given below:




Note that UselessClass(2,4.567) and UselessClaass() are different constructors even though they have the same name. This is the concept of constructor-overloading.

While creating obj1 the first constructor over-loaded the second constructor.
While creating obj2 the second constructor over-loaded the first constructor.

The thumb-rule for using constructor over loading -

  • Name of constructors must be same as the name of the class
  • The parameters of constructors must be different else they become redundant.


| Advertisement |

Friday, 8 November 2013

Getting number of days between two dates in Java

The task is to design an application in Java7 that can read two dates in YYYY MM DD form and then compute & print the number of days between them.

The code for the application is given below


| Advertisement |

Wednesday, 6 November 2013

Dynamic linked list in java

Refer to : http://mycodedock.blogspot.in/2013/11/linked-list-in-java.html

Now, java.util.LinkedList can also be applied to custom data structures (classes) as the following example demonstrates(Java7)


| Advertisement |

Linked List in java

Java provides java.util.LinkedList library for creating Linked Lists.

This example shows how to use it (Java7)


| Advertisement |