Java中类是编译器识别的模板,对象是new创建的实例;类名须PascalCase且不能为关键字;构造方法名须与类名一致;static成员属类,实例成员属对象。

类的定义必须包含 class 关键字和合法标识符名
类定义以 class 开头,后接类名(遵循 PascalCase),不能是关键字(如 int、class 自身)、不能含空格或特殊符号。类体用 {} 包裹,即使为空也不能省略。
class Person {
String name;
int age;
}
常见错误包括:
- 把
class Person {}写成Class Person {}(大小写敏感) - 类名用下划线
person_info或数字开头2ndPerson,编译直接报错error: class, interface, or enum expected - 在方法内部定义类(非静态嵌套类除外),会触发
error: illegal start of type
对象创建依赖 new + 构造方法调用
对象不是声明出来的,是运行时通过 new 运算符在堆上分配内存并初始化得到的。哪怕类没显式写构造方法,编译器也会插入一个无参默认构造方法;一旦写了任意构造方法,这个默认构造就消失。
Person p1 = new Person(); // 调用默认构造
Person p2 = new Person("Alice", 30); // 调用自定义构造
容易踩的坑:
本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。
立即学习“Java免费学习笔记(深入)”;
-
Person p;只是声明引用变量,此时p == null,访问p.name抛NullPointerException - 构造方法名拼错(比如写成
persom()),它就变成普通方法,new Person()找不到匹配构造,编译失败 - 构造方法里调用
this(...)必须是第一行,否则报error: call to this must be first statement in constructor
实例成员 vs 静态成员:生命周期和访问方式完全不同
static 修饰的字段或方法属于类本身,在类加载时初始化,所有对象共享一份;不加 static 的才是实例成员,每个对象独立拥有。
class Counter {
static int count = 0; // 类变量,所有 Counter 对象共用
int value = 0; // 实例变量,每个对象一份
static void incCount() { count++; } // 静态方法只能访问静态成员
void incValue() { value++; } // 实例方法可访问两者
}
典型误用:
- 在静态方法(如
main)中直接访问value,报error: non-static variable value cannot be referenced from a static context - 把本该每个对象独立的状态(如用户 ID、连接句柄)声明为
static,导致多对象间互相覆盖 - 用
new Counter().count访问静态字段——语法合法但语义误导,应统一用Counter.count
new,要么在类还没加载时就试图用它的静态成员。









