精华内容
下载资源
问答
  • java 静态方法和实例方法的区别

    千次阅读 2017-12-16 17:59:01
    java 静态方法和实例方法的区别 转自  java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象...

    java 静态方法和实例方法的区别

    转自 

    java 静态方法和实例方法的区别

    静态方法和实例方法的区别主要体现在两个方面:
     
    在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
     
    静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
     
    下面几个例子展示了这一区别。
     
    1、调用静态方法示例。
     
    //-----------hasStaticMethod.java-----------------
    public class hasStaticMethod{
    //定义一个静态方法
    public static void callMe(){
      System.out.println("This is a static method.");
    }
    }
     
    下面这个程序使用两种形式来调用静态方法。
    //-----------invokeStaticMethod.java-----------------
    public class invokeStaticMethod{
      public static void main(String args[]){
      hasStaticMethod.callMe();  //不创建对象,直接调用静态方法   
      hasStaticMethod oa = new hasStaticMethod();   //创建一个对象
      oa.callMe();      //利用对象来调用静态方法
    }
    }
    程序两次调用静态方法,都是允许的,程序的输出如下:
    This is a static method.This is a static method. 
     
    允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
    还有一个很典型的代表就是数组的处理工具Arrays
    2、静态方法访问成员变量示例。
     
    //-----------accessMember.java-----------------
    class accessMember{
    private static int sa; //定义一个静态成员变量
    private int ia;  //定义一个实例成员变量
    //下面定义一个静态方法
    static void statMethod(){
      int i = 0;    //正确,可以有自己的局部变量sa = 10;  
      //正确,静态方法可以使用静态变量
      otherStat(); 
      //正确,可以调用静态方法
      ia = 20;   //错误,不能使用实例变量
      insMethod();  //错误,不能调用实例方法
    }
    static void otherStat(){}
    //下面定义一个实例方法
    void  insMethod(){
      int i = 0;    //正确,可以有自己的局部变量
      sa = 15;    //正确,可以使用静态变量
      ia = 30;    //正确,可以使用实例变量
      statMethod();   //正确,可以调用静态方法
    }
    }
     
    本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
     
    main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
    标签:  java静态
    1
    0
    « 上一篇: java9-2形式参数
    » 下一篇: java9-3 返回类型
    posted @  2016-09-11 11:38  卡拉瓦 阅读( 5502) 评论( 0
    展开全文
  • 静态方法和实例方法的使用场景

    千次阅读 2018-09-08 11:14:00
    静态方法和实例方法: 1、从逻辑关系来看:(优先级2) 若方法与类的实例不存在逻辑上的联系,那么用静态方法。 反之则最好使用实例方法。 2、从性能角度:(优先级3) 若方法经常被调用,则用静态...
    静态方法和实例方法:

    1、从逻辑关系来看:(优先级2)
    若方法与类的实例不存在逻辑上的联系,那么用静态方法。
    反之则最好使用实例化方法。


    2、从性能角度:(优先级3)

    若方法经常被调用,则用静态方法更佳,因为这样可以避免频繁地实例化对象导致的资源占用,提高性能。
    然而,由于静态的东西,在构造的时候是在堆中声称的,在结束之前不会被释放与改变,会一直占用内存空间,所以不宜有过多的静态成员。
    因此若方法不会经常被调用,则使用实例方法可能会更好。


    3、从线程并发的角度考虑:(优先级1)

    要考虑方法是否存在严重的并发,
    如果并发的可能性很大,则不适宜使用静态方法。
    如果并发的可能性很小,或者通过简单的同步操作可以保证线程安全,那就可以考虑使用静态方法,这种情况下,静态方法要更快,更方便。

    总结:
    考量采用何种方式,要看主要矛盾在什么地方。
    所以应该在保证不会产生并发的情况下,在方便快捷和开发难度上做一个衡量。

    文章转自:https://blog.csdn.net/xzz123s/article/details/47133355

    展开全文
  • 静态方法和实例方法联系与区别

    千次阅读 2017-01-11 15:24:11
    静态方法实例方法联系与区别

    1、调用方式上

    静态方法依赖于类,通过类.静态方法调用;实例方法依赖于类的对象,需要创建对象后,对象.实例方法使用

    2、使用上

    实例方法内部不能定义静态变量,会出现编译错误;实例方法可以直接调用静态方法;静态方法内部可以定义和使用实例变量,静态方法无法直接调用实例方法(因静态方法加载时类还没有实例化,实例方法依赖于类的对象)

    3、静态方法和实例方法的内存分配问题

    一般认为静态方法常驻内存,实例方法只有在使用时才分配内存。但事实上,是一样的,都是在类被加载时常驻内存。static方法和non-static方法在创建实例对象时,属性的值对各个对象各不相同(每个实例对象的所有字段在内存中有一个拷贝,用于区分操作哪个对象的字段),new一个实例时,会把实例属性放在GC Heap里面,同时new的对象放在堆栈上,堆栈指针指向刚才拷贝的的内存地址;而静态方法中的静态字段只有一份;对于static和non-static方法代码都是一样的,所以只需要一份代码,占用一份内存空间。调用速度上因实例方法需要实例化分配内存,静态方法则不用,故静态方法会快一点,但也可忽略不计

    4、区分静态方法和实例方法的原因

    早期结构化编程几乎所有方法都是静态方法,引入实例化方法的概念是在面向对象概念出现以后,区分静态方法和实例方法不能单单从性能上理解。创建c++、java、c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题

    5、适用场景

    静态方法:一个方法与类的对象无关,如工具类等

    实例方法:一个方法依赖于类的对象;多线程场景下,如果静态方法中含有静态变量,如果对静态变量进行更改操作易造成线程安全问题

    6、静态方法与单例模式

    如果一个方法与对象的实例无关用静态方法,反之采用实例方法,但如果方法和对象的实例有关,又想维护一份实例时,需要用单例模式。如系统运行时,需要加载一些的配置和属性,是公共的,需要在整个生命周期存在,只需要一份就可以,但此时这些配置和属性又是通过面向对象的编码方式得到的,虽然用静态方法也能解决,但最好的方式是采用单例模式

    展开全文
  • java中静态方法和实例方法的区别

    千次阅读 2015-07-23 16:33:05
    静态方法和实例方法的区别   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方法在访问本...

    静态方法和实例方法的区别

     
        在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
        之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象(静态成员随着类的加载而存在,随着类的消失而消失;成员变量随着对象的创建而存在,随着对象的被回收而释放)。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
     
    main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
    
    展开全文
  • C#静态方法和实例方法

    千次阅读 2018-10-13 16:40:44
    1.静态方法: 用修饰符static声明的方法; 注意:(1)不管用类创没创建对象,类的静态方法都可以使用;...注意:实例方法可以使用该方法所在类的所有静态成员和实例成员。 使用格式: 对象名.实例方法名  ...
  • C# 静态方法和实例方法

    千次阅读 2017-10-26 10:55:37
    静态成员:静态成员变量和静态方法。public class MyClass { // 定义类的静态成员变量 public int number; // 定义类的实例成员变量 public static string owner; // 定义类的静态方法 public static void S
  • 静态方法和实例方法的区别

    千次阅读 2012-07-12 13:45:03
    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象...
  • js静态方法和实例方法

    千次阅读 2018-09-04 23:28:35
    实例方法就是定义在 构造函数原型(prototype)上的方法; 面试的时候很多面试官会问:数组有哪些方法。那么我们就拿数组的方法来举例。 静态方法: Array的新方法from/of都是。在控制台输入 Object....
  • java静态方法和实例方法以及父子类初始化加载顺序

    万次阅读 多人点赞 2015-09-23 12:36:15
    Java系列之:看似简单的问题 静态方法和实例方法的区别 Java程序启动class文件被读取时类被加载,如果有static方法,此时会分配内存,非static方法实例化类时才在内存中分配控件存储,引用存储在堆栈中,实体存储...
  • 很多人认为静态方法在类加载时加载,生命周期与类相同,实例方法在类实例化后存在,生命周期比静态方法短。这是错误的! 什么是静态方法?什么是实例方法静态方法静态方法属于类,通过 类名.方法名(参数)调用...
  • 静态方法实例方法 方法是类的行为,写在接口实现两个文件中。在接口部分声明方法,在实现部分实现方法。 1、类方法实例方法 Objective-C中的类可以声明两种类型的方法实例方法和方法实例方法就是一个...
  • python3:类方法静态方法和实例方法以及应用场景

    千次阅读 多人点赞 2018-10-20 13:29:52
    1.实例方法 在编程里经常用的是实例方法,直接用实例去调用, 只要 方法里有self 就可以断定是实例方法, 如 def method_name(self,*argc). 先看下边代码如下: class Date: def __init__(self,year,month,day)...
  • C#静态方法和实例方法方法的重载、操作符的重载
  • 一、JAVA中的静态方法  ... 静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,
  • 静态方法没有隐式的this传递,所以静态方法中不能直接访问实例成员。 在一个方法中,没有this的话就意味着没有对象,但是实例成员必须通过对象点来访问, 所以在静态方法中无法访问实例成员。 在静态方法中,如果...
  • 类的静态方法和实例方法的区别

    千次阅读 2007-04-29 16:50:00
    类的静态方法和实例方法的区别 静态方法可以被类名直接引用,静态方法在类被加载到内存时就被自动配置,占用内存空间,就像人的手臂一样.实例方法顾名思义就是需要个实例对象(instace)对其进行引用,多一个instance,就...
  • python中类方法静态方法和实例方法的作用区别

    千次阅读 多人点赞 2019-02-18 15:08:00
    class A(object): # 构造函数 def __init__(self, title1): self.title = title1 print(self.title) # 实例函数 def foo(self, title2): print(title2) # 静态函数 @staticme...
  • 注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1、(静态)成员变量存放在data ...3、方法(包括静态方法)存放在code segment(方法块),存放代码片段,且只存放一次public class Cat { //private static
  • 总结:大家对这个问题都有一个共识:那就是实例方法更多被使用稳妥,静态方法少使用。有时候我们对静态方法和实例方法会有一些误解。1、大家都以为“ 静态方法常驻内存,实例方法不是,所以静态方法效率高但占...
  • js中静态方法和实例方法的调用

    千次阅读 2019-08-29 16:10:14
    今天在看Date对象的一个方法时发现了一个新的知识点, Date.now() //返回1970-1-1午夜到现在的时间间隔,用毫秒表示 Date.parse() //解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象...
  • 方法 (Method) 是一种类型定义,所以,它被存放在 Type Object 上,Type Object 是一个被分配在托管堆上的特殊类型,在同一个 AppDomain 中,每一个类型,都对应一个全局的 Type Object。每个引用类型的实例,都包含...
  • Java 静态方法和实例方法的区别

    千次阅读 2010-05-18 09:49:00
    静态方法: "类名.方法名","对象名.方法名";静态方法无需创建对象就可以使用; 实例方法: "对象名.方法名";实例方法必须创建对象才可以使用; 举例: public class Case {  public static void testStatic() { ...
  • // (1)使用Class对象的newInstance方法创建一个实例,这种方法用默认构造方法创建对象     TestClass objectA = (TestClass) testClass.newInstance();     System.out.println("Class的newInstance() ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 958,108
精华内容 383,243
关键字:

静态方法和实例方法