ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Static的理解和使用

2022-06-27 11:31:08  阅读:120  来源: 互联网

标签:静态方法 静态 理解 static 使用 Static notion 属性


重点:什么时候,要用static
                 1-什么时候用Static属性:
                          回答: 1- 属性被多个对象共享,不会随着对象的不同而不同
                  2-什么时候用Static方法:
                          回答: 1- 操作静态属性的方法,通常Static
                                    2- 工具类中的方法,习惯上声明为Static。比较Math、Arrays、Collections

1- Static的理解

/*
static关键字的使用:
1- static:静态的
2- static是用来修饰:属性、方法、代码块、内部类
3- 使用static修饰属性:--->  静态变量
     3.1-属性是否使用static修饰,分为:静态属性和非静态属性(实例变量)
         非静态变量(实例变量):我们创建了类的多个对象,每个对象都独立拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。
         静态变量(类变量):我们创建了类的多个对象,多个对象共享(最后)一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。
     3.2-static修饰属性的其他说明:
         1- 静态变量随着类的加载而加载,可以通过"类.静态变量"的方式进行调用
         2- 静态变量的加载要早于对象的创建
         3- 由于类只会加载一次,则静态变量在内存中也只会存在一份;存在方法区的静态域中。
         总结:    类变量     实例变量
          类:     yes         no
          对象:   yes         yes
4- 使用static修饰方法:
         1- 随着类的加载而加载,可以通过"类.静态的方法"的方式进行调用
        2-  总结:    静态方法    非静态方法
             类:     yes         no
             对象:   yes         yes
        3- 重点:1.静态方法,只能调静态的方法和属性  <-----> 2.非静态的方法,可以调用非静态方法And静态方法

5- static注意点:
       1- 在静态方法内,不能使用this关键字、super关键字。
       2- 关于静态属性和静态方法的使用,都从生命周期的角度区理解。

*6- 什么时候,要用static
       1-什么时候用Static属性:
                   回答:属性被多个对象共享,不会随着对象的不同而不同
       2-什么时候用Static方法:
                   回答: 1- 操作静态属性的方法,通常Static
                         2- 工具类中的方法,习惯上声明为Static。比较Math、Arrays、Collections
 */

2- Static的帮助理解(代码块)

public class StaticTest {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.name = "chenxixi";
        person1.age = 18;
        person1.notion = "china";//在没有person2的时候,这个notion="china",但是因为有了person2,又因为notion是静态,所以会被改变

        Person person2 = new Person();
        person2.name = "zhou";
        person2.age = 18;
        person2.notion = "CHINA";

        if( person1.notion ==  person2.notion){
            System.out.println("测试static方法,如果 person2.notion == person1.notion ,返回+出这句话");
        }

        System.out.println("测试静态static方法的notion是否改变---> person1=  "+person1.notion);
        System.out.println("测试静态static方法的notion是否改变---> person2=  "+person2.notion);
    }
}

class Person {
    //测试的类--static的属性
    String name;
    int age;
    static String notion;

    public void eat(){ //非静态方法
        System.out.println("吃饭");
        //非静态----可以调非静态方法AND静态方法
        sleep();//非静态方法,调用非静态方法--Success
        show();//非静态方法,调用静态方法--Success

    }
    public static void show(){//静态方法
        System.out.println("我们是show");
        //sleep(); -- 静态方法,调用非静态方法--Fail
        playGame();//-- 静态方法,调用静态方法--Success
    }

    public void sleep(){ //非静态方法
        System.out.println("睡觉");
    }
    public static void playGame(){//静态方法
        System.out.println("我们是打游戏");
    }


}

标签:静态方法,静态,理解,static,使用,Static,notion,属性
来源: https://www.cnblogs.com/chen-zhou1027/p/16415561.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有