static修饰属性、方法、类的区别

一、static修饰属性
1.属性随着类的加载而加载,是类变量,其加载早于对象,不需要new即可加载

2.类变量所在的类的所有对象共用这一个属性,存放在静态域中
二、static修饰方法
1.方法随着类的加载而加载随着类的加载而加载,是类方法,其加载早于对象,不需要new

2类方法所在的类的所有对象共用这一个方法.

3类方法内部只可调用静态的属性和静态的方法,而不能调用非静态的属性和方法
反之,非静态方法可以调用静态的属性和方法

三、static修饰内部类
1普通类是不允许声明为静态的,只有内部类才可以

2被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类

|静态内部类
1 public class Outer {
2 public static class Inner{
3 Inner(){
4 System.out.println(“静态内部类”);
5 }
6 }
7 }

8 public class TestStatic {
9
10 // 不需要new一个对象
11 new Outer.Inner();
12 }
13 }

|普通内部类
1 public class Outer {
2 public class Inner{
3 Inner(){
4 System.out.println(“普通内部类”);
5 }
6 }
7 }

8 public class TestStatic {
9
10 // 需要new一个对象
11 new Outer.new Inner();
12 }
13 }

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
静态属性方法是属于类的,而不是属于类的每个实例。因此,它们可以被直接访问,而不需要先创建类的实例。另外,静态属性方法可以在没有类实例的情况下使用,但非静态属性方法需要先创建类实例才能使用。 举个例子,假设我们有一个名为Person的类,其中有一个静态属性count和一个非静态属性name: ```java public class Person { public static int count = 0; // 静态属性 public String name; // 非静态属性 public Person(String name) { this.name = name; count++; } public static void printCount() { // 静态方法 System.out.println("Total number of persons: " + count); } public void sayHello() { // 非静态方法 System.out.println("Hello, my name is " + name); } } ``` 现在我们可以这样使用这个类: ```java Person.printCount(); // 直接调用静态方法 Person p1 = new Person("Alice"); // 创建实例 p1.sayHello(); // 调用非静态方法 Person.printCount(); // 直接调用静态方法 Person p2 = new Person("Bob"); // 创建另一个实例 p2.sayHello(); // 调用非静态方法 Person.printCount(); // 直接调用静态方法 ``` 输出: ``` Total number of persons: 0 Hello, my name is Alice Total number of persons: 1 Hello, my name is Bob Total number of persons: 2 ``` 注意,静态属性count在每次创建实例时都会增加,而非静态属性name是每个实例独有的。静态方法printCount可以在没有实例的情况下直接调用,而非静态方法sayHello需要先创建实例才能调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值