一、关于new
在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建该类的实例对象后,系统才会为每个对象分配空间,存储各自的数据。
二、静态变量
static只能修饰成员变量,不能修饰局部变量
class Student {
static String schoolName; // 定义静态变量schoolName
}
public class Example12 {
public static void main(String[] args) {
Student stu1 = new Student(); // 创建学生对象
Student stu2 = new Student();
Student.schoolName = "传智播客"; // 为静态变量赋值
System.out.println("我的学校是" + stu1.schoolName); // 打印第一个学生对象的学校
System.out.println("我的学校是" + stu2.schoolName); // 打印第二个学生对象的学校
}
}
Student类中定义了一个静态变量,被所有实例所共享。“schoolName”这类特定的数据 在内存中仅需要存一份。
【为什么是传智播客,因为我自学看的书,就是他们写的这一本《Java基础案例教程》,写的真的好。我这些都是看这本书的笔记,并再次向大家推荐这本书《Java基础案例教程》黑马程序员编著】
三、静态方法
可以不用先创建对象而直接调用静态方法。
class Person {
public static void sayHello() { // 定义静态方法
System.out.println("hello");
}
}
class Example13 {
public static void main(String[] args) {
//1.类名.方法的方式调用静态方法
Person.sayHello();
//2.实例化对象的方式来调用静态方法
Person p = new Person();
p.sayHello();
}
}
Person.sayHello()——通过静态方法,不需创建对象就调用;
下一行通过实例化对象来调用
四、静态代码块
什么叫代码块?
{
//大括号里的就叫代码块
}
用静态代码块对类成员变量进行初始化,类只加载一次>>静态代码块只执行一次
static{
System.out.println("执行了静态代码块");
}
静态代码块,只会在第一次被加载时使用,且只会加载一次