Bird
Raised Fist0
Javaprogramming~20 mins

Type promotion in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Type Promotion Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of arithmetic with byte and int
What is the output of this Java code snippet?
Java
public class Main {
    public static void main(String[] args) {
        byte b = 10;
        int i = 20;
        var result = b + i;
        System.out.println(result);
    }
}
A30.0
B30
CCompilation error
DRuntime error
Attempts:
2 left
💡 Hint
Remember that byte is promoted to int before arithmetic.
❓ Predict Output
intermediate
2:00remaining
Output of char and int addition
What is the output of this Java code snippet?
Java
public class Main {
    public static void main(String[] args) {
        char c = 'A';
        int i = 1;
        int result = c + i;
        System.out.println(result);
    }
}
A66
BB
CCompilation error
DRuntime error
Attempts:
2 left
💡 Hint
char is promoted to int before addition.
❓ Predict Output
advanced
2:00remaining
Output of compound assignment with byte
What is the output of this Java code snippet?
Java
public class Main {
    public static void main(String[] args) {
        byte b = 5;
        b += 10;
        System.out.println(b);
    }
}
A5
BCompilation error
CRuntime error
D15
Attempts:
2 left
💡 Hint
Compound assignment operators include implicit casting.
❓ Predict Output
advanced
2:00remaining
Output of simple assignment with byte and int addition
What is the output or error of this Java code snippet?
Java
public class Main {
    public static void main(String[] args) {
        byte b = 5;
        b = b + 10;
        System.out.println(b);
    }
}
ACompilation error
B15
CRuntime error
D5
Attempts:
2 left
💡 Hint
Check the type of b + 10 expression and assignment compatibility.
🧠 Conceptual
expert
3:00remaining
Type promotion in mixed arithmetic expressions
Given the following Java code, what is the type of the variable 'result' after evaluation?
Java
public class Main {
    public static void main(String[] args) {
        byte b = 1;
        short s = 2;
        char c = 3;
        int i = 4;
        long l = 5L;
        float f = 6.0f;
        double d = 7.0;
        var result = b + s * c - i / l + f - d;
    }
}
Along
Bfloat
Cdouble
Dint
Attempts:
2 left
💡 Hint
Remember the order of type promotion in mixed expressions: from smaller to larger types.

Practice

(1/5)
1. Which of the following statements about Java type promotion is correct?
easy
A. long is always promoted to byte in expressions.
B. byte, short, and char are promoted to int before arithmetic operations.
C. double is promoted to float when mixed with float.
D. int is promoted to byte automatically in expressions.

Solution

  1. Step 1: Understand type promotion basics

    Java promotes smaller integer types (byte, short, char) to int before arithmetic to avoid data loss.
  2. Step 2: Evaluate each option

    byte, short, and char are promoted to int before arithmetic operations. correctly states this rule. Options A, B, and C are incorrect because long is not promoted to byte, int is not promoted to byte, and double is not promoted to float.
  3. Final Answer:

    byte, short, and char are promoted to int before arithmetic operations. -> Option B
  4. Quick Check:

    byte/short/char -> int promotion = D [OK]
Hint: Remember: small integers become int before math [OK]
Common Mistakes:
  • Thinking int is promoted to byte
  • Confusing float and double promotion
  • Assuming long is promoted to smaller types
2. Which of the following Java code snippets correctly compiles without explicit casting due to type promotion?
easy
A. int result = (byte)10 + (short)20;
B. short s = 10 + 20;
C. byte b = 10 + 20;
D. int sum = 10 + 20;

Solution

  1. Step 1: Analyze type promotion in arithmetic

    In expressions, byte and short are promoted to int, so 10 + 20 is int.
  2. Step 2: Check each assignment

    int result = (byte)10 + (short)20; casts explicitly, so compiles but casting is manual. byte b = 10 + 20; tries to assign int result to byte without cast - error. int sum = 10 + 20; assigns int sum correctly. short s = 10 + 20; tries to assign int to short without cast - error.
  3. Final Answer:

    int sum = 10 + 20; -> Option D
  4. Quick Check:

    byte/short -> int, assign to int = B [OK]
Hint: Assign promoted int results to int variables [OK]
Common Mistakes:
  • Assigning int expression to byte or short without cast
  • Forgetting byte/short promote to int
  • Assuming automatic narrowing conversion
3. What is the output of the following Java code?
byte b = 10;
short s = 20;
char c = 30;
int result = b + s + c;
System.out.println(result);
medium
A. 60.0
B. Syntax error
C. 60
D. Runtime error

Solution

  1. Step 1: Understand type promotion in expression

    byte, short, and char are promoted to int before addition, so b + s + c is int.
  2. Step 2: Calculate the sum

    10 + 20 + 30 = 60, assigned to int variable result, then printed.
  3. Final Answer:

    60 -> Option C
  4. Quick Check:

    byte+short+char -> int sum = 60 [OK]
Hint: Sum small types promoted to int, print int result [OK]
Common Mistakes:
  • Expecting byte or short result type
  • Confusing output with float/double
  • Thinking code causes error
4. Identify the error in the following Java code and fix it:
byte b = 5;
byte c = 10;
byte sum = b + c;
System.out.println(sum);
medium
A. Add explicit cast: byte sum = (byte)(b + c);
B. Change sum to int: int sum = b + c;
C. Change b and c to int: int b = 5, c = 10;
D. No error, code compiles fine.

Solution

  1. Step 1: Understand type promotion in addition

    byte variables b and c are promoted to int during addition, so b + c is int.
  2. Step 2: Fix assignment error

    Assigning int result to byte sum causes error. Adding explicit cast (byte)(b + c) fixes it.
  3. Final Answer:

    Add explicit cast: byte sum = (byte)(b + c); -> Option A
  4. Quick Check:

    byte+byte -> int, cast needed for byte = A [OK]
Hint: Cast int result back to byte to fix assignment error [OK]
Common Mistakes:
  • Ignoring need for cast when assigning to byte
  • Assuming automatic narrowing conversion
  • Changing variable types unnecessarily
5. Consider the following code snippet:
float f = 5.5f;
double d = 10.5;
var result = f + d;
System.out.println(((Object)result).getClass().getSimpleName());

What will be printed and why?
hard
A. double because float is promoted to double in mixed expressions
B. float because float is bigger than double
C. float because var infers float type
D. Compilation error due to var usage

Solution

  1. Step 1: Understand promotion between float and double

    In expressions mixing float and double, float is promoted to double.
  2. Step 2: Determine result type and output

    Variable result is inferred as double by var. Printing class name outputs "Double".
  3. Final Answer:

    double because float is promoted to double in mixed expressions -> Option A
  4. Quick Check:

    float + double -> double result = A [OK]
Hint: float + double results in double type [OK]
Common Mistakes:
  • Assuming var infers float
  • Thinking float is bigger than double
  • Expecting compilation error with var
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard