Java • Software Craft and Communication

Java Naming Conventions — Follow standard Java naming conventions (camelCase, PascalCase)

Clear, consistent names make your Java code readable, professional, and easy for any developer to understand.

Java programming emblem with a coffee cup, code braces, and terminal
Inside this lesson 10 sections 5 questions 5 figures

SECTION 1

Historical Context & Motivation

When you write code, you're not just telling a computer what to do — you're also communicating with other humans (and your future self). Early programmers in the 1950s and 1960s worked with terse variable names like x1 or tmp because memory was expensive and screens were tiny. As software grew larger and teams grew bigger, developers realized that naming conventions — agreed-upon rules for how to name things — were essential for keeping code understandable.

Java's creators at Sun Microsystems understood this problem firsthand. They had watched C and C++ projects descend into chaos when different programmers used wildly different naming styles in the same codebase. When James Gosling and his team designed Java in the mid-1990s, they published an official style guide that laid out naming conventions from the very beginning. This was unusual — most languages left naming entirely up to the programmer.

1972 • C Language Emerges

Dennis Ritchie creates C at Bell Labs. Naming is left to the programmer, leading to inconsistent styles like my_var and myVar coexisting in the same project.

1995 • Java 1.0 Released

Sun Microsystems releases Java with a built-in standard library that consistently uses camelCase for methods and PascalCase for classes, setting a strong example from day one.

1999 • Official Code Conventions Published

Sun publishes the "Code Conventions for the Java Programming Language" document, formalizing naming rules that the community had already adopted by observing the standard library.

2014 • Google Java Style Guide

Google publishes its influential Java style guide, reinforcing and expanding on Sun's original conventions. Most modern IDEs now enforce these conventions automatically.

The central question that naming conventions answer is simple but profound: How can a team of programmers read each other's code quickly and correctly? When everyone follows the same naming rules, you can glance at a name and instantly know whether it represents a class, a variable, a constant, or a method — without reading any additional documentation.

SECTION 2

Core Principles & Definitions

Java naming conventions are built on a small set of case styles. Each style signals what kind of element you're looking at. The two most important styles are camelCase (starting with a lowercase letter, then capitalizing each new word) and PascalCase (starting with an uppercase letter, then capitalizing each new word). A third style, SCREAMING_SNAKE_CASE, is used exclusively for constants. Let's break these down.

1

camelCase

The first word is lowercase; each subsequent word begins with a capital letter. Used for variables, methods, and parameters. Examples: totalScore, calculateArea().
2

PascalCase

Every word starts with a capital letter, including the first. Used for classes, interfaces, and enums. Examples: StudentRecord, ArrayList.
3

SCREAMING_SNAKE_CASE

All letters are uppercase, with words separated by underscores. Used for constants declared as static final. Examples: MAX_SPEED, PI.
4

lowercase (single word)

All lowercase, no separators. Used for packages. Packages represent folders, so they stay simple and lowercase. Example: com.school.gradebook.
✦

KEY TAKEAWAY

Think of naming conventions like the dress code at different events. A lowercase first letter (camelCase) is like casual attire — it signals "I'm a variable or method, not a big deal structurally." An uppercase first letter (PascalCase) is like formal attire — it signals "I'm a class, a blueprint for objects, something important." ALL CAPS is like a name badge — it says "I never change, I'm a constant." By glancing at the capitalization, you can instantly tell what role a name plays, just like you can tell who's a guest vs. a server at a formal dinner by what they're wearing.

SECTION 3

Visual Explanation

Java Naming Convention MapcamelCaseVariables, Methods, ParametersstudentName calculateGpa() maxRetriesPascalCaseClasses, Interfaces, EnumsStudentRecord Comparable ColorSCREAMING_SNAKE_CASEConstants (static final)MAX_SIZE DEFAULT_COLOR PIall.lowercasePackagescom.school.utils java.utilQuick Rule: Look at the First Letteralowercase first?Variable / MethodAuppercase first?Class / InterfaceABALL CAPS?Constant
This diagram maps the four main naming conventions in Java. The top four boxes show each style with examples. The bottom section illustrates the quick rule: check the first letter's case to instantly determine what kind of element you're looking at.

The diagram above reveals the elegant simplicity of Java's naming system. There are really only four patterns to learn, and each one maps directly to a category of code element. Notice that the distinction starts with a single character — the very first letter. If you see studentAge, the lowercase s tells you it's a variable or method. If you see StudentAge, the uppercase S tells you it's a class. This one-glance identification is the whole reason naming conventions exist.

SECTION 4

