为什么对象可以调用静态变量而不能调用静态方法?一直没搞懂,我知道类方法,大神们请介绍下底层,跪谢
使用static 修饰的方法和变量是类变量和类方法!在jdk 将类编译完以后,java 会用类加载器将类加载进内存中!然后才可以让我们去运行,
类变量和类方法就是在这个时候实例化了,它的生命周期也是跟随着类,随它产生而产生,随它死亡而死亡。因此它的调用方式也与平常变量,方法不一样,普通方法是在new 一个类时才开始 出世(也就是生命周期的开始)。所以普通方法需要new 一个类后,再用这个类的实例来调用。而静态方法可以直接用 类名.方法 进行调用。(因为他在产生的时候就已经产生无须实例化类也可以调用)
不会啊,都是可以的。是不是你没有加上public修饰
java里面的static标识是静态类型,即类的方法或者实例,就是说可以不通过new 类名称的方式得到的对象来调用,直接通过类名.方法来调用。
这就是类的方法;而实例方法就是必须通过对象的.操作调用的方法。你知道的类方法通常就是指java的静态的方法。
static静态方法,不需要通过实例调用,直接用类名调用。
调用是可以调用的,也能正常运行。但是静态方法是类方法,不推荐用实例调用,因为那是设计上的不合理。
类的实例,其存储空间里没有类的静态方法的拷贝,所以你无法通过实例来访问类的静态方法。
直接用类名调用。至于类的静态方法的存储区域,我忘了哈。
都可以用static来修饰啊
static修饰的变量为静态变量,修饰的方法为静态方法
都可以通过类直接调用,也可以new本类 用实例来掉静态变量和方法。
但是一般情况下还是用类调用。
建议你去看看静态和非静态的区别,理清一下知识点,别把自己搞混乱了!
静态方法和非静态方法都会在堆的方法区里保存,但是static方法不需要对象初始化就可以使用,然而非静态方法虽然有了地址,但是需要对象初始化才可以使用,我理解是,非静态方法所需要的参数都是对象初始化才会生成的,所以在对象没有实例化的时候是不能调用的,而static方法用的都是static变量,static变量也会保存在类信息里
而且对象是可以调用静态方法的,因为都是在方法区里保存的,不过不推荐,因为静态方法是属于类的
对于用static修饰的成员变量和成员方法来说,所有对象都共享这个变量;不会为静态的生成变量副本。
static变量存在data segment内存中
可以使用类名来引用
使用public修饰的static成员变量和成员方法就相当于是全局变量。
静态的只能调用静态的,不能调用非静态的;