3: Data Types & Flow

We will learn to solve simple problems with Java programming. We will create all sorts of variables, test their limitations and exercise basic control flow.

Learning Targets

  • I can declare variables of common Java data types and assign values.

  • I can control the flow of my app with loops, conditionals and method calls.

  • I can write efficient conditionals and return comparisons in my methods.

  • I can describe the difference between logic, run time and compile time errors.

Declaring Variables

Primitives are objects that live entirely in stack memory (they're lowercase like int and not like String) . We'll go over the difference between stack and heap memory later. For now, just think of stack memory as the lightweight stuff that's really fast-access. Take a look at the types of Java primitives.

Naming Conventions

CompoundCapitalize name of classes

camelCase variables and methods

ALLCAPS variables marked as final, meaning they can't change

snake_case is typically used only in Python and I miss it every time I work in Java or C#





Example (a=10, b=20)

+ (Addition)

Adds values on either side of the operator.

a + b will give 30

- (Subtraction)

Subtracts right-hand operand from left-hand operand.

a - b will give -10

* (Multiplication)

Multiplies values on either side of the operator.

a * b will give 200

/ (Division)

Divides left-hand operand by right-hand operand.

b / a will give 2

% (Modulus)

Divides left-hand operand by right-hand operand and returns the remainder.

b % a will give 0

++ (Increment)

Increases the value of operand by 1.

b++ gives 21

-- (Decrement)

Decreases the value of operand by 1.

b-- gives 19

Integer Math

What's 9 / 4? In Java, it's just2, but if you wrote it like 9.0 / 2, then the answer would be 2.5. If you don't introduce a decimal to the operation, if you only give Java literal ints , it'll match that format and ignore decimals.


We evaluate / test data and produce a true or false value.



Example (a=10, b=15)



Equality operator




Not Equal to operator




Greater than




Less than




Greater than or equal to




Less than or equal to



Short-Circuit Evaluation

This comes up all the time in problems. It's a useful trick to avoid crashing your apps, too.


A fundamental element of flow control is whether or not you want to execute a block of code. We use a conditional or if statement to test something. That test will result in a true or false value. If it's true, we'll execute the block of code. If it's false, we'll skip to the end of the block of code.


Loops are how we repeat commands or loop through items in a collection.

for loops

standard for loop

Most for loops look something like this:

for(int x = 0; x < 20; x++) {
    // code goes in here

The for statement has a declaration, condition and increment. But you can skip the declaration if you'd like. Let's say you want the counter to have a wider scope (so it can be accessed outside of the loop) like this:

int x = 0;  // declared outside the loop so it can remain afterwards
for(; x < 20; x++){
    // code goes here for the loop
System.out.println(x);  // will print 20

foreach loop

Let's say I have an array or collection of numbers like this: int[] numberArray = [5, 10, 15, 20, 25];

Each number in that group has an address or index (that starts at 0). If I wanted to print the number 10 for example, I could write System.out.println(numberArray[1]);

So if I wanted to loop through (called iterating or traversing) all the items in this array, I could use a normal for loop like this:

for (int x = 0; x < numberArray.length; x++){

But there's an easier form of the for loop that's meant to easily traverse through a collection. We'll go over some of the pros and cons of this method later.

for (int x : numberArray){
    // x isn't looping through the addresses this time
    // rather, it's pretending to be each number in the collection

while loops

Infinite loop

    // will never stop looping unless I use the break command

do-while loop

The do-while is rarely used but it's handy if you want to make sure the steps run the first time before the loop condition is tested. Read more.

do {
    // code will run at least one
} while(x > 10);


You can declare and initialize an int like int x = 5; Similarly, you can create an array that contains three ints like this: int[] x = {5, 10, 15};

Arrays are immutable. They don't change in size. Java uses a fancier object called an ArrayList that is more flexible. So if one of your friends is trying to convince you to increase the size of an array, just say no.

Array Tricks

// Let's demonstrate some array skills!

// Here's a blank array that's got spots for five ints
int[] arr = new int[5]; 

// You can also create an array with initial values
int[] x = {5, 10, 15}; 

How long is that array?

x.length; // note: this isn't a method like it is in the String class.

What's the first element in the array?

x[0]; // this will print "5" in my example

What's the last element in the array?

x[x.length-1]; // this will print "15" in my example

What other skills do you need to know?

  • Loop through every element in the array

  • Check if an element is found in an array

  • Make an array of other types of objects

Method Calls

This is a part of control flow. The thread, the computer's train of thought, is being sent over to work through a set of commands called a method or function (either name works in this class).

Last updated