How Naming Conventions Work in Practice

Naming conventions aren't enforced by the Java compiler — your code will compile even with terrible names. Instead, conventions work as a social contract among programmers. When everyone follows the same rules, reading unfamiliar code becomes dramatically faster. Let's explore the specific rules for each category of Java element.

Variables and Parameters

Variables and parameters use camelCase. The name should describe what the variable holds, not its type. For example, int studentCount is much better than int sc or int intNumber. Single-letter variable names like i, j, and k are acceptable only for loop counters, since that usage is universally understood.

Methods

Methods also use camelCase and should begin with a verb that describes the action being performed. Good examples include calculateTotal(), printReport(), and isValid(). Methods that return a boolean typically start with is, has, or can — like isEmpty() or hasPermission().

Classes, Interfaces, and Enums

These use PascalCase and should be nouns (or noun phrases) that describe what an object of that type represents. A class called BankAccount clearly represents a bank account. Interfaces sometimes use adjective-style names that describe a capability, like Comparable or Serializable.

Constants

Constants — values declared with static final — use SCREAMING_SNAKE_CASE. This makes them visually distinct from everything else. When you see MAX_ATTEMPTS in the middle of a method, the all-caps style immediately tells you this value never changes. It's like seeing a warning sign — it grabs your attention and communicates "this is fixed."

Anatomy of a Java Class — Naming in Context// File: GradeCalculator.javapublic class GradeCalculator {PascalCase ▸ Classstatic final int MAX_SCORE = 100;UPPER_CASE ▸ Constprivate double totalPoints;camelCase ▸ Fieldprivate int assignmentCount;camelCase ▸ Fieldpublic void addScore(int newScore) {camelCase ▸ MethodtotalPoints += newScore;assignmentCount++;}public boolean isPassingGrade() {camelCase ▸ Booldouble avg = totalPoints / assignmentCount;return avg >= 60.0;}}
This annotated Java class shows naming conventions in action. Notice how GradeCalculator (PascalCase) names the class, MAX_SCORE (UPPER_CASE) marks a constant, and all fields, methods, and parameters use camelCase. The boolean method isPassingGrade() starts with "is" to signal it returns true or false.

SECTION 5

Detailed Rules & Classification

Now that you understand the big picture, let's look at the complete rule set. The table below serves as a quick reference you can come back to whenever you're unsure which convention to apply. Pay special attention to the "Part of Speech" column — it tells you whether the name should sound like a noun, a verb, or an adjective.

ElementConventionPart of SpeechGood ExampleBad Example
ClassPascalCaseNounShoppingCartshoppingcart
InterfacePascalCaseAdjective / NounPrintableIPrintable
MethodcamelCaseVerb phrasegetBalance()Balance()
VariablecamelCaseNounfirstNameFirstName
ConstantUPPER_SNAKENounTAX_RATEtaxRate
PackagelowercaseNouncom.app.utilCom.App.Util
Enum typePascalCaseNounDayOfWeekdayofweek
Enum valueUPPER_SNAKENounMONDAYmonday

Complete Java naming convention reference

⚠

Common Pitfall: Acronyms

What about acronyms like URL, HTML, or ID? In class names, treat two-letter acronyms as all-caps (IOReader) but treat longer acronyms as regular words (HtmlParser, not HTMLParser). In camelCase contexts, capitalize only the first letter: parseHtml(), userId. The Google Java Style Guide recommends this approach because it keeps word boundaries clear.
💡

Naming Boolean Variables

Boolean variables and methods should read like yes/no questions. Use prefixes like is, has, can, or should. For example: boolean isActive reads naturally as a question: "Is it active?" This makes conditionals read like plain English: if (user.isActive()).

SECTION 6

Worked Example

Let's walk through a realistic scenario: you need to write a class that models a student in a school database. We'll start with poorly named code and transform it step by step into properly named, convention-following Java.

