精华内容
下载资源
问答
  • 为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量? 理由很简单,静态方法不属于对象,是属于类的,是不需要实例化的,而非静态变量是属于对象的,需要先实例化。在一个类的静态成员中去访问其非静态...

    为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量?

    理由很简单,静态方法不属于对象,是属于的,是不需要实例化的,而非静态变量是属于对象的,需要先实例化。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。

     

    相反,非静态方法是可以引用静态变量的。

    因为静态变量是存储在静态内存单元内,可以直接用类进行调用,也可以用实例化的对象对其引用。所以非静态方法是可以引用静态变量的。

    只有一种情况下 会定义static方法 就是在一个类中没有任何成员变量(属性)的时候,定义static方法

    展开全文
  • 静态方法中不能调用非静态方法,那么在静态方法中通过实例化一个非静态的对象, 来实现对非静态方法的调用应该怎么理解 public class test1{ public static void main(string []args){//静态的方法 test2 t=new test...
  • 1.静态方法优先于对象被创建2.非静态方法通过对象创建3.静态方法在内存中创建后,还没有创建对象,所以不能调用非静态方法和变量。

    1.静态方法优先于对象被创建

    2.非静态方法通过对象创建

    3.静态方法在内存中创建后,还没有创建对象,所以不能调用非静态方法和变量。

    //null 类型调用静态方法,输出什么?

    public class Test{

    private static void Print(){
    System.out.println("Print()");
    }

    public static void main(String[] args) {

    ((Test)null).Print();

    }

    }

    问输出什么?

    //输出是Print()

    因为:1.Print()是静态方法,不用对象也可以调用,((Test)null).Print() 这种格式也可以。

              2.null 可以转换成任意引用类型

              3.((Test)null).Print() 相当于 Test t = null; t.Print();

              4.如果将Print()方法的修饰符去掉,执行时会报空指针异常,因为是在静态方法中调用非静态方法。

    展开全文
  • 静态方法中,不能调用非静态;非静态成员内部类中不能有静态变量和静态方法 一.静态方法中,不能调用非静态 1.因为,静态方法执行先于非静态。 2.静态方法中,要想使用非静态,就必须等静态方法执行结束,即执行完 } ...

    静态方法中,不能调用非静态;非静态成员内部类中不能有静态变量和静态方法

    一.静态方法中,不能调用非静态

    1.因为,静态方法执行先于非静态。

    2.静态方法中,要想使用非静态,就必须等静态方法执行结束,即执行完 } 为止,才能执行非静态。而非静态却在 ** }** 之前,所以矛盾!

    二.非静态成员内部类中不能有静态变量和静态方法

    1.因为static变量和static方法,随着类加载的时候进入内存,此时外部类对象还未建立;

    2.成员内部类的方法,都依赖于外部类对象,若想调用成员内部类方法,需先创建外部类对象,再创建内部类对象。

    3.即,再外部类对象未创建时,却向使用依赖外部类对象的方法。矛盾!

    展开全文
  • 其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非...
  • 通过本文可理解静态变量、静态方法的含义,可以知道为什么静态方法内部不能调用非静态变量

    要理解这个问题,首先我们需要什么是静态方法:静态方法是用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都是“苏苏的唐”。

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

    展开全文
  • 在 idea 中编辑这样的代码,会报错 因为,在Demo02类中,方法 a 是静态方法,方法 b 是非静态...​ *所以,在同一类中,不可以用早的调用晚的,(晚的还不存在,怎么调用),即静态方法不能调用非静态方法。 ...
  • 为什么java中静态方法不能调用非静态方法和变量? 很多人在之前的学习之前总是会去死记硬背一些概念,随手写了一个经常会碰到的问题,欢迎大家参考 我们先看效果 --静态方法去调用非静态的成员—>报错 静态的...
  • 主要是生命周期不同,静态成员是先于非静态成员存在的 静态成员存在于共享区中,此时可能还 没有new对象到堆内存中,也就没有非静态成员存在,当然就不能访问
  • Java-静态方法为什么不能调用非静态方法引言java中静态方法为什么不可以调用非静态方法?** static关键字的修饰成员变量,成员方法和对象无关。总结:下面说说静态的特点:实例变量和类变量的区别静态的使用注意事项...
  • 1. 静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在。 2. 当你创建一个对象...
  • 静态方法是属于类的,即静态方法是随着类的加载而加载的,在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的,也就是说静态方法先于对象存在,当你创建一个对象时,程序...
  • 因为非static方法是对象级别的,必须...也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,因为没有任何实例对象,所以无法调用非static方法 转载于:https://www.cnblogs.com/Kingram/p/9375931.html...
  • 为什么静态方法不能直接调用非静态方法? 答:二者的生命周期不同。非静态方法的调用是在运行期决定的,而静态方法的调用是在编译期决定的。
  • 我很久以前就知道静态方法不能调用非静态成员,但是从没想过为什么?只知道书上这么说的。 今天忽然想了一下,豁然开朗: 那么静态方法为何不能调用非静态成员? 首先要从静态方法是如何被调用的呢说起? 类名....
  • 静态方法为什么不能调用非静态方法! 针对这个问题。有如下两点要说: 1>静态方法不能调用非静态方法: 静态方法是把方法由对象层级提升到类层级,这就使得这个方法在类加载的时候就在内存中分配了区域,即...
  • 其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非...
  • Java static 静态属性和方法1、静态属性和方法从属于类,不从属与对象2、不能在静态方法中调用非静态变量和非静态方法3、可以在普通方法中调用静态属性和方法我们以下面的这个简单的Student类为例public class ...
  • 为什么java中静态方法不能调用非静态方法和变量? 1. 例子 先看以下代码 很容易看出,在静态方法main中,非静态变量str2编译失败,而在普通方法test里,静态属性str和非静态属性都可以成功编译,那为什么静态方法...
  • 静态方法里不能调用非静态变量
  • php在编译的时候,会先在方法区加载类文件,然后先找静态属性和静态方法进行加载,如果在静态方法中有访问到非静态的属性,此时的$this/self对象还未初始化,所以会报错。 转载于:...
  • 静态方法中不能调用非静态方法 准确地说是不能直接调用non-static方法。但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-static方法。 在主函数(static方法)中我们经常创建某个类的实例,再利用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,464
精华内容 1,385
关键字:

静态不能调用非静态