# operator

anita dhar
Ranch Hand
Posts: 69
can any one explain this program this is from k & B book form chapter operators self test

class Comp2
{
public static void main(String[] args)
{
float f 1 = 2.3 f;
float [] [] f2 = {{42.0f} , {1.7f,2.3 f},{2.6f,2.7f}};
float [] f3 ={2.7 f};
Long x = 42 L;
// insert code here
System.out.println("true");
}
}

And the following five code fragments :
F1. if(f1==f2)
F2. if(f1==f2[2][1])
F3. if(x==f2[0][0])
F4. if(f1==f2[1,1])
F5 if(f3==f2[2])

o/p
Threeof them will compile , only one will be true

Meghna Bhardwaj
Ranch Hand
Posts: 109
HI Guys,

I am having this same issue with this question. Can someone please explain why
F3. if(x==f2[0][0]) compiles and returns true

Also what happens first, boxing and then widening or what? I am confused as to how
Long can be compared to float?

Thanks.

David Marco
Ranch Hand
Posts: 44

And the following five code fragments:
F1. if(f1 == f2) // not compile, f1 is float while f2 is object
F2. if(f1 == f2[2][1]) // compile but not true, f1=2.3 while f2[2][1]=2.7
F3. if(x == f2[0][0]) // compile and true, 42L==42.0f results in true
F4. if(f1 == f2[1,1]) // not compile, wrong syntax (comma not allowed on array index)
F5. if(f3 == f2[2]) // compile but not true, f3={2.7f} while f2[2]={2.6f, 2.7f}

Meghna, the == operator can compare numeric values (unboxing the Long to long and then comparing to a float).

Greetings.

Meghna Bhardwaj
Ranch Hand
Posts: 109
OK Thanks for that David!