Found some strange things in java.
Code:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
Result:
1.8.0_40 2.0 2 2
What is it? Why integer value returns only if value for false is not a double or if string value added to value for true? Why in second line rounding works by (int) cast, but double value returns yet? Is it a bug?