Computer Science A · Programming fundamentals

Strings and basic I/O

Lesson 5

Strings and basic I/O

6 min read
AI Explain — Ask anything
AI Illustrate — Make it visual

Why This Matters

# Strings and Basic I/O - Summary This foundational lesson covers Java String manipulation and input/output operations essential for AP Computer Science A. Students learn String immutability, key methods (substring, indexOf, length, charAt), concatenation, and the Scanner class for reading user input. These concepts are frequently tested on the AP exam through multiple-choice questions about String method outputs and free-response questions requiring string parsing and data validation, making mastery critical for exam success.

Key Words to Know

01
String — A sequence of characters (like letters, numbers, symbols) used to represent text.
02
Input — Data or information that a computer program receives, typically from a user (e.g., keyboard) or a file.
03
Output — Data or information that a computer program sends out, typically to a user (e.g., screen) or a file.
04
Scanner — A Java class (a pre-written tool) used to read input from various sources, commonly the keyboard.
05
Method — A special action or function that an object (like a String) can perform, often changing its state or returning information about it.
06
Index — The position of a character within a string, starting from 0 for the first character.
07
Concatenation — The process of joining two or more strings together to form a single, longer string.
08
Escape Sequence — Special character combinations within a string (like `\n` for a new line or `\t` for a tab) that represent non-printable characters.

Core Concepts & Theory

Strings are sequences of characters treated as a single data type in programming. In Java (Cambridge AP standard), strings are immutable objects, meaning once created, their values cannot be changed—any modification creates a new string object.

Key String Concepts:

String Declaration: String name = "Cambridge"; creates a string literal. Alternatively, String name = new String("Cambridge"); uses the constructor (less common).

String Concatenation: The + operator joins strings: "Hello" + " " + "World" produces "Hello World". When concatenating strings with other data types, automatic type conversion occurs: "Score: " + 95 yields "Score: 95".

Escape Sequences: Special characters preceded by backslash (\):

  • \n = newline
  • \t = tab
  • \" = double quote
  • \\ = backslash

Basic Input/Output (I/O):

Output: System.out.println() prints with newline; System.out.print() prints without newline.

Input: The Scanner class enables user input:

java
Scanner input = new Scanner(System.in);
String name = input.nextLine(); // reads entire line
int age = input.nextInt(); // reads integer

Critical String Methods (zero-indexed):

  • length() returns character count
  • charAt(index) retrieves character at position
  • substring(start, end) extracts portion (end exclusive)
  • indexOf(str) finds first occurrence position
  • equals(str) compares content (NOT == which compares references)

Memory Aid: SLICE for string operations: Substring, Length, IndexOf, CharAt, Equals

Detailed Explanation with Real-World Examples

Strings as Building Blocks: Think of strings like DNA sequences—each character is a nucleotide, and the order matters immensely. Just as geneticists analyze DNA segments, programmers manipulate string segments for data processing.

Real-World Application 1: User Authentication When you log into an online system, your username is a string. The system uses equals() to compare your input against stored credentials. Using == would fail because it checks if two variables reference the same memory location, not if they contain the same characters. This distinction prevents security vulnerabilities.

Real-World Application 2: Data Validation E-commerce websites validate email addresses using string methods. indexOf("@") checks for the @ symbol's presence, while substring() extracts the domain portion. If indexOf("@") returns -1, the email is invalid.

Real-World Application 3: Text Processing Search engines process millions of strings daily. When you search "Cambridge exam tips", the engine uses toLowerCase() to standardize input, split() to separate words, and indexOf() to find matches in web pages.

The Immutability Advantage: Like frozen photographs, immutable strings ensure data integrity. When multiple parts of a program reference the same string, no component can accidentally corrupt the data. This makes debugging easier and programs more reliable.

Input/Output in Context: Consider an airline booking system. It uses Scanner to capture passenger names (nextLine()), ages (nextInt()), and seat preferences. The system concatenates this data into confirmation messages: "Booking confirmed for " + name + ", seat " + seatNumber. Proper input handling prevents errors like reading leftover newline characters (the infamous nextInt()-then-nextLine() bug).

Worked Examples & Step-by-Step Solutions

Example 1: String Manipulation (Cambridge-style, 6 marks)

Question: Write a method that takes a full name (format: "FirstName LastName") and returns initials in uppercase (e.g., "John Smith" → "JS").

java
public static String getInitials(String fullName) {
    int spaceIndex = fullName.indexOf(" ");        // [1 mark: finding space]
    char firstInitial = fullName.charAt(0);        // [1 mark: first letter]
    char lastInitial = fullName.charAt(spaceIndex + 1); // [1 mark: last letter]
    String initials = "" + firstInitial + lastInitial;  // [1 mark: concatenation]
    return initials.toUpperCase();                 // [2 marks: conversion + return]
}

Examiner Note: Award full marks for alternative approaches using substring() or split(). Deduct 1 mark if case conversion is missing.

Example 2: Input Validation (8 marks)

Question: Create a program that reads a password and validates: minimum 8 characters, contains "@" or "#".

java
Scanner scan = new Scanner(System.in);
System.out.print("Enter password: ");           // [1 mark: prompt]
String password = scan.nextLine();              // [1 mark: input]

boolean validLength = password.length() >= 8;   // [2 marks: length check]
boolean hasSymbol = password.indexOf("@") != -1 || 
                    password.indexOf("#") != -1; // [3 marks: symbol check]

if (validLength && hasSymbol) {                  // [1 mark: combined logic]
    System.out.println("Valid password");
} else {
    System.out.println("Invalid password");
}

Examiner Note: Common error—students forget != -1 when checking indexOf() results.

Common Exam Mistakes & How to Avoid Them

Mistake 1: Using == Instead of .equals() Why it happens: Students confuse string comparison with primitive typ...

This section is locked

Cambridge Exam Technique & Mark Scheme Tips

Command Word Decoding:

"Write a method" (4-8 marks): Must include correct signature, parameter handling, return...

This section is locked

2 more sections locked

Upgrade to Starter to unlock all study notes, audio listening, and more.

Exam Tips

  • 1.Always remember `String` starts with a capital 'S' in Java, as it's a class, not a primitive type.
  • 2.Practice string methods like `length()`, `substring()`, `indexOf()`, and `equals()` often, as they are very common on the exam.
  • 3.Never use `==` to compare the content of two strings; always use the `.equals()` method.
  • 4.Understand the difference between `System.out.print()` (stays on the same line) and `System.out.println()` (moves to the next line after printing).
  • 5.When using `Scanner` for input, make sure to `import java.util.Scanner;` at the top of your file and `keyboard.close();` when you're done with it.
Ask Aria anything!

Your AI academic advisor