Java Fundamentals: Control Structures, Built-in Types, and Variables
Java Fundamentals: Control Structures, Built-in Types, and Variables
This file contains beginner-friendly Java code examples focused on fundamental concepts: control structures, primitive types, and variables. These examples are designed to help you practice reading and understanding basic Java syntax and logic flow.
How to Scan this Code
- Start with variables and types - Understand how Java handles different data types
- Follow control flow - Trace through if statements, loops, and logical operations
- Notice Java patterns - See how Java’s type system and syntax work
- Practice mental execution - Try to predict what each code block will output
- Focus on patterns - Recognize common Java programming patterns
Example 1: Variables, Primitive Types, and String Operations
Code to Read:
 1public class StudentInfoProcessor {
 2    
 3    public static void processStudentInfo() {
 4        // Primitive data types - must be explicitly declared
 5        String studentName = "Alice Johnson";       // Reference type
 6        int age = 20;                              // int primitive
 7        double gpa = 3.85;                         // double primitive
 8        boolean isEnrolled = true;                 // boolean primitive
 9        char gradeLevel = 'S';                     // char primitive (S for Senior)
10        
11        // Working with strings
12        String firstName = studentName.split(" ")[0];  // Get first part
13        String lastName = studentName.split(" ")[1];   // Get second part
14        char lastInitial = lastName.charAt(0);         // Get first character
15        
16        // String formatting and concatenation
17        String displayName = firstName + " " + lastInitial + ".";
18        String email = firstName.toLowerCase() + "." + lastName.toLowerCase() + "@university.edu";
19        
20        // Working with numbers and type casting
21        int totalCredits = 15;  // Current semester credits
22        int nextYearAge = age + 1;
23        double gpaPercentage = (gpa / 4.0) * 100;  // Convert to percentage
24        int roundedGpa = (int) Math.round(gpaPercentage);  // Explicit casting
25        
26        // Boolean operations
27        boolean isHonorStudent = (gpa >= 3.5) && isEnrolled;
28        boolean needsAdvising = (gpa < 2.0) || (totalCredits < 12);
29        boolean isSenior = (age >= 21) && (totalCredits > 90);
30        
31        // String operations
32        int nameLength = studentName.length();
33        boolean hasLongName = nameLength > 15;
34        String upperName = studentName.toUpperCase();
35        boolean containsJohnson = studentName.contains("Johnson");
36        
37        // Conditional (ternary) operator
38        String enrollmentStatus = isEnrolled ? "Enrolled" : "Not Enrolled";
39        String honorStatus = isHonorStudent ? "Honor Student" : "Regular Student";
40        
41        // Print information using different formatting methods
42        System.out.println("=== Student Information ===");
43        System.out.println("Name: " + displayName);
44        System.out.println("Age: " + age + " (will be " + nextYearAge + " next year)");
45        System.out.println("Email: " + email);
46        System.out.println("GPA: " + gpa + " (" + String.format("%.1f", gpaPercentage) + "%)");
47        System.out.println("Status: " + enrollmentStatus);
48        System.out.println("Grade Level: " + gradeLevel);
49        
50        System.out.println("\n=== Academic Status ===");
51        System.out.println("Total Credits: " + totalCredits);
52        System.out.println("Honor Student: " + (isHonorStudent ? "Yes" : "No"));
53        System.out.println("Needs Advising: " + (needsAdvising ? "Yes" : "No"));
54        System.out.println("Is Senior: " + (isSenior ? "Yes" : "No"));
55        
56        System.out.println("\n=== String Analysis ===");
57        System.out.println("Name length: " + nameLength + " characters");
58        System.out.println("Has long name: " + hasLongName);
59        System.out.println("Uppercase name: " + upperName);
60        System.out.println("Contains 'Johnson': " + containsJohnson);
61        
62        // Demonstrate variable scope within method
63        if (gpa >= 3.0) {
64            String message = "Good academic standing";  // Local to this block
65            System.out.println("Academic note: " + message);
66        }
67        // message is not accessible here - would cause compilation error
68    }
69    
70    public static void main(String[] args) {
71        processStudentInfo();
72        
73        // Show variable types
74        System.out.println("\n=== Variable Types Demo ===");
75        int intVar = 42;
76        double doubleVar = 3.14159;
77        boolean boolVar = true;
78        char charVar = 'A';
79        String stringVar = "Hello";
80        
81        System.out.println("int: " + intVar + " (type: int)");
82        System.out.println("double: " + doubleVar + " (type: double)");
83        System.out.println("boolean: " + boolVar + " (type: boolean)");
84        System.out.println("char: " + charVar + " (type: char)");
85        System.out.println("String: " + stringVar + " (type: String)");
86    }
87}What to Notice:
- Explicit Type Declaration: Every variable must have a declared type (int age,String name)
- Primitive vs Reference Types: int,double,boolean,charare primitives;Stringis a reference type
- String Immutability: String operations like .toLowerCase()return new strings
- Type Casting: (int) Math.round()explicitly converts double to int
- Array Access: split(" ")[0]accesses array elements by index
- Method Chaining: Can chain methods like studentName.split(" ")[0]
- Boolean Operators: &&(and),||(or) for logical operations
- Ternary Operator: condition ? valueIfTrue : valueIfFalse
- String Concatenation: Using +operator to combine strings
- Block Scope: Variables declared inside ifblocks are only accessible within that block
Trace Through Example:
 1String studentName = "Alice Johnson";
 2String firstName = "Alice";          // studentName.split(" ")[0]
 3String lastName = "Johnson";         // studentName.split(" ")[1]
 4char lastInitial = 'J';             // lastName.charAt(0)
 5String displayName = "Alice J.";    // firstName + " " + lastInitial + "."
 6
 7double gpa = 3.85;
 8boolean isEnrolled = true;
 9boolean isHonorStudent = true;       // (3.85 >= 3.5) && true → true && true
