目录
  1. 1. static能干嘛
    1. 1.1. 使用staticI修饰成员变量
    2. 1.2. static让数据访问更方便
  2. 2. static特点
  3. 3. 注意事项
static能干嘛

static能干嘛

class Person {
//姓名
String name;
//年龄
int age;
//国籍
String country;

public Person(){}

public Person(String name,int age) {
this.name = name;
this.age = age;
}

public Person(String name,int age,String country) {
this.name = name;
this.age = age;
this.country = country;
}

public void show() {
System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country);
}
}

class PersonDemo {
public static void main(String[] args) {
//创建对象1
Person p1 = new Person("邓丽君",16,"中国");
p1.show();

//创建对象2
Person p2 = new Person("杨幂",22,"中国");
p2.show();

//创建对象3
Person p3 = new Person("凤姐",20,"中国");
p3.show();

}
}

如果是这样呢?

使用staticI修饰成员变量

class Person {
//姓名
String name;
//年龄
int age;
//国籍 static修饰
static String country;

public Person(){}

public Person(String name,int age) {
this.name = name;
this.age = age;
}

public Person(String name,int age,String country) {
this.name = name;
this.age = age;
this.country = country;
}

public void show() {
System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country);
}
}

class PersonDemo {
public static void main(String[] args) {
//创建对象1
Person p1 = new Person("邓丽君",16,"中国");
p1.show();

Person p2 = new Person("杨幂",22);
p2.show();

Person p3 = new Person("凤姐",20);
p3.show();
}
}

发现命名没有给后面两个变量赋值中国,缺依然有值输出,引入了static后就可以省事儿多了

static让数据访问更方便

可以直接通过类名访问


class Outer {
private int num = 10;
private static int num2 = 100;
//内部类用静态修饰是因为内部类可以看出是外部类的成员
public static class Inner {
static int num3 = 1000;
public void show() {
System.out.println(num2);
}

public static void show2() {
System.out.println(num2);
}
}
}

class DemoTest {
public static void mai
Outer.Inner oi = new Outer.Inner();
oi.show();
//show2()的调用
Outer.Inner.show2();
//访问num3
System.out.println(Outer.Inner.num3);
}
}

static特点

那么static的特点是啥

  • 它可以修饰成员变量,还可以修饰成员方法
  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
  • 可以通过类名调用
    • 其实它本身也可以通过对象名调用。
    • 推荐使用类名调用。(就是为了让外界通过类名访问,一种暴露行为)

注意事项

  • 在静态方法中是没有this关键字的
    • 静态是随着类的加载而加载,this是随着对象的创建而存在。
    • 静态比对象先存在。
  • 静态方法只能访问静态的成员变量和静态的成员方法
    • 静态方法:
      • 成员变量:只能访问静态变量
      • 成员方法:只能访问静态成员方法
    • 非静态方法:
      • 成员变量:可以是静态的,也可以是非静态的
      • 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-08/10/%E5%AD%A6%E4%B9%A0/%E5%90%8E%E7%AB%AF%E5%AD%A6%E4%B9%A0/JAVA/static%E8%83%BD%E5%B9%B2%E5%98%9B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论