静态方法和非静态方法有什么本质区别 如题,比如在调用时内存方面的区别. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【haoweishow01】截止到2008-07-08 20:44:07的历史汇总数据(不包括此帖):发帖的总数量:8 发帖的总分数:280 每贴平均分数:35 回帖的总数量:13 得分贴总数量:1 回帖的得分率:7% 结贴的总数量:8 结贴的总分数:280 无满意结贴数:0 无满意结贴分:0 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:0.00 % 无满意结分率:0.00 % 敬礼! 内存方面不清楚,不过如果A类调用B类的静态方法,直接通过B类的名称就可以了,不用调用对象,如果是调用的非静态方法,就一定得先创建一个对象。(当然能否调用还得考虑其它修饰符) /* 个人理解,仅供参考 */静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中.只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法. 学习 1.不过如果A类调用B类的静态方法,直接通过B类的名称就可以了,不用调用对象,如果是调用的非静态方法,就一定得先创建一个对象 2.静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中. 只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法. 1.语法上区别public string d() //非静态public static string d()//静态2.引用上的区别非静态,必须先实例化,Class1 c1=new Class1; 才能通过c1.d()调用到方法而静态,则不用。直接Class1.d()就可以3.其它区别好象没有了。用哪一个,这个关系似乎不大。看个人的习惯了。 1.不过如果A类调用B类的静态方法,直接通过B类的名称就可以了,不用调用对象,如果是调用的非静态方法,就一定得先创建一个对象 2.静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中. 只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法. 1.语法上区别 public string d() //非静态 public static string d()//静态 2.引用上的区别 非静态,必须先实例化,Class1 c1=new Class1; 才能通过c1.d()调用到方法 而静态,则不用。直接Class1.d()就可以 二者的区别就是:静态方法是相对于类的,而非静态方法是相对于实例的说个简单的例子吧public class Test{public static void a(){}public void b(){}}那么在其他类中如果要使用静态a方法不用实例化就可以直接调用a方法 Test.a();如果要调用b方法,必须要实例化 Test test=new Test(); test.b();从以上也可以看出 静态方法中不能引用非静态成员变量不管是静态方法还是非静态方法对于类来说是只有一份的,也就是说只初始化一次的 静态变量是存放在data segment 中的,而不在heap中。所有的同一个类的对象都共有这个变量。而非静态变量不是的,每个对象都有对应于自己的变量,都存储在heap中。 嗯 刚接触JAVA 现在明白静态是什么个回事了 哪里有关于文本文件txt处理的开源包,不是日志包 郁闷。没办法只能请教了 怎么把String s="abc"倒过来变成s="cba"? 请帮帮忙,在Java2D中,如何压缩字体 刚才有个帖子,自己删除了,还是说一下,关于文字分段的 包访问权限问题 我想用JAVA做一个EMAIL系统,请高手帮帮我。答得好的有分。 请问一个入门级别的问题,大家帮忙看看: 很简单的问题,63分给你~ 他妈的,我为什么会在这种初级问题上想不通?怎样才能将Object对象转化为实际的类型?高分有奖! Swing中JToolBar的tooltip问题 log4j 日志过滤
楼主【haoweishow01】截止到2008-07-08 20:44:07的历史汇总数据(不包括此帖):
发帖的总数量:8 发帖的总分数:280 每贴平均分数:35
回帖的总数量:13 得分贴总数量:1 回帖的得分率:7%
结贴的总数量:8 结贴的总分数:280
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中.
只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法.
学习 1.不过如果A类调用B类的静态方法,直接通过B类的名称就可以了,不用调用对象,如果是调用的非静态方法,就一定得先创建一个对象
2.静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中.
只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法.
public string d() //非静态
public static string d()//静态2.引用上的区别
非静态,必须先实例化,Class1 c1=new Class1; 才能通过c1.d()调用到方法
而静态,则不用。直接Class1.d()就可以3.其它区别
好象没有了。用哪一个,这个关系似乎不大。看个人的习惯了。
2.静态方法是独立于对象外的,但是它的局部变量还是在方法区中,不可能是在静态区中.
只是在加载方法是,静态方法会优先加载.像main方法就是必须先加载的.一个应用的开始必须先要执行main方法.
public string d() //非静态
public static string d()//静态 2.引用上的区别
非静态,必须先实例化,Class1 c1=new Class1; 才能通过c1.d()调用到方法
而静态,则不用。直接Class1.d()就可以
说个简单的例子吧
public class Test{public static void a(){}public void b(){}}那么在其他类中如果要使用静态a方法不用实例化就可以直接调用a方法 Test.a();
如果要调用b方法,必须要实例化 Test test=new Test(); test.b();从以上也可以看出 静态方法中不能引用非静态成员变量不管是静态方法还是非静态方法对于类来说是只有一份的,也就是说只初始化一次的
而非静态变量不是的,每个对象都有对应于自己的变量,都存储在heap中。