10boolean needsAdvising = false;       // (3.85 < 2.0) || (15 < 12) → false || falseExample 2: Control Structures and Conditional Logic
Code to Read:
  1import java.util.Scanner;
  2
  3public class GradeCalculator {
  4    
  5    public static void calculateGrades(int[] scores) {
  6        // Check for null or empty array
  7        if (scores == null || scores.length == 0) {
  8            System.out.println("No scores provided");
  9            return;  // Early return - exit method
 10        }
 11        
 12        // Initialize counters and accumulators
 13        int totalPoints = 0;
 14        int[] gradeCounts = new int[5];  // A, B, C, D, F counts (indices 0-4)
 15        int failedTestCount = 0;
 16        int bonusPoints = 0;
 17        
 18        System.out.println("Processing individual scores:");
 19        
 20        // Process each score with different conditional logic
 21        for (int i = 0; i < scores.length; i++) {
 22            int score = scores[i];
 23            char letterGrade;
 24            String feedback;
 25            
 26            System.out.print("Test " + (i + 1) + ": " + score + " points → ");
 27            
 28            // Nested if-else chain for grade assignment
 29            if (score >= 90) {
 30                letterGrade = 'A';
 31                feedback = "Excellent!";
 32                gradeCounts[0]++;  // Increment A count
 33            } else if (score >= 80) {
 34                letterGrade = 'B';
 35                feedback = "Good work!";
 36                gradeCounts[1]++;  // Increment B count
 37            } else if (score >= 70) {
 38                letterGrade = 'C';
 39                feedback = "Satisfactory";
 40                gradeCounts[2]++;  // Increment C count
 41            } else if (score >= 60) {
 42                letterGrade = 'D';
 43                feedback = "Needs improvement";
 44                gradeCounts[3]++;  // Increment D count
 45            } else {
 46                letterGrade = 'F';
 47                feedback = "Failed - needs retake";
 48                gradeCounts[4]++;  // Increment F count
 49                failedTestCount++;
 50            }
 51            
 52            System.out.println(letterGrade + " - " + feedback);
 53            
 54            // Add to total
 55            totalPoints += score;
 56            
 57            // Bonus points for exceptional performance
 58            if (score >= 95) {
 59                int bonus = 5;
 60                bonusPoints += bonus;
 61                System.out.println("    Bonus: +" + bonus + " points for excellence!");
 62                
 63                // Extra bonus for perfect score
 64                if (score == 100) {
 65                    int perfectBonus = 5;  // Additional bonus
 66                    bonusPoints += perfectBonus;
 67                    System.out.println("    Perfect score bonus: +" + perfectBonus + " points!");
 68                }
 69            }
 70        }
 71        
 72        // Calculate statistics
 73        double averageScore = (double) totalPoints / scores.length;  // Cast to avoid integer division
 74        double adjustedAverage = (double) (totalPoints + bonusPoints) / scores.length;
 75        
 76        // Determine overall performance using compound conditions
 77        String overallGrade;
 78        String recommendation;
 79        
 80        if (averageScore >= 90 && failedTestCount == 0) {
 81            overallGrade = "Outstanding";
 82            recommendation = "Excellent work! Consider advanced coursework.";
 83        } else if (averageScore >= 80 && failedTestCount <= 1) {
 84            overallGrade = "Strong";
 85            recommendation = "Good performance. Keep up the good work!";
 86        } else if (averageScore >= 70 || (averageScore >= 65 && bonusPoints > 0)) {
 87            overallGrade = "Satisfactory";
 88            recommendation = "Adequate progress. Focus on consistent improvement.";
 89        } else if (failedTestCount > scores.length / 2) {  // More than half failed
 90            overallGrade = "Concerning";
 91            recommendation = "Significant struggles. Recommend tutoring and study group.";
 92        } else {
 93            overallGrade = "Needs Improvement";
 94            recommendation = "Some challenges noted. Additional support recommended.";
 95        }
 96        
 97        // Create detailed report
 98        System.out.println("\n=== Grade Report ===");
 99        System.out.println("Total tests: " + scores.length);
100        System.out.printf("Average score: %.1f%n", averageScore);  // printf formatting
101        
102        if (bonusPoints > 0) {
103            System.out.println("Bonus points earned: " + bonusPoints);
104            System.out.printf("Adjusted average: %.1f%n", adjustedAverage);
105        }
106        
107        System.out.println("Overall grade: " + overallGrade);
108        System.out.println("Recommendation: " + recommendation);
109        
110        // Show grade distribution using loops and conditionals
111        System.out.println("\nGrade Distribution:");
112        String[] gradeLetters = {"A", "B", "C", "D", "F"};
113        String[] symbols = {"✓", "✓", "○", "○", "✗"};  // Different symbols for different grades
114        
115        for (int i = 0; i < gradeCounts.length; i++) {
116            if (gradeCounts[i] > 0) {
117                double percentage = ((double) gradeCounts[i] / scores.length) * 100;
118                System.out.printf("  %s %s: %d tests (%.1f%%)%n", 
119                    symbols[i], gradeLetters[i], gradeCounts[i], percentage);
120            }
121        }
122        
123        // Warning for failed tests using conditional
124        if (failedTestCount > 0) {
125            System.out.println("\n⚠️  Failed " + failedTestCount + " out of " + scores.length + " tests");
126            System.out.println("   Consider retaking these assessments.");
127        }
128    }
129    
130    public static void demonstrateLoopTypes() {
131        System.out.println("\n=== Loop Types Demonstration ===");
132        
133        // Standard for loop
134        System.out.println("1. Standard for loop (counting):");
135        for (int i = 1; i <= 5; i++) {
136            System.out.print(i + " ");
137        }
138        System.out.println();
139        
140        // Enhanced for loop (for-each)
141        System.out.println("2. Enhanced for loop (for-each):");
142        int[] numbers = {10, 20, 30, 40, 50};
143        for (int number : numbers) {
144            System.out.print(number + " ");
145        }
146        System.out.println();
147        
148        // While loop
149        System.out.println("3. While loop:");
150        int count = 1;
151        while (count <= 3) {
152            System.out.print("Round " + count + " ");
153            count++;
154        }
155        System.out.println();
156        
157        // Do-while loop
158        System.out.println("4. Do-while loop (executes at least once):");
159        int value = 1;
160        do {
161            System.out.print("Value: " + value + " ");
162            value++;
163        } while (value <= 2);
164        System.out.println();
165    }
166    
167    public static void main(String[] args) {
168        // Test with different score scenarios
169        System.out.println("=== Scenario 1: Strong Student ===");
170        int[] strongScores = {92, 88, 95, 87, 100, 89};
171        calculateGrades(strongScores);
172        
173        System.out.println("\n" + "=".repeat(50));
174        System.out.println("=== Scenario 2: Struggling Student ===");
175        int[] strugglingScores = {45, 67, 55, 72, 58, 48};
176        calculateGrades(strugglingScores);
177        
178        System.out.println("\n" + "=".repeat(50));
179        System.out.println("=== Scenario 3: Empty Array ===");
180        int[] emptyScores = {};
181        calculateGrades(emptyScores);
182        
183        // Demonstrate different loop types
184        demonstrateLoopTypes();
185    }
186}What to Notice:
- Array Declaration: int[] scoresdeclares an array of integers
- Null Checking: Always check for nullbefore using reference types
- Array Length: Use .lengthproperty (not a method) for arrays
- Enhanced For Loop: for (int score : scores)iterates over values
- Type Casting: (double) totalPointsconverts int to double for division
- Printf Formatting: System.out.printf("%.1f%n", value)for formatted output
- String Repeat: "=".repeat(50)creates a string of 50 equal signs (Java 11+)
- Compound Conditions: Using &&and||with parentheses for clarity
- Array Initialization: int[] gradeCounts = new int[5]creates array with default values (0)
- Loop Variable Scope: Variables declared in for loops are scoped to the loop
- Early Return: returnstatement exits method immediately
Trace Through Example:
 1int[] scores = {92, 88, 95};
 2// Loop iteration 1: i=0, score=92
 3//   92 >= 90 → letterGrade='A', gradeCounts[0]=1, feedback="Excellent!"
 4//   92 >= 95 → false, no bonus
 5// Loop iteration 2: i=1, score=88
 6//   88 >= 80 → letterGrade='B', gradeCounts[1]=1, feedback="Good work!"
 7// Loop iteration 3: i=2, score=95
 8//   95 >= 90 → letterGrade='A', gradeCounts[0]=2, feedback="Excellent!"
 9//   95 >= 95 → true, bonusPoints=5
10
11// Final: totalPoints=275, averageScore=91.7, failedTestCount=0
12// 91.7 >= 90 && 0 == 0 → overallGrade="Outstanding"Reading Practice Tips
After studying these fundamental examples:
- Trace variable changes: Follow how variables get declared, modified, and go out of scope
- Understand type rules: Know when explicit casting is needed and why
- Practice array patterns: Recognize different ways to iterate and process arrays
- Follow method calls: Understand parameter passing and return values
- Read control flow carefully: Follow the logic through nested if-else and loops
Remember: These Java fundamentals form the foundation of all Java programs. Understanding how variables, types, arrays, and control structures work will make reading more complex Java code much easier.