CSA Blog

Ian Wu

Unit 1 - Reference Types

Intro Primitive Types Reference Types Stack and Heap Code Example Quiz

Refrence Types

Reference types in Java include classes, arrays, and interfaces. Unlike primitive types, reference types store addresses (references) to objects rather than the objects themselves.

Classes

  • Create complex data structures by grouping variables and methods.

Example:

class Person {
    String name;
    int age;
}
Person person = new Person(); // `person` reference in stack, `Person` object in heap

Arrays

  • Collections of variables of the same type.

Example:

int[] numbers = new int[5]; // `numbers` reference in stack, array in heap

Popcorn Hack

public class Main {
    public static void main(String[] args) {
        // Create a reference type variable of type String
        String myString = "Hello, World!";
        
        // Create a reference type variable of type Array
        int[] myArray = new int[] {1, 2, 3, 4, 5};

        // Print the values
        System.out.println(myString);
        System.out.println(Arrays.toString(myArray));
    }
}

Main.main(null);
Hello, World!
[1, 2, 3, 4, 5]

Unit 1 - Primitive Types

Intro Primitive Types Reference Types Stack and Heap Code Example Quiz

Primitive Data Types

A primitive data type specifies the size and type of information. Primitive types are the simplest type of variables in Java. They simply store a small amount of data, according to the type. They are not associated with a class.

The 3 Primitive Data Types for College Board

There are eight primitive data types in Java, but only these 3 are used in AP CSA:

Data Type Description
int Stores whole numbers from -2,147,483,648 to 2,147,483,647
double Stores decimal numbers. Sufficient for storing 15 decimal digits
boolean Stores true or false values

To declare a variable, you write: Type VariableName = Value;

For example: int count = 0;

Variable Terms and Conventions

These are important items to remember with regards to Java and the College Board.

  • A variable name is often referred to as the variable identifier in Java.
  • A variable name follows camel case conventions in Java (e.g., firstName).
  • A class name, which is a Data Type, follows Pascal case (e.g., BankAccount).

The 8 Primitive Data Types

Here is the complete list of primitive types in Java:

  • byte: An 8-bit signed two’s complement integer.
  • short: A 16-bit signed two’s complement integer.
  • int: A 32-bit signed two’s complement integer.
  • long: A 64-bit signed two’s complement integer.
  • float: A single-precision 32-bit IEEE 754 floating point.
  • double: A double-precision 64-bit IEEE 754 floating point.
  • boolean: Stores either true or false.
  • char: Stores a single 16-bit Unicode character.

Popcorn Hack: Greatest Value Terms

Primitive Data types have constraints The program shows the constraints of Integers and Doubles. Define the following terms…

  • constraints: Limits to working with primitive data types
  • overflow: When an integer’s value is assigned above the maximum value
  • underflow: When an integer’s value is assigned below the minimum value
public class GreatestValue {
    public static void main(String[] args) {
        System.out.println("Max Integer: " + Integer.MAX_VALUE);
        System.out.println("Min Integer: " + Integer.MIN_VALUE);
        System.out.println("Max Double: " + Double.MAX_VALUE);
        System.out.println("Min Double: " + Double.MIN_VALUE);

        // Integer Show Overflow
        int i = Integer.MAX_VALUE;
        i++;
        System.out.println("Integer Max + 1, Overflow: " + i);

        // Integer Show Underflow
        int j = Integer.MIN_VALUE;
        j--;
        System.out.println("Integer Min - 1, Underflow: " + j);

        // Integer Max + Min
        int k = Integer.MAX_VALUE + Integer.MIN_VALUE;
        System.out.println("Integer Max + Min: " + k);

    }
}
GreatestValue.main(null);

Popcorn Hack: Fill in Data Type

The code below is broken….

  • Fill in the blank, replace the underbars with the correct type.
  • Output the contents to the Jupyter Terminal
int zero = 0; //Whole number
float pi = 3.14159; //Decimal values. Floating point numbers.
boolean iAmTakingCSA = true; //Stores a true of false binary value
char myProjectedGrad = 'A'; //Single character
String iLoveCodeCodeCoding = "Yes"; //String of characters