当前位置: 代码迷 >> 综合 >> java-learning:34. 静态static关键字
  详细解决方案

java-learning:34. 静态static关键字

热度:35   发布时间:2024-02-20 16:20:54.0

1. 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。

package day08.demo03;/*
如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。*/
public class Demo01StaticField {public static void main(String[] args) {Student one = new Student("郭靖", 19);one.room = "101教室";System.out.println("姓名:" + one.getName() +",年龄:" + one.getAge() + ",教室:" + one.room +",学号:" + one.getId());Student two = new Student("黄蓉", 16);System.out.println("姓名:" + two.getName() +",年龄:" + two.getAge() + ",教室:" + two.room +",学号:" + two.getId());}}
package day08.demo03;public class Student {private int Id;private String name; // 姓名private int age; // 年龄static String room; // 所在教室private static int idCounter = 0; // 学号计数器,每当new了一个新对象的时候,计数器++public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getId() {return Id;}public void setId(int id) {this.Id = id;}public Student(String name, int age) {this.name = name;this.age = age;this.Id = ++idCounter;}public Student() {idCounter++;}
}

2. 一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。

如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。

无论是成员变量,还是成员方法,如果有了static,都推荐使用类名称进行调用。

静态变量:类名称.静态变量

静态方法:类名称.静态方法()

1.静态不能直接访问非静态。

原因:因为在内存当中是[先]有的静态内容,[后] 有的非静态内容。 “先人不知道后人,但是后人知道先人。”

2. 静态方法当中不能用this。

原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。