精华内容
下载资源
问答
  • python静态变量和静态方法

    万次阅读 2019-04-15 19:36:42
    一、静态变量和静态方法 1、静态变量和静态方法都属于类的静态成员,它们与普通的成员变量和成员方法不同,静态变量和静态方法只属于定义它们的类,而不属于某一个对象。 2、静态变量和静态方法都可以通过类名和...

    一、静态变量和静态方法

    1、静态变量和静态方法都属于类的静态成员,它们与普通的成员变量和成员方法不同,静态变量和静态方法只属于定义它们的类,而不属于某一个对象。
    2、静态变量和静态方法都可以通过类名和对象进行访问。

    二、静态变量示例

    class StaticMenthod:
    count = 0 #静态变量,不需要显示的声明

    def __init__(self):
        StaticMenthod.count += 1
    
    def __del__(self):
        StaticMenthod.count -= 1
    

    sMenthod = StaticMenthod() #创建对象实例

    sMenthod.count += 1 #通过对象实例操作静态变量
    print(“sMenthod:%d”%(sMenthod.count)) #通过对象实例调用静态变量
    print(“StaticMenthod:%d”%(StaticMenthod.count)) #通过类名调用静态变量

    运行结果如下:
    在这里插入图片描述

    通过上面的测试结果可以看出通过对象实例访问静态变量和通过类名访问静态变量的结果是不一样的,由此也证明了通过对象访问实例和通过类名访问实例是互相不干扰的。

    三、静态方法

    1、静态方法相关描述
    1》、静态方法中不需要传入self参数,因此无法访问在静态方法中访问静态实例变量。
    2》、静态方法中不可以直接访问类的静态变量,但可以通过类名引用静态变量。
    3》、可以通过装饰符定义静态变量。

    2、静态方法示例

    class StaticFunc:
    str = “this is static variable!”

    @staticmethod
    def static_func():
        print("this is static function!")
    

    StaticFunc.static_func()

    sFunc = StaticFunc() sFunc.static_func()

    print(StaticFunc.str)

    运行结果如下:
    在这里插入图片描述

    通过结果分析可以知道:通过对象名调用静态方法和通过类名调用静态方法的结果是没有什么区别的。

    说明:如有错误,欢迎指正。。。

    展开全文
  • 静态方法里的变量都是静态的吗?

    千次阅读 2018-07-26 21:06:51
    静态方法里面的变量都是静态的,这样的说法并不正确,只能说静态方法只能引用静态成员变量,它的内部可以定义非静态变量  

    静态方法里面的变量都是静态的,这样的说法并不正确,只能说静态方法只能引用静态成员变量,它的内部可以定义非静态的变量

     

    展开全文
  • java中实例方法 静态方法 实例变量 静态变量之间的关系问题 静态变量可以方法静态方法 实例变量可以访问静态方法 实例变量可以访问实例方法 以上说法对么
  • Java学习笔记之静态方法(类方法),非静态方法(成员方法),静态变量(类变量),非静态变量(成员变量)之间的关系 首先明白这几个名词的意思: 静态方法:即类方法,在类之中,以static关键字申明的方法。 ...

    Java学习笔记之静态方法,非静态方法,静态变量,非静态变量四者之间的关系

    前言:
    静态方法,静态变量在程序开始运行时就进行初始化;非静态方法,非静态变量在创建该对象时才进行初始化。引用未初始化变量/方法即会报错。

    首先明白这几个名词的意思:

    1. 静态方法:即类方法,在类之中,以static关键字申明的方法。
      使用方法:直接使用类名.类方法名来进行调用。
    2. 非静态方法:即成员方法,没有static关键字申明。
      使用方法:需要先创建类对象,使用类对象名.成员方法名来进行调用。
    3. 静态变量:即类变量,在类之中,方法之外,以static关键字申明的变量,它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。
      使用方法:直接使用类名.类变量名来进行访问。
    4. 非静态变量:即成员变量,在类之中,方法之外,没有static关键字申明。
      使用方法:需要先创建类对象,使用类对象名.成员变量名来进行调用。

    这四者之间的关系

    1. 静态方法中
      可以直接调用同类或其他类中的静态变量或静态方法,原因:被调用者均已初始化;
      不可以直接调用同类或其他类中的成员变量或成员方法,原因,此时被调用者还未初始化,若仍需调用,则需先声明创建对象,再进行调用。
      注:不推荐在静态方法中调用非静态变量/方法
    class Test2 {
        //非静态变量
        public String name2 = "我是Test2的非静态变量name2!";
        //静态变量
        public static String hobby2 = "我是Test2的静态变量hobby2!";
    
        public static void method1() {
            System.out.println("我是Test2的静态方法method1!");
            System.out.println(Test2.hobby2);
        }
        public void method2() {
            System.out.println("我是Test2的非静态方法method2!");
        }
    }
    
    public class Test {
        //非静态变量
        public String name = "我是Test的非静态变量name!";
        //静态变量
        public static String hobby = "我是Test的静态变量hobby!";
    
        public static void method1() {
            System.out.println("我是Test的静态方法method1!");
            System.out.println(Test2.hobby2);
            System.out.println(hobby);
            Test2.method1();
        }
        public void method2() {
            System.out.println("我是Test的非静态方法method2!");
        }
    
        public static void main(String[] args) {
            method1();
        }
    
    1. 在非静态方法中
      可直接调用同类或其他类中的静态变量或静态方法,原因:被调用者均已初始化;
      可直接调用同类中的成员方法/变量,不可直接调用其他类中的成员方法/变量,原因:同类中的成员方法/变量在执行该成员方法时已完成初始化,而其他类中的成员方法/变量此时还未创建类对象,未初始化。若仍需调用其他类中的成员方法/变量,则需先创建对应类对象,再进行调用。
    class Test2 {
        //非静态变量
        public String name2 = "我是Test2的非静态变量name2!";
        //静态变量
        public static String hobby2 = "我是Test2的静态变量hobby2!";
    
        public static void method1() {
            System.out.println("我是Test2的静态方法method1!");
        }
        public void method2() {
            System.out.println("我是Test2的非静态方法method2!");
            System.out.println(name2);
            System.out.println(hobby2);
        }
    }
    
    public class Test {
        //非静态变量
        public String name = "我是Test的非静态变量name!";
        //静态变量
        public static String hobby = "我是Test的静态变量hobby!";
    
        public static void method1() {
            System.out.println("我是Test的静态方法method1!");
        }
        public void method2() {
            System.out.println("我是Test的非静态方法method2!");
            //同类中静态变量及方法调用
            System.out.println(hobby);
            method1();
            System.out.println("-------------------------------");
            //其他同类中静态变量及方法调用
            System.out.println(Test2.hobby2);
            Test2.method1();
            System.out.println("-------------------------------");
            //同类中非静态变量及方法调用
            System.out.println(name);
            method3();
            System.out.println("-------------------------------");
            //其他同类中非静态变量及方法调用
            Test2 test2 = new Test2();
            System.out.println(test2.name2);
            test2.method2();
        }
        public void method3() {
            System.out.println("我是Test的非静态方法method3!");
        }
    
        public static void main(String[] args) {
            Test test = new Test();
            test.method2();
        }
    

    以上是我在学习Java的过程觉得容易被弄晕的地方,所以总结了一下,如果有什么不对的地方,欢迎指出。

    展开全文
  • 通过本文可理解静态变量、静态方法的含义,可以知道为什么静态方法内部不能调用非静态变量

    要理解这个问题,首先我们需要什么是静态方法:静态方法是用static关键字修饰的方法。

    我们使用学生类Student来分析,

    public class Student {
        private static String job = "学生";
        private String name;
    
        Student(String name){
            this.name = name;
        }
        // 静态方法
        public static String getJob(){
            return job;
        }
        // 非静态方法
        public String getName(){
            return name;
        }
    
        public static void main(String[] args) {
            System.out.println(Student.getJob());
            Student stu = new Student("苏苏的唐");
            System.out.println(stu.getJob());
            System.out.println(stu.getName());
        }
    }
    
    

    我们可以看到,在调用静态方法getJob()时,可以使用类名直接调用,也可以使用实例化对象调用。
    但是,调用非静态方法getName()时,只能使用实例化对象调用,使用类名调用会报错。

    可以理解为,静态方法是属于整个类的,而非静态方法只能通过对象调用,Student类的job都是学生,但是并不能得出Student类的name都是“苏苏的唐”。

    回到问题本身,为什么静态方法内部不能调用非静态变量,因为静态方法是属于整个类的,非静态变量只在属于某个对象时有值,而属于类时是空的,所以不能调用。

    展开全文
  • 静态内部类和内部类的关系 只有内部类才能被声明为静态类,即...如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态的; 总结: 是否能拥有静态成员:静态内部类.
  • 静态方法里可以调用静态方法静态变量,同时也能调用非静态方法和非静态变量。 public class Test { public Test() {}; public Test(int i) {this.n = i;} public static int m = 5; public int n = 10; public...
  • Java静态变量、静态常量、静态方法

    万次阅读 2016-11-17 17:24:17
    Java静态变量、静态常量、静态方法  静态变量和静态方法都属于静态对象。在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态...
  • JVM的类加载规则 : static类型的属性和方法,在类加载的时候就会存在于内存中。 要想使用某个类的static属性和方法,那么这个类必须要加载到JAVA虚拟机中。... 调用内部类的静态成员或方法内部类...
  • Java中的构造方法静态变量和静态方法构造方法 构造方法注意事项: 1. 如果你没写无参的构造方法 系统会给你提供一个无参的构造方法 2. 如果我只写了 有参的构造方法 这时 系统就不再给你提供无参的构造方法 3...
  • 实例驱动的学习方法,先看下面的例子: public class Programmer { /** * 全局变量:也叫成员变量,是指在类中定义的变量; * 它在整个类中都有效。... //静态域(类变量) private final Str
  • 首先要明确一点: static修饰方法、成员变量是属于类自己的。并不属于特定的某个对象。...所以还有这么一说,不能在静态方法内使用非静态的成员变量,因为这个成员变量不是类自己的,而是某一个对象的...
  • 实例方法必须在类实例化后通过对象来调用,而静态方法可以在类实例化之前就使用。...静态方法在访问本例的成员时,只允许访问静态成员(即静态成员变量静态方法),而不允许访问实例成员变量和实例方法;实
  • Python的类方法,静态方法,实例方法,类变量,实例变量,静态变量的总结在一些博客上面看到说Python没有静态变量,但是静态方法却是有的,这点我也弄的不大清楚,这个例子对于++类方法++,==静态方法==,实例方法的...
  • 1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法方法体 public void xxx(){ //code } ...
  • Java之静态变量和静态方法

    千次阅读 2018-01-09 21:59:09
    静态变量 和 静态方法(使用static修饰)静态变量 保存在 方法区的静态区(共享区)静态变量 是共享的区间静态变量 是如何调用 ?1.可以使用对象来调用2.推荐 使用类名来调用为什么静态变量 要使用类名去调用 ?只要加载了...
  • 初学java,看到书上的编纂,可能出现了错误。...那就感觉一定要静态方法才能调用静态变量的感觉,和网上的说法又有冲突。 我知道静态方法是不可以调用非静态的变量和非静态方法的。 对于非静态方法现在混乱了。求解答
  • 1.局部变量定义:在成员方法中定义的变量称为局部变量;(方法中的形参也可以作为局部变量)例:public void method1() { //n,i均为局部变量 int n; for(int i=0;i<5;i++) { System.out.println("*...
  • A:静态方法是一个属于类而不属于对象(实例)的方法。(√) 静态方法可以在没有创建对象实例的情况下调用,其是可以通过类名引用。 B:静态方法只能访问静态数据。无法访问非静态数据(实例变量)。(√) 它这边的...
  • 变量可以分为:全局变量静态全局变量静态局部变量和局部变量。 按存储区域分,全局变量静态全局变量静态局部变量都存放在内存的静态 存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个...
  • 为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量?理由很简单,静态方法不属于对象,是属于类的,是...相反,非静态方法是可以引用静态变量的。因为静态变量是存储在静态内存单元内,可以直接用类进...
  • PHP 静态变量和静态方法

    千次阅读 2015-07-01 11:13:10
    PHP静态变量 静态变量(也叫类变量) 静态的变量的基本用法 1.在类中定义静态变量形式: ...如果在类中访问 有两种方法 self::$静态变量名 , 类名::$静态变量名 如果在类外访问: 有一种方法 类名::$静态变量名 例程:
  • 静态局部变量静态全程变量static。

    万次阅读 多人点赞 2019-01-01 13:28:04
    1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。 1.1 static 的引入 我们知道在函数内部定义的变量,当程序执行到它的... 最容易想到的方法是定义为全局的变量,但定...
  • 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都...4、全局变量和静态变量如果没有手工初始化,则由编译...
  • 什么全局变量,局部变量静态局部变量静态全局变量 到这里,我们就可以很容易区分上面的变量类型了。实际上这里只是换了一种说法: 全局:具有文件作用域的变量 静态:具有静态存储期或内部链接属性 局部:具有...
  • 全局变量,静态全局变量,静态局部变量,类静态成员内存分配与初始化问题 全局变量,静态全局变量,静态局部变量,类静态成员内存分配都为全局数据区(静态区)(data区) 他们都在程序执行之前就进行了内存分配 初始化...
  • C++类中静态变量和静态方法使用介绍

    万次阅读 多人点赞 2018-08-14 10:45:26
    刷剑指offer第64题涉及到类内静态成员与方法的知识,有点模糊,找了两篇博客整理一下。 转自:https://www.cnblogs.com/sixue/p/3997324.html  最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与...
  • 静态变量 1、静态变量必须在外部定义和赋值 a、不能在 main() 函数中定义 b、不能在类的构造函数中定义 2、必须要定义静态变量,否则该...1、静态方法可以被类直接调用,但是同静态变量一样符合public、priva
  • Kotlin定义静态变量、静态方法

    万次阅读 2018-05-10 15:46:31
    Kotlin定义静态变量、静态方法 kotlin定义静态变量方法可以采用伴生对象的方式。 经典例子,实例化Fragment。 java写法: public class TestFragment extends Fragment { private static final String ARG_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,130,096
精华内容 452,038
关键字:

方法内部的变量是静态变量吗