java static学傻了,;类方法中给成员变量赋值必须先new个对象,普通方法却不用,为啥呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java static学傻了,;类方法中给成员变量赋值必须先new个对象,普通方法却不用,为啥呢?相关的知识,希望对你有一定的参考价值。

越学越迷糊,好像很简单,但就转不过来弯了,求指点

我也让你给说迷糊了 呵呵
这么说吧 其实被static修饰的变量会在类装载时直接加载到静态内存中
因此不需要创建类的实例就可以直接对其进行使用,但是非静态变量的话就必须创建对象后才可以使用,其实在做开发的时候通常一些公用常用的方法会写成静态方法,这样就避免创建类的实例来调用它,避免了资源的浪费,也许你会有这样的疑问,当写成static时候装载类的时候就加载会不会也是内存资源的浪费,其实不会的 因为static是存在于静态内存中,对内存资源影响不大。希望你不会在迷糊了。。
参考技术A static 方法的执行实际上执行的是磁盘上.class文件中的类方法,由static描述的方法和属性不需要在内存中new出实例(object)。
而由private修饰的成员方法的执行需要new出一个对象来,放在内存中进行存取。
参考技术B 留QQ 哥给你 指导下

java中static关键字的作用

在java语言中有四种使用情况:成员变量、成员方法、代码块和内部类

(1)static成员变量

     java中可以通过statin关键字修饰变量达到全局变量的效果。static修饰的变量(静态变量)属于类,在类第一次通过类加载器到jvm时被分配内存空间。

(2)static成员方法

   static修饰的方法属于类方法,不需要创建对象就可以调用。static方法中不能使用this和super等关键字,不能调用非static方法,只能访问所属类的静态成员变量和静态方法。

(3)static 代码块

   JVM在加载类时会执行static代码块,static代码块常用于初始化静态变量,static代码只会在类被加载时执行且执行一次。

(4)static内部类

  static内部类可以不依赖外部类实例对象而被实例化,而内部类需要在外部类实例化后才能被实例化。

 静态内部类不能访问外部类的普通变量,只能访问外部类的静态成员变量和静态方法。

以上是关于java static学傻了,;类方法中给成员变量赋值必须先new个对象,普通方法却不用,为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章

static变量以及方法

java基础知识13 类变量(static)实例变量成员变量局部变量

java static成员变量方法和非static成员变量方法的区别

Java中的static

JAVA中static,this,extends,super,package

java中的成员变量类变量,成员方法类方法 属性和方法区别