Refactoring a Student Class to Follow Naming Conventions

  1. 1

    Step 1 — Identify the Bad Names

    Here's the original code with poor naming: class student_record { String N; int g; double GPA; static int maxgrade = 100; void Calc_gpa(int pts, int total) { GPA = (double) pts / total; } boolean check() { return GPA >= 2.0; } } Problems: the class uses snake_case, fields use single letters or inconsistent casing, the method uses mixed underscores, and the constant isn't marked as such.
    Identified 7 naming violations.
  2. 2

    Step 2 — Fix the Class Name (PascalCase, Noun)

    The class student_record should become StudentRecord. This follows PascalCase and is a clear noun phrase describing what the class represents.
    class StudentRecord
  3. 3

    Step 3 — Fix the Fields (camelCase, Descriptive Nouns)

    The field N is a mystery — rename it to studentName. The field g becomes gradeLevel. The field GPA looks like a constant but it changes — rename it to gradePointAverage (or simply gpa since it's a well-known acronym).
    String studentName; int gradeLevel; double gpa;
  4. 4

    Step 4 — Fix the Constant (SCREAMING_SNAKE_CASE)

    The field maxgrade is meant to be a constant that never changes. Add static final and rename to all uppercase with underscores.
    static final int MAX_GRADE = 100;
  5. 5

    Step 5 — Fix the Methods (camelCase, Verb Phrases)

    The method Calc_gpa violates two rules: it starts with an uppercase letter and uses an underscore. Rename to calculateGpa. The boolean method check() is vague — rename to isPassing() so it reads like a yes/no question.
    void calculateGpa(int earnedPoints, int totalPoints) { ... } boolean isPassing() { ... }
  6. 6

    Step 6 — Final Refactored Class

    Putting it all together, the corrected class reads clearly and follows every Java naming convention: public class StudentRecord { static final int MAX_GRADE = 100; private String studentName; private int gradeLevel; private double gpa; public void calculateGpa(int earnedPoints, int totalPoints) { gpa = (double) earnedPoints / totalPoints; } public boolean isPassing() { return gpa >= 2.0; } }
    All 7 naming violations corrected. The code is now readable at a glance.

SECTION 7

Good Names vs. Bad Names — A Comparison

Following naming conventions isn't just about capitalization patterns. A truly good name is also descriptive, pronounceable, and unambiguous. The table below compares names that meet these criteria with names that technically follow casing rules but still cause confusion.

QualityBad NameGood NameWhy It Matters
Too shortint d;int daysSinceLogin;You can't guess what 'd' means without reading surrounding code.
Too longnumberOfStudentsWhoPassedTheExampassingStudentCountNames over ~25 characters hurt readability. Be concise.
MisleadingString accountList;String accountName;'List' implies a collection. If it's a single String, don't call it a list.
Unclear verbvoid data()void fetchData()Methods should start with a verb. 'data' is a noun.
Type in nameString strName;String name;Java is strongly typed — the type is already declared. Don't repeat it.

Good vs. bad naming practices beyond casing conventions

✦

KEY TAKEAWAY

A good variable name is like a good street sign — it tells you exactly where you are without making you stop and think. If you have to read three lines of surrounding code to understand what a name means, that name needs to be improved. The best test is this: could a classmate who has never seen your code understand the purpose of each name on its own?

SECTION 8

Connection to Professional Practices

Java naming conventions are just the starting point of a larger world of clean code practices. As you advance, you'll encounter more sophisticated ideas about how naming affects the maintainability and scalability of software. The table below shows how basic naming conventions connect to more advanced professional practices.

What You Learn NowWhat Professionals DoWhy It Builds On Conventions
Use camelCase for variablesUse domain-specific language (DDD)Once casing is automatic, you focus on choosing names from the problem domain, like 'enrollmentDate' instead of generic 'date'.
Use PascalCase for classesFollow SOLID naming patternsProfessional class names encode design responsibilities: 'PaymentProcessor', 'OrderValidator', 'UserRepository'.
Use verbs for methodsApply command/query separationMethods that change state use verbs like 'save'. Methods that return data use 'get' or 'find'. This prevents confusing side effects.
Use consistent style across filesUse linters and formatters (Checkstyle, Spotless)Automated tools enforce naming conventions across thousands of files in large projects, so no human has to police them manually.

How Java naming conventions connect to advanced software engineering

In AP Computer Science and college-level courses, you'll also encounter design patterns — proven templates for solving common programming problems. These patterns have their own naming traditions (like ending class names with Factory, Observer, or Builder) that only make sense once basic naming conventions are second nature. Think of today's lesson as building the foundation that everything else in software craftsmanship sits on.

SECTION 9

Practice Problems

Question 1: CONCEPTUAL

A classmate writes a class called bankAccount and a method called GetBalance(). Identify the naming convention violations and explain the correct names.
Show answer
There are two violations. First, bankAccount uses camelCase, but class names must use PascalCase. The correct name is BankAccount. Second, GetBalance() starts with an uppercase letter, but method names must use camelCase. The correct name is getBalance(). The capitalization of the first letter is crucial: uppercase signals a class (a blueprint), while lowercase signals a method or variable (an action or a piece of data).

Question 2: BASIC CALCULATION

Convert each of the following badly named identifiers into the correct Java convention. State what type of element each one is. 1. Max_Health (a constant) 2. PLAYERNAME (a variable) 3. game_character (a class) 4. CheckCollision (a method)
Show answer
1. Max_Health → MAX_HEALTH — Constants use SCREAMING_SNAKE_CASE with all uppercase letters and underscores between words. 2. PLAYERNAME → playerName — Variables use camelCase starting with a lowercase letter, with each new word capitalized. 3. game_character → GameCharacter — Classes use PascalCase with every word capitalized and no underscores. 4. CheckCollision → checkCollision() — Methods use camelCase, so the first letter must be lowercase.

Question 3: INTERMEDIATE

You are designing a library management system. Write the properly named Java declarations (just the signatures, not the implementations) for: 1. A class representing a library book 2. A constant for the maximum number of books a student can check out (5) 3. A field storing the book's title 4. A method to check whether the book is currently available 5. A method to mark the book as returned
Show answer
1. public class LibraryBook — PascalCase noun describing the blueprint. 2. public static final int MAX_CHECKOUT_LIMIT = 5; — SCREAMING_SNAKE_CASE for a constant that never changes, with a descriptive name that communicates the purpose. 3. private String bookTitle; — camelCase noun for a field. 4. public boolean isAvailable() — camelCase starting with 'is' because it returns a boolean, reading like a yes/no question. 5. public void markAsReturned() — camelCase starting with a verb ('mark') that describes the action being performed.

Question 4: APPLIED

Your team is building a weather app. A teammate submits the following code for review. Rewrite the code with proper naming conventions and explain each change: class weather_data { static int CITY_COUNT = 10; String CityName; double temp_fahrenheit; void CONVERT_TO_CELSIUS() { ... } boolean hot() { ... } }
Show answer
The corrected code is: public class WeatherData { static final int CITY_COUNT = 10; private String cityName; private double temperatureFahrenheit; public double convertToCelsius() { ... } public boolean isHot() { ... } } Changes: (1) weather_data → WeatherData (class needs PascalCase). (2) CITY_COUNT was already UPPER_CASE but needed the final keyword to truly be a constant. (3) CityName → cityName (field uses camelCase). (4) temp_fahrenheit → temperatureFahrenheit (no underscores in camelCase; also expanded abbreviation). (5) CONVERT_TO_CELSIUS → convertToCelsius (methods use camelCase, not UPPER_CASE). (6) hot() → isHot() (boolean methods should start with 'is').

Question 5: CRITICAL THINKING

Java's naming conventions are not enforced by the compiler — technically, you could name a class xYz_123 and the code would still compile. Given this, argue for or against the following claim: "Naming conventions are just suggestions and don't matter as long as the code works." Use at least three specific reasons in your argument, considering teamwork, debugging, and long-term maintenance.
Show answer
The claim is fundamentally wrong, and here's why. First, regarding teamwork: professional software is almost never written by one person. When a new developer joins a project, consistent naming conventions let them read and understand the codebase quickly. If every programmer uses a different style, the codebase becomes a patchwork that's exhausting to read. Second, regarding debugging: when you're hunting for a bug at 11 PM, you need to scan code fast. If all classes use PascalCase and all variables use camelCase, you can instantly distinguish between types and instances. A name like studentRecord (lowercase s) must be a variable, while StudentRecord (uppercase S) must be a class — this split-second recognition prevents misreading code. Third, regarding maintenance: studies show that developers spend about 70% of their time reading code, not writing it. Code that follows conventions acts as its own documentation. Six months from now, you won't remember what xYz_123 means, but calculateFinalGrade() explains itself. Naming conventions are not cosmetic — they are a fundamental tool for managing the complexity of software over time.

SUMMARY

Lesson Summary

Summary

Java naming conventions are a set of agreed-upon rules that make code instantly readable. camelCase (lowercase first letter, capitalize subsequent words) is used for variables, methods, and parameters. PascalCase (capitalize every word, including the first) is used for classes, interfaces, and enums. SCREAMING_SNAKE_CASE (all uppercase with underscores) marks constants declared with static final. Package names are all lowercase.

Beyond capitalization, good names are descriptive and use the right part of speech: classes are nouns, methods start with verbs, and boolean methods begin with is, has, or can. These conventions are not enforced by the compiler but are essential for teamwork, debugging, and long-term code maintenance. Mastering naming conventions is the first step toward writing truly professional Java code.

Varsity Tutors • Java • Java Naming Conventions — Follow standard Java naming conventions (camelCase, PascalCase)