精华内容
下载资源
问答
  • java非静态成员方法
    2021-03-05 22:49:15

    首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而非static的成员是在创建对象的时候,即new 操作的时候才初始化的;

    先后顺序是先加载,才能初始化,那么加载的时候初始化static的成员,此时非static的成员还没有被加载必然不能使用,而非static的成员是在类加载之后,通过new操作符创建对象的时候初始化,此时static 已经分配内存空间,所以可以访问!

    简单点说:静态成员属于类,不需要生成对象就存在了.而非静态需要生成对象才产生.所以静态成员不能直接访问非静态.

    下面说说静态的特点:

    1.随着类的加载而加载

    也就是,说静态会随着类的消失而消失,说明静态的生命周期最长

    2.优先于对象的存在

    明确一点:静态是先存在的对象是后存在的

    3.被所有对象共享

    4.可以直接被类名多调用

    实例变量和类变量的区别

    1.存放位置

    类变量随着类的加载存在于方法区中,实例变量随着对象的对象的建立存在于堆内存里

    2.生命周期

    类变量生命周期最长,随着“类”的加载而加载,随着类的消失而消失,实例变量随着“对象”的消失而消失

    静态的使用注意事项:

    1.静态方法只能访问静态成员(包括成员变量和成员方法)

    非静态方法可以访问静态也可以访问非静态

    2.静态方法中不可以定义this,super关键字

    因为静态优先于对象存在,所以静态方法中不可以出现this,super关键字

    3.主函数是静态的。

    静态的利弊

    利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份

    可以直接被类名所调用

    弊:生命周期过长,访问出现局限性(只能访问静态)

    更多相关内容
  • 下面小编就为大家带来一篇Java非静态成员变量之死循环(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下:Test.javapublic Test{public void notStatic(){System.out.println("我访问了非静态方法");}public static void main(String[] args){...

    是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下:

    Test.java

    public Test{

    public void notStatic(){

    System.out.println("我访问了非静态方法");

    }

    public static void main(String[] args){

    notStatic();//错误,无法访问

    }

    }

    解决办法有二:

    一 、设置其为静态方法

    //加入 static

    public static void notStatic(){

    System.out.println("我访问了非静态方法");

    }

    二、new 对象 引用方法

    并不是什么时候都可以设置其为静态方法,比如安卓开发中findViewById只能在非静态方法中调用,那怎么办呢.很简单,new对象引用。

    Test.java

    public Test{

    public void notStatic(){

    System.out.println("我访问了非静态方法");

    }

    public static void main(String[] args){

    //notStatic();//错误,无法访问

    Test test = new Test();

    test.notStatic(); //引用

    }

    }

    关于 static

    此部分文章原文链接:JAVA菜鸟入门篇 - static关键字 (十三)

    static方法

    static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

    但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

    展开全文
  • ● 生命周期(Lifecycle):静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。非静态方法(Non-Static Method)又叫...

    ● 生命周期(Lifecycle):

    静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。

    非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。

    ● 在内存中存储位置

    静态方法和静态变量创建后始终使用同一块内存,是连续的。

    非静态方法会存在于内存的多个地方,是离散的。

    ● 效率

    静态方法的使用效率比非静态方法的效率高。

    ● 线程安全

    静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。

    非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

    ● 使用范围

    静态方法:⒈ 有静态属性的类,一般会定义静态方法。⒉ 没有属性的类,一般会定义静态方法。⒊ 如果一个方法与他所在类的实例对象无关,那么它就应该是静态的。静态方法可以被继承但是不能被覆盖。

    ●  总计

    如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。如果从线程安全、性能、兼容性上来看,选用实例化方法为宜。

    http://zxc.zn2006.blog.163.com/blog/static/23298584201132084228197/

    static 方法 (静态方法)

    方法在该方法所属类型第一次被使用的时候加载、在该类型所在应用程序域卸载的时候卸载、也就是说 static 方法只加载一次、除非整个Domain 被卸载了。

    实例方法(非静态方法)

    方法是在第一次该方法第一次调用的时候会加载、然后被缓存起来。但是中间如果有GC 的话, 就会被收集,那下次再调用该方法时,又得重新加载该方法。也就是说,实例方法有可能加载多次。总的来说,static 方法只用加载一次,但一直会占用内存。多了些资源消耗;而实例方法需要加载多次,但不会一直占用内存。少些资源消耗。一般来说, 在程序里面,一些使用频率高的方法就用static 方法、使用频率低的则用实例方法。静态方法只能访问静态变量,没有什么线程安全之说,只有静态变量才有。

    展开全文
  • 首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而static的成员是在建立对象的时候,即new 操做的时候才初始化的;函数前后顺序是先加载,才能初始化,那么加载的时候初始...

    首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而非static的成员是在建立对象的时候,即new 操做的时候才初始化的;函数

    前后顺序是先加载,才能初始化,那么加载的时候初始化static的成员,此时非static的成员尚未被加载必然不能使用,而非static的成员是在类加载以后,经过new操做符建立对象的时候初始化,此时static 已经分配内存空间,因此能够访问!this

    简单点说:静态成员属于类,不须要生成对象就存在了.而非静态须要生成对象才产生.因此静态成员不能直接访问非静态.  spa

    下面说说静态的特色:code

    1.随着类的加载而加载对象

    也就是,说静态会随着类的消失而消失,说明静态的生命周期最长

    2.优先于对象的存在

    明确一点:静态是先存在的对象是后存在的

    3.被全部对象共享

    4.能够直接被类名多调用

    实例变量和类变量的区别

    1.存放位置

    类变量随着类的加载存在于方法区中,实例变量随着对象的创建存在于堆内存里

    2.生命周期

    类变量生命周期最长,随着“类”的加载而加载,随着类的消失而消失,实例变量随着“对象”的消失而消失

    静态的使用注意事项:

    1.静态方法只能访问静态成员(包括成员变量和成员方法)

    非静态方法能够访问静态也能够访问非静态

    2.静态方法中不能够定义this,super关键字

    由于静态优先于对象存在,因此静态方法中不能够出现this,super关键字

    3.主函数是静态的。

    blog

    静态的利弊

    利:对对象的共享数据进行单独空间的存储,节省空间,没有必要每个对象中都存储一份

    能够直接被类名所调用

    弊:生命周期过长,访问出现局限性(只能访问静态)生命周期

    展开全文
  • 如果我们在成员变量前边加上static关键字,这个变量就成为静态成员变量,我们又把这种变量叫做“类变量”,因为这样的变量在这个类的所有对象里只有一个,这个类的所有对象“共享”同一个类变量。
  • public class Circle { private double radius = 1.0; double getAre() { return radius * radius * Math.PI;... //radius不是静态的,静态方法可以通过类对象调用非静态成员变量、非静态方法 } }
  • 二、生命周期:静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。非静态方法(Non-Static Method)又叫实例化方法,...
  • 展开全部java方法调用非静e68a84e8a2ad3231313335323631343130323136353331333365633864态方法的步骤:1、新建一个类,本例类名“NoStaticMethod”,声明一些成员变量,创建一个主方法main(),一个非静态方法Method...
  • 属性名 就可调用(也只能这样调用),而非静态成员变量的值是各个实例私有的,所以调用的时候必须是先有具体的类的实例,然后通过实例名来调用。也就是说,static修饰的成员,大家用的时候都用的一个东西,一个人...
  • Java】静态方法只能访问静态成员

    千次阅读 2020-08-17 11:43:08
    静态方法只能访问静态成员是常见的java知识点,这个知识点是针对于静态方法在本类中只能直接访问静态成员,而不能访问直接访问非静态成员变量。 原因: 静态的内容是随着类的加载而加载,所以当类加载时,静态方法和...
  • Java静态成员

    千次阅读 2018-12-29 16:12:34
     在Java中声明类的成员变量和方法时,可以使用static关键字把成员声明为静态成员。静态变量也叫类变量,非静态变量也叫实例变量;静态方法也叫类方法非静态方法也叫实例方法静态成员最主要的特点是它不属于任何...
  • 因为静态方法是属于类的,而非静态方法属于实例对象 哈,有人这样回答了,勇哥表示不满意。你这样回答,离正确答案,就差那么一句话。说出来了,就表示你知道了。哪句话呢? 临门一脚 JVM是如何调用Java方法的呢?...
  • C++静态成员函数访问非静态成员的四种方法

    千次阅读 多人点赞 2021-07-01 17:00:48
    大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员和静态函数,即 class...
  • 非静态方法可以访问静态变量或调用静态方法”是Java中有关静态修饰符的常见问题之一,答案是, 是的 ,非静态方法可以访问静态变量或调用静态方法Java中的方法。 这没有问题,因为有静态成员,即静态变量和静态...
  • JAVA静态方法中只能调用静态成员。 main方法是静态方法,如果想调用其它的方法,只能是其它的静态方法。 public class Test{ public static void main(String[] args) { fangFa(100,100); //这里直接调用...
  • 存储位置不同:静态成员变量存在于类方法区的静态区中,非静态成员变量存在于堆内存中 调用方式不同:静态成员变量可由类名调用,也可由对象调用,是属于整个类的,是该类所有对象所共有的对象;而非静态成...
  • 而学了面向对象后,定义类之后,就需要创建对象并通过对象来调用类中的成员方法或构造方法。以下为静态方法调用(不创建对象)与非静态方法调用的代码区别(定义1个长方形类,定义求周长和面积的方法,然后定义1个...
  • java中静态方法非静态方法的区别

    千次阅读 2020-09-24 23:15:16
    其次,静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员,而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法。总的来说非静态方法啥都可以调用。 注意main方法一定...
  • Java中静态方法非静态方法的区别

    千次阅读 2017-10-21 23:44:49
    (1)静态方法中只能调用静态成员或者静态方法,不能直接调用非静态成员方法,如果需要调用,则需要先实例化; (2)静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法
  • java静态成员和非静态成员的区别

    千次阅读 多人点赞 2018-08-27 21:01:08
    static(静态)关键字  static关键字: 用于修饰成员(成员变量和成员函数)  被修饰后的成员具备以下特点... 静态方法只能访问静态成员 静态方法中不可以写this,super关键字 主函数是静态的 stati...
  • 大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员和静态函数,即 ...
  • java私有静态方法

    千次阅读 2021-03-16 03:34:01
    一、private static我们都知道想要保护一些数据,只要设置为private,并且在java中static多少有“共享”...说的比较笼统,其实原因是对非静态函数来说,都会默认传递第一个this参数,就是this地址,调用的时候会首先...
  • java中什么叫静态成员变量

    千次阅读 2021-02-26 08:24:08
    静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。...
  • Java main 方法调用非静态方法处理 初学Java,对于main 方法调用非静态方法所导致问题简单的分析一下 1.问题描述 代码 public class Object { public static void main(String[] args) { System.out.println...
  • 初学java,看到书上的编纂,可能出现了错误。 <Head of JAVA>第二版(中文版)284页中原话: 问:非静态方法可以存取...我知道静态方法是不可以调用非静态的变量和非静态方法的。 对于非静态方法现在混乱了。求解答
  • 这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为...程序最终都是在内存中执行,变量只有在内存中占有一席之地时才会被访问,类的静态成员(静态变量和静态方法)属于类本身,在类加载的
  • java中静态方法为什么不可以调用非静态方法

    千次阅读 多人点赞 2018-12-07 20:51:49
    重点:static关键字的修饰成员变量,成员方法和对象无关。 static修饰的内容是随着类的加载而加载的,且只加载一次。 它存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。 它优先于对象存在,所以,...
  • 非静态方法可以调用静态变量吗

    千次阅读 2021-11-26 13:56:52
    Java中非静态方法是可以调用静态方法与变量。...2、静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法,实例方法则无此限制。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 204,534
精华内容 81,813
关键字:

java非静态成员方法