一:类变量基本介绍
1:什么是类变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
多发
2:如何定义类变量
定义语法:
//访问修饰符 static 数据结构 变量名;[推荐]//static 访问修饰符 数据类型 变量名private static int age; [推荐这种写法]statoc private int age;
3:如何访问类变量
//类名.类变量名//或者对象名.类变量名【静态变量的访问修饰符的访问权限和范围和普通属性是一样的。】//推荐使用:类名.类变量名;public static void main(String[] args) {Person p1 = new Person();//两种方式都可以调用,推荐用类名.类变量名System.out.println(Person.num);System.out.println(p1.num);}class Person{public static int num;}
二:类变量注意事项和细节
**_什么时候需要用类变量?
- 当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量):比如:定义学生类,统计所有学生共交多少钱。Student (name, staticfee)
类变量与实例变量(普通属性)区别?
- 类变量是该类的所有对象共享的,而实例变量是每个对象独享的。
加上static称为类变量或静态变量,否则称为实例变量/普通变量/非静态变量
类变量可以通过类名.类变量名或者对象名.类变量名来访问,但java设计者推荐我们使用类名.类变量名方式访问。【前提是满足访问修饰符的访问权限和范围】
实例变量不能诵讨类名.类变量名方式访问
类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量了。 ```java public class test { public static void main(String[] args) {
//此时即便没有创建对象,类已经加载了,类变量也就可以使用了System.out.println(person.age);
} } class person{
static int age= 1; }
- **_类变量的生命周期是随类的加载开始,随着类消亡而销毁。_**<a name="A9Y1h"></a>### 三:类方法基本介绍<a name="UaoLi"></a>#### 1:类方法基本介绍**_类方法也就静态方法_**```java//访问修饰符 static 数据返回类型 方法名(){ }【推荐】//static 访问修饰符 数据返回类型 方法名(){ }public static void Speak(){System.out.println("说");}
2:类方法的调用
public class test {public static void main(String[] args) {person.Speak();}}class person{public static void Speak(){System.out.println("说");}}
3:应用案例
//模拟交学费,总学费开始为0;public class test {public static void main(String[] args) {Student sakura = new Student("sakura", 300);Student sa = new Student("sakura1", 400);System.out.println(Student.Fee);}}class Student{public static int Fee = 0;private String name;public Student(String name ,int fee) {this.name = name;Student.Fee+= fee;}
//开发自己的工具类时,可以将方法做成静态的,方便调用class MyTools { //求出两个数的和public static double calSum(double n1, double n2) {return n1 + n2;} //可以写出很多这样的工具方法...}
4:类方法经典的使用场景
- 当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。
- 比如:工具类中的方法utils
- Math类、Arrays类、Collections集合类看下源码:
-
四:类方法注意事项和细节
类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区∶
- 类方法中无this的参数
- 普通方法中隐含着this的参数
类方法可以通过类名调用,也可以通过对象名调用
- 普通方法和对象有关,需要通过对象名调用,
- 比如对象名.方法名(参数),不能通过类名调用
类方法中不允许使用和对象有关的关键字,比如this和super。**普通方法(成员方法)可以**。
类方法(静态方法)中只能访问静态变量或静态方法。
普通成员方法,既可以访问非静态成员,也可以访问静态成员。
class Student{public static int Fee = 0;String name;public static void speak(){System.out.println(Student.Fee);System.out.println(name);//无法访问}}
:::danger 静态方法;只能访问静态属性;
非静态方法;可以访问所有成员; :::五:练习
1:

、
