java 静态方法和单例模式的区别
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 静态方法和单例模式的区别的更多相关文章
- java 静态方法和实例方法的区别
		
转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法 ...
 - java 静态方法和实例方法的区别(转)
		
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
 - JAVA 静态方法和实例方法的区别 (图表)
		
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
 - Java静态方法和实例方法的区别以及this的用法
		
Java静态方法和实例方法 相同之处:都能接收传过来的参数,都能返回参数. 不同之处:有static就是静态方法,静态方法在另外一个类里面,不用new这个静态方法所在的类,也能直接访问这个方法,比较方 ...
 - java静态方法和实例方法的区别
		
静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别 调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名:通常使用类名.static方法只能处理sta ...
 - Java内存的 静态方法和实例方法的区别及使用场景
		
注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变 ...
 - java静态方法和实例化方法的区别(copy)
		
[资料来源] http://blog.csdn.net/biaobiaoqi/article/details/6732117 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法 ...
 - Java静态方法和实例方法区别详解
		
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...
 - java静态方法(变量)、非静态方法(变量)区别
		
java静态方法.静态变量在调用时生成唯一标识,即在内存中给定一个静态位子,这样在调用时可以直接找到,而且会节省内存.但如果声明的静态方法.静态变量过多,会占用过多内存,有可能导致内存溢出. 非静态方 ...
 
随机推荐
- C# 读书笔记之类与结构体
			
类和结构体都包括数据和操作数据的方法 类的定义形式 class PhoneCustomer{public const string DayOfSendingBill = "Monday&qu ...
 - 验证mySqli扩展是否
			
<?php// createTime: 2016/9/9 21:57 //验证mySqli扩展是否//phpinfo(); //2.检测扩展是否已经加载//var_dump(extension_ ...
 - map 理解
			
键值对 map会将同名的值覆盖掉 public static void main(String[] args) { Map<String,String> maptest=new HashM ...
 - React 相关资料
			
learncodeacademy/react-js-tutorials MobX
 - Mysql表名区分大小写
			
mysql数据库在windows服务器上表名和字段名均不区分大小写, 但在linux服务器上表名默认是区分大小写的,可在/etc/my.cnf文件中的[mysqld]下面加上一条配置 lower_ca ...
 - 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样
			
只要你用过自动扶梯,你就能很快的理解CSS中的浮动(Float). 你肯定遇到过这样的情况: 做好了,你想用CSS浮动来调整元素间的位置关系. 在写完代码之后,你发现浮动元素没出现在你设想 ...
 - vs2013+opencv2.4.11+Qt5.5.1配置
			
注意本教程配置环境:win7 32位 如果只配置vs2013+opencv2.4.11,参考http://jingyan.baidu.com/article/ff411625b1311a12e4823 ...
 - 从零开始学Axure原型设计(高级篇)
			
如果你熟悉了Axure的部件库,那么你可以得心应手地画出心目中产品的线框图:如果你会用Axure的母版.动态面板功能,那么你应该能够画出一些简单网站的原型图:但只有你精通了Axure的条件逻辑.变量. ...
 - delphi中ShellExecute使用详解
			
http://jingyan.baidu.com/article/ae97a646ae00a2bbfd461d38.html 百度的讲解 http://www.cnblogs.com/del/arch ...
 - vc中主线程等待子线程退出的方法
			
VC线程同步,在子线程中等待另一子线程结束,通过WaitForSingleObject可以实现,但是如果在主线程中等待子线程结束,这个函数是无法完成要求的,因为它会造成主线程挂起,导致程序死掉.我们可 ...