上一节当中描述了static的用法,以及成员变量和静态变量的区别。但是static除了可以修饰成员变量使之成为静态变量外,他还可以同时修饰函数,使之成为静态函数,我们来看一个例子:

 

class StaticDemo
{ String name;
int a ;
static String xiangmu="xiangmu"; /**
*这个方法被static关键词修饰之后,就变成了静态方法,这里我们需要注意的一点就是static声明的方法当中,只能够调用
*静态变量,因为他是在类没有被初始化为对象之前而存在的,所以这个静态方法当中不能使用this或者super之类的关键词
*
*/
StaticDemo(String name,int a)
{
this.name = name;
this.a = a;
} static void saySelf()
{
/**
*这种方法是不能够使用的,为什么?因为这个时候this可能还没有初始化呢,记住静态变量还有静态方法是先于实例化对象
*之前而存在的!!!
*/
//!!!!System.out.print(this.name);//此时我们如果编译的话会提示我们说静态上下文当中不能够引用非静态变量的编译错误
System.out.print(xiangmu);//这里的xiangmu这个变量准确的说是忽略了项目前面的一个StaticDemo,因为这个是类变量由类直接调用 } void saySelfSecond()
{ System.out.print(name+"............."+a); } } class StaticDemoShow
{ public static void main(String[] args) { StaticDemo sd = new StaticDemo("static1",10);
sd.saySelfSecond();
System.out.print(StaticDemo.xiangmu);
StaticDemo.saySelf(); } }

那么我们就参照上面的例子画一个内存图来理解一下:

 这样从上到下,我们的内存图就加载好了,只是有一点不明白,System.out.print这个需要进栈么?

java学习面向对象之static内存图解的更多相关文章

  1. java学习面向对象值static

    讲完了this这个关键字,我们继续前进,这节我们讲另外一个比较重要的东东,java当中的static,在main函数前面这个家伙都在那里一直挺着,你瞅见了么,你就不好奇么,你就不想知道他杵在那里做什么 ...

  2. Java学习笔记之---static

    Java学习笔记之---static static不能修饰类,局部变量 (一)静态成员的特征 static+属性  静态属性 无论实例化出来多少个对象,都会共用同一块静态空间,类对象共享 静态成员从第 ...

  3. java学习面向对象之父子构造函数初始化

    在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同 ...

  4. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  5. java学习面向对象构造函数

    在java当中目前我们学到的一个比较特殊的函数就是main函数,他是JVM执行的入口,所以书写的格式是固定的,现在我们来介绍java中另一个比较特殊的函数: 构造函数:构造对象的时候调用的函数,作用, ...

  6. Java学习---面向对象的远程方法调用[RMI]

    基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分 ...

  7. java学习面向对象之多态

    如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...

  8. java学习面向对象之接口

    上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { ...

  9. java学习面向对象之继承

    在我们编写程序的过程当中,会遇到这种情况: 比如现在有一个狗,他的功能有跑,有跳,有吃,有叫,属性有雌雄,大小,颜色等等,同时现在我们也有一个猫,上述功能她也有.这个时候我们写代码的时候,就得分别把上 ...

随机推荐

  1. Spring 3 MVC: Themes In Spring-Tutorial With Example---reference

    Welcome to Part 6 of Spring 3.0 MVC Series. In previous article we saw how to add Internationalizati ...

  2. iOS NavigaitonController详解(code版)

    参考文章:http://blog.csdn.net/totogo2010/article/details/7681879,参考了这篇文章,写的超级好,自己他的基础上加上了自己的理解. 下面的图显示了导 ...

  3. centos6.5 64位 openvpn安装配置

    1 查看系统版本 2 cat /etc/redhat-release 3 CentOS release 6.5 (Final) 4 5 查看内核和cpu架构 6 uname -rm 7 2.6.32- ...

  4. plsql 显式游标

    显式游标的处理过程包括: 声明游标,打开游标,检索游标,关闭游标. 声明游标 CURSOR c_cursor_name IS statement; 游标相当于一个查询结果集,将查询的结果放在游标里,方 ...

  5. String or binary data would be truncated. The statement has been terminated.

    常见的情况为:插入的值大于字段定义的最大长度. String or binary data would be truncated. The statement has been terminated

  6. jquery 操作 checkbox

    对checkbox的其他几个操作 1. 全选2. 取消全选3. 选中所有奇数4. 反选5. 获得选中的所有值 js代码 $("document").ready(function() ...

  7. awk中split函数的用法

    time='12:34:56' echo $time | awk '{split($0,a,":" ); print a[1]}' 12 echo $time | awk '{sp ...

  8. redhat6.4 配置centos6 yum替换

    1.卸载掉系统redhat自带的yum   rpm -qa |grep yum |xargs rpm -e --nodeps 2 下载相关的centos yum插件   主要有python-inipa ...

  9. Xcode升后插件失效

    Xcode升后插件失效,与添加插件不小心点击Skip Bundle解决办法 字数267 阅读4731 评论1 喜欢12 今天升级了xcode到6.4 发现之前装的插件不能使用了.这里有一个解决的方案: ...

  10. 利用C#的反射机制动态调用DLL类库

    最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢 ...