Win a copy of The Java Performance Companion this week in the Performance forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Please explain. Boolean[] b1 = new Boolean[10];

 
Mr Iftikhar
Ranch Hand
Posts: 39
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What will happen if run the following code?
1: Boolean[] b1 = new Boolean[10];
2:
3: boolean[] b2 = new boolean[10];
4:
5: System.out.println("The value of b1[1] = " +b1[1]);
6: System.out.println("The value of b2[1] = " +b2[1]);
A) Prints The value of b1[1] = false
The value of b2[1] = false
B) Prints The value of b1[1] = null
The value of b2[1] = null
C) Prints The value of b1[1] = null
The value of b2[1] = false
D) Prints The value of b1[1] = false
The value of b2[1] = null
The answer is C .
please explain why answer is C . I think this is wrong.
 
Valentin Crettaz
Gold Digger
Sheriff
Posts: 7610
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
No it is right.
you have two arrays, one able to hold references to Boolean objects and one holding boolean primitive values.
If you don't initialize each element of the array they are initialized by default. In Object arrays, each element is initialized to null and in primitive arrays, each element is initialized to some value, in the case of boolean array that value is false.
So when you query the value of the second element of each array that you haven't initialized explicitely, they give you their default value which are null for b1[1] and false for b2[1].
HIH
------------------
Valentin Crettaz
Sun Certified Programmer for Java 2 Platform
 
Mr Iftikhar
Ranch Hand
Posts: 39
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Valentin Crettaz
I know the thing that the default value of object is null
and default value of boolean variable is false.
But how you are differenting the the line 1 is Boolean
object array and line 3 creating the Boolean primitive
array values.

1: Boolean[] b1 = new Boolean[10];
2:
3: boolean[] b2 = new boolean[10];
please explain me.
 
Valentin Crettaz
Gold Digger
Sheriff
Posts: 7610
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
on the first line Boolean is written with an initial uppercase which corresponds to the class Boolean in package java.lang
On the second line boolean is written with an initial lowercase which corresponds to the boolean primitive type.
HIH
------------------
Valentin Crettaz
Sun Certified Programmer for Java 2 Platform
 
Mr Iftikhar
Ranch Hand
Posts: 39
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Valentin Crettaz
This was a silly but i have not proper concentration.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic