A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张亚昆 中级黑马   /  2015-7-18 00:29  /  558 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于静态谁能给我个系统的讲解啊,不明白

3 个回复

倒序浏览

  1. <P> </P>
  2. <P>这个是我个人的总结,我感觉我的导师说的很对,先用再学。</P>
  3. <P>/*
  4. static 关键字
  5. 原因:如果对象具有共同属性,我们希望内存中只有一份,而不用每次都给对象赋值,而且能被一个类中所有的实例对象共享。
  6. 作用:是一个修饰符,用于修饰成员(成员变量,成员函数).一个类中所有对象共享属性。
  7. 格式:当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员。
  8. 静态代码块。
  9. 格式:
  10. static
  11. {
  12. 静态代码块中的执行语句。
  13. }
  14. 注意事项;
  15. 特点:随着类的加载而执行,只执行一次,并优先于主函数。
  16. 用于给类进行初始化的。
  17. static特点:
  18. 1,随着类的加载而加载。
  19. 也就说:静态会随着类的消失而消失。说明它的生命周期最长。
  20. 2,优先于的对象存在
  21. 明确一点:静态是先存在。对象是后存在的。
  22. 3,被所有对象所共享
  23. 4,可以直接被类名所调用。
  24. 实例变量和类变量的区别: //成员变量,实例变量 静态的成员变量,类变量
  25. 1,存放位置。
  26. 类变量随着类的加载而存在于方法区中。
  27. 实例变量随着对象的建立而存在于堆内存中。
  28. 2,生命周期:
  29. 类变量生命周期最长,随着类的消失而消失。
  30. 实例变量生命周期随着对象的消失而消失。
  31. 静态使用注意事项:
  32. 1,静态方法只能访问静态成员。
  33. 非静态方法既可以访问静态也可以访问非静态。
  34. 2,静态方法中不可以定义this,super关键字。
  35. 因为静态优先于对象存在。所以静态方法中不可以出现this。
  36. 3,主函数是静态的。
  37. 静态方法只能访问静态的成员变量和静态的成员方法
  38. 静态方法:
  39. 成员变量:只能访问静态变量
  40. 成员方法:只能访问静态成员方法
  41. 非静态方法:
  42. 成员变量:可以是静态的,也可以是非静态的
  43. 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
  44. 简单记:
  45. 静态只能访问静态。
  46. 静态有利有弊
  47. 利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。
  48. 可以直接被类名调用。
  49. 弊端:生命周期过长。
  50. 访问出现局限性。(静态虽好,只能访问静态。)
  51. static修饰成员变量和成员方法。

  52. 特点:
  53. A:随着类的加载而加载
  54. B:优先于对象存在
  55. C:为什么要使用静态呢?
  56. 如果某个内容是被所有对象所共享,那么,该内容就应该用静态修饰。
  57. 没有被静态修饰的内容,其实是属于对象的特殊描述。

  58. 举例:
  59. 饮水机和水杯的问题?
  60. D:可以直接被类名调用
  61. */
  62. class w2
  63. {
  64. String name;
  65. int age;
  66. static String sex;//所有成员共享属性了。
  67. /*
  68. static //静态代码块
  69. {
  70. System.out.println("静态代码块");
  71. }
  72. */
  73. /*
  74. int num=10;
  75. public static w2(String name ) //错误的 静态方法中不能定义this
  76. {
  77. //this.name=name;
  78. System.out.println(num);//隐含了this ,相当于this.num 这是不可以的。隐含访问的是成员变量
  79. System.out.println(this.num);//明确是搞告诉访问了成员变量。
  80. } //静态只能访问静态
  81. */

  82. public w2(String name )
  83. {
  84. this.name=name;
  85. }
  86. public w2(String name,int age)
  87. {
  88. this.name=name;
  89. this.age=age;
  90. }
  91. public w2(String name,String sex,int age )
  92. {
  93. this.name=name;
  94. this.sex=sex;
  95. this.age=age;

  96. }
  97. public void show( )
  98. {
  99. int num=10;
  100. System.out.println(name+sex+age+num);
  101. }
  102. }
  103. class w1
  104. {
  105. /*
  106. static //静态代码块 //随着类的加载而执行,只执行一次,并优先于主函数。
  107. {
  108. System.out.println("静态代码块");
  109. }
  110. */
  111. public static void main(String[] args)
  112. {
  113. System.out.println("哈哈");
  114. w2 w=new w2("泥马");
  115. w.show();
  116. w2 w1=new w2("狗"+10);
  117. w1.show();
  118. w2 w2=new w2("几把"+"妖"+20);
  119. w2.show();
  120. w2.sex="男银";
  121. w2.show();
  122. w.show();
  123. w1.show();


  124. }
  125. }</P>
复制代码


回复 使用道具 举报

真的很详细,谢谢
回复 使用道具 举报
我也不会进来看看 ,真是学到知识了 ,总结的很全
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马