Casting and Ranges of Variables

Emily Wilson
6 min read
Listen to this study note
Study Guide Overview
This study guide covers data types and casting in Java. It reviews integer ranges, including Integer.MAX_VALUE
and Integer.MIN_VALUE
, and the concept of integer overflow. It explains widening (automatic) and narrowing (manual) casting between int
and double
types, emphasizing how truncation occurs during narrowing. Finally, it demonstrates how to use casting for rounding both positive and negative numbers.
#AP Computer Science A: Data Types & Casting - The Night Before 🚀
Hey there, future AP Computer Science A rockstar! Let's get you prepped and feeling confident for tomorrow. This guide is designed to be your ultimate review, hitting the key points you need to ace this exam. Let's dive in!
#1.2: Data Types and Variables
#Integer Ranges
- Remember, integers in Java have limits!
- Integer.MAX_VALUE: The largest possible integer.
- Integer.MIN_VALUE: The smallest possible integer.
Going outside these bounds leads to integer overflow, which can cause unexpected results.
#Casting: Converting Between Data Types
- Sometimes, you need to mix integers and doubles in calculations. That's where casting comes in!
#Widening (Automatic Conversion): Integers to Doubles
- Java automatically converts (widens) an integer to a double when needed.
- Example:
double a = 2 + 1;
// a becomes 3.0
- Example:
#Narrowing (Manual Conversion): Doubles to Integers
- Converting a double to an integer requires a manual cast because it can lead to loss of precision.
Casting truncates (chops off) the decimal part, it does not round.
Common Mistake: Casting only applies to the immediately following value. Use parentheses to cast an entire expression.
Think of casting as a cookie cutter 🍪: It reshapes the data from one form to another. When you cast a double to an int, you're essentially cutting off the decimal part.
#Rounding with Casting
- Casting truncates, but we can use it to achieve rounding!
#Positive Rounding
- Add 0.5 before casting to round to the nearest integer.
(int) (doubleValue + 0.5);
Examples:
a = 1.3:
(int) (1.3 + 0.5) = (int) (1.8) = **1**
a = 1.8:
(int) (1.8 + 0.5) = (int) (2.3) = **2**
a = 1.5:
(int) (1.5 + 0.5) = (int) (2.0) = **2**
a = 1:
(int) (1 + 0.5) = (int) (1.5) = **1**
#Negative Rounding
- Subtract 0.5 before casting to round to the nearest integer.
(int) (doubleValue - 0.5);
Examples:
a = -1.3:
(int) (-1.3 - 0.5) = (int) (-1.8) = **-1**
a = -1.8:
(int) (-1.8 - 0.5) = (int) (-2.3) = **-2**
a = -1.5:
(int) (-1.5 - 0.5) = (int) (-2.0) = **-2**
a = -1:
(int) (-1 - 0.5) = (int) (-1.5) = **-1**
Exam Tip: Always double-check where you place your casts. Incorrect placement is a common source of errors. Use parentheses to cast the result of an expression.
#Final Exam Focus
- Integer Ranges: Be aware of
Integer.MAX_VALUE
andInteger.MIN_VALUE
and what happens when you exceed them. - Casting: Understand implicit widening and explicit narrowing conversions. Know how to cast between
int
anddouble
. - Rounding: Master the techniques for positive and negative rounding using casting.
- Order of Operations: Remember that casting has a high precedence, so use parentheses to ensure the correct order of operations.
Practice Question
#Multiple Choice Questions
-
What is the value of
result
after the following code executes?
java double x = 5.7; int result = (int) x; ``` (A) 5.7 (B) 6 (C) 5 (D) 0
-
What is the value of
result
after the following code executes?
java int a = 3; double b = 2.5; int result = (int) (a + b); ``` (A) 5.5 (B) 6 (C) 5 (D) 3
-
What is the value of
result
after the following code executes?
java double x = -4.8; int result = (int) (x - 0.5); ``` (A) -4 (B) -5 (C) -4.3 (D) 0
#Free Response Question
Question:
Write a method calculateAverage
that takes three double
values as input and returns the average of these values as an int
, rounded to the nearest integer. Also, write a main
method to test your code.
Answer:
java
public class Rounding {
public static int calculateAverage(double num1, double num2, double num3) {
double average = (num1 + num2 + num3) / 3.0;
return (int) (average + 0.5);
}
public static void main(String[] args) {
double a = 10.0;
double b = 20.0;
double c = 30.0;
int roundedAverage = calculateAverage(a, b, c);
System.out.println("The rounded average is: " + roundedAverage); // Output: 20
double x = 10.3;
double y = 20.7;
double z = 30.1;
roundedAverage = calculateAverage(x, y, z);
System.out.println("The rounded average is: " + roundedAverage); // Output: 20
}
}
Scoring Breakdown:
- +1 point for correct method signature
public static int calculateAverage(double num1, double num2, double num3)
- +1 point for calculating the average of the three numbers.
- +1 point for correctly rounding the average to the nearest integer using casting.
- +1 point for returning the rounded average as an
int
. - +1 point for creating a
main
method - +1 point for demonstrating the functionality of
calculateAverage
method
You've got this! Go get 'em! 💪
Explore more resources

How are we doing?
Give us your feedback and let us know how we can improve