1、加载时间

  首先明白内存问题

  Java内存分为:堆内存、栈内存、方法区(静态区和非静态区)、本地方法区

  无论是静态方法还是非静态方法,在内存中都只有一份分别位于方法区的静态区和非静态区;非静态方法在调用时会默认使用this传入当前对象,静态方法无此参数;

  在第一次创建一个类实例,或者调用类的静态属性、静态方法的时候会发生类加载!

  关于类的加载,详见:http://www.cnblogs.com/tengpan-cn/p/5869099.html

package com.pt;

public class StaticParent {
public static String name="parent"; {//类加载不会执行此方法;每实例化一个对象会执行此方法
System.out.println("parent 构造方法");
} static{//类加载的时候会执行此方法,并且只执行一次
System.out.println("parent 静态方法");
} public static void staticSay(){//不可以被重写
System.out.println("i am pan");
} public void Say(){//可以被重写
System.out.println("i am teng");
}
}

  静态方法与非静态方法加载的时间不同,静态方法是在加载类的时候就加载到内存里面;非静态方法是

2、静态方法不可以重写

  使用@Override注解编译错误!

3、使用上

  静态方法不需要new实例就可以调用;非静态方法必须new实例才可以调用;

简单总结一下:单例模式由于可以实例化,方法可以重写,因此灵活性较大!

        静态方法模式由于不需要实例化,因此不会在堆内存内占用空间!

    推荐使用单例模式!

java 静态方法和单例模式的区别的更多相关文章

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

    转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法 ...

  2. java 静态方法和实例方法的区别(转)

    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...

  3. JAVA 静态方法和实例方法的区别 (图表)

    静态方法和实例方法的区别主要体现在两个方面:   在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...

  4. Java静态方法和实例方法的区别以及this的用法

    Java静态方法和实例方法 相同之处:都能接收传过来的参数,都能返回参数. 不同之处:有static就是静态方法,静态方法在另外一个类里面,不用new这个静态方法所在的类,也能直接访问这个方法,比较方 ...

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

    静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别  调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名:通常使用类名.static方法只能处理sta ...

  6. Java内存的 静态方法和实例方法的区别及使用场景

    注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变 ...

  7. java静态方法和实例化方法的区别(copy)

    [资料来源] http://blog.csdn.net/biaobiaoqi/article/details/6732117 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法 ...

  8. Java静态方法和实例方法区别详解

    静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...

  9. java静态方法(变量)、非静态方法(变量)区别

    java静态方法.静态变量在调用时生成唯一标识,即在内存中给定一个静态位子,这样在调用时可以直接找到,而且会节省内存.但如果声明的静态方法.静态变量过多,会占用过多内存,有可能导致内存溢出. 非静态方 ...

随机推荐

  1. [妙味Ajax]第一课:原理和封装

    知识点总结: ajax是异步的javascrip和xml,用异步的形式去操作xml 访问的是服务端,即https://127.0.0.1/ 或者 https://localhost 1.创建一个aja ...

  2. spring-security 配置文件

    转自:spring-security学习笔记--配置文件 <?xml version="1.0" encoding="UTF-8"?> <be ...

  3. page,request,session,application四个域对象的使用及区别

    转自:page,request,session,application四个域对象的使用及区别 1.page指当前页面.只在一个jsp页面里有效 .2.request 指从http请求到服务器处理结束, ...

  4. JavaScript面向对象基础语法总结

    1.Javascript的 对象(Object): //例子:var car = { , , }; 2.使用构造函数来创建对象. //例子: var Car = function() { ; ; ; ...

  5. HDU 1695 GCD#容斥原理

    http://acm.hdu.edu.cn/showproblem.php?pid=1695 翻译题目:给五个数a,b,c,d,k,其中恒a=c=1,x∈[a,b],y∈[c,d],求有多少组(x,y ...

  6. POJ 1230 Pass-Muraille#贪心+vector迭代器用法

    (- ̄▽ ̄)-* (注意下面代码中关于iterator的用法,此代码借鉴某大牛) #include<iostream> #include<cstdio> #include< ...

  7. 禁止使用test类的就是禁止使用本来的$this对象.可以调用父类的对象

    public function __construct() { parent::__construct( ); parent::__construct( ); if(!APP_DEBUG ) die( ...

  8. Jbpm工作流表补数记录

    一: 历史数据表 11.  JBPM4_HIST_ACTINST 流程活动(节点)实例表 存放Activity Instance的历史记录 12.  JBPM4_HIST_DETAIL  流程历史详细 ...

  9. nefu 903 字符串去星

    字符串去星 Problem : 903 Time Limit : 1000ms Memory Limit : 65536K description 有一个字符串(长度小于100),要统计其中有多少个* ...

  10. C#第四天

    2.类语法:[public] class 类名{    字段;    属性;    方法;}写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字 n ...