// This code example is from the following source:
//
// Book Title: Programming with Objects, A Comparative Presentation
// of Object-Oriented Programming with C++ and Java
//
// Chapter: Chapter 6 The Primitive Types and Their Input/Output
//
// Section: Section 6.7.2 Implicit Type Conversions in Java
//
//Widening.java
class Test {
static void g1( short x ) {
System.out.println( "short version invoked, x = " + x );
}
static void g2( int x ) {
System.out.println( "int version invoked, x = " + x );
}
static float g3( int x ) {
System.out.println( "widening conversion on return" );
return x;
}
public static void main( String[] args )
{
byte b1 = 16;
byte b2 = 24;
// char c1 = b1; // ERROR //(A)
// c1 = b2; // ERROR //(B)
//widening from byte to short:
short s = b1;
System.out.println( s ); // output: 16 //(C)
//widening from char to int:
char c = 'a';
int i1 = c;
System.out.println( i1 ); // output: 97 //(D)
//widening from int to float:
int i2 = 1234567890;
float f1 = i2;
System.out.println( i2 - (int) f1 ); // output: -46 //(E)
//widening from float to double:
float f2 = 1e20f;
double d1 = f2;
System.out.println(d1); //output: 1.0000000200408773E20 //(F)
//widening from byte to short in method invocation:
g1( b1 ); // output: short version invoked, x = 16 //(G)
//widening from short to int in method invocation:
g2( s ); // output: int version invoked, x = 16 //(H)
//widening from int to float in method invocation:
float f3 = g3( i2 );
// output: widening conversion on return //(I)
//Error in widening conversion from int to float:
System.out.println( i2 - (int) f3 ); // output: -46 //(J)
}
}