面向对象4——静态

原创 2013年12月02日 00:24:04

静态的用例

1.除了对象调用方式外,还有一个类名调用方式。

2.虽然工具类可以使用,但是每一个功能都没有对该类的对象的特有数据进行访问,那么这些功能,就不需要对象调用,所以可以将这些功能都定义成static的类型。而且当这个类中的功能都被静态化后,只要使用类名调用即可。

3.当其他程序使用该类时,因为该类中有一个默认的构造函数,所以其他程序还可以建造该类对象。而该类并不需要对象就可以使用类中的成员,所以这个对象建立的就没有任何意义,为了提高程序的严谨性,应该强制不让其他程序建立该类的对象。该怎样禁止其他程序建立该对象?只要将该类的构造函数私有化,这样,你即使建立了该类的对象,也没有办法初始化。

如何制作类的帮助文档?

帮助文档的建立,方便你使用该类中的功能。

javadoc -d toolhelp -author -version ArrayTool.java其中:toolhelp时所建立的文件夹名-author作者名-version版本名@param      @return     

主函数

1.主函数是静态的,说明主函数只能直接访问静态的成员。

2.public static void main(String[] args)

publicjvm(虚拟机)调用的函数必须权限足够大,所以被public修饰。

static:主函数随着类的加载而加载,jvm不需要创建该类的对象即可以完成对函数的调用,所以是静态的。

void:主函数没有返回值(加上也不错)。

main:函数名,是固定的,jvm可以识别。

String[] args:主函数的参数列表,参数类型是一个祖父传输组类型的参数。args:参数名,可以自定义。

class MainDemo 

{

int x = 4;

public static void main(String[] args) 

{

当直接利用Sys来输出args时,会输出如下:

//System.out.println(args);//[Ljava.lang.String;@de6ced

//[Ljava.lang.String;@de6ced:通过这个结果看到,args指向了一个具体的数组实体。

//而且该数组中的元素是String类型的。

System.out.println(args.length);//0,//验证了args的长度是0

//通过两个输出语句,就可以验证,jvm给主函数传递的实际参数是: new String[0];

/*

这是jvm传入的默认值。

但是没什么用,所以我们在使用main时,可以自定义该主函数数组中的元素。

*/

如果在dos命令中输入:javac xxx.java

Java xxx haha hehe heihei xixi hiahia 和下面的输出结果一样

String[] arr = {"haha","hehe","heihei","xixi","hiahia"};

Test.main(arr);

}

public void show()

{

System.out.println("x="+x);

}

}

class Test

{

public static void main(String[] args) 

{

for(int a=0; a<args.length; a++)

{

System.out.println(args[a]);

}

}

}

静态代码块

1.格式:static{ code..;}

2.作用:当类加载进内存时,若需要进行一些内容的执行,完成一个类的初始化。就需要使用静态代码块来完成。给类进行初始化。

3.执行特点:当类别加载时,静态代码块就执行了,而且只执行一次,切优先于main函数执行。

4.class StaticCode

5.{

6. {

7. System.out.pritnln("AAAAA");

8. }

9. static

10. {

11. System.out.println("a");

12. }

13. StaticCode()

14. {

15. System.out.pritnln("cccccc");

16. }

17. static void show()

18. {

19. System.out.println("show run");

20. }

21.}

22.//输出:a,AAAAA,ccccc,a静态代码先执行,AAAAA构造函数在执行,ccccc最后执行函数

23.

24.

25.class StaticCodeDemo

26.{

27. static

28. {

29. System.out.println("b");

30. }

31. public static void main(String[] args) 

32. {

33. //StaticCode.show();

34. //StaticCode sc = null;//这种情况该类不会被装载。

35.

36. new StaticCode();

37.

38.// System.out.println("e");

39.// new  StaticCode();

40.// new  StaticCode();//3940只执行一次

41.// System.out.println("d");

42. }

43. static

44. {

45. System.out.println("c");

46. }

47.}

48.

49.//b c e a d

相关文章推荐

黑马程序员—— 4,二维数组,面向对象,制作帮助文档,静态代码块,构造代码块,构造函数,单例设计模式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------               黑马程序员——  4,二维数组,面向对象 二维数组 格式:int[]...

黑马程序员——3.面向对象(堆栈、匿名、封装、构造函数、this、静态、数组工具类)

Java面向对象(堆栈、匿名、封装、构造函数、this、静态、数组工具类)

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组1.概念 数组就是同一种类型数据的集合,就是一个容器数组...

面向对象的陷阱——非静态内部类的陷阱

3、非静态内部类的陷阱        内部类是Java提供的一个常用语法。内部类能提供更好的封装,而且它可以直接访问外部类的private成员,因此在一个特殊场合下更常用。 3、1 非静态内部类的构造...

Unity3D学习(4)——摄像机&光源&面向对象&简单工厂

本节内容比较琐碎,记载了关于摄像机、光源以及简单工厂模式的一些学习经验。摄像机部分:...

C和C++的面向对象专题(4)——解决封装,避免接口

今天我们来讨论,如何通过设计,解决C++中的不优雅特性,改进项目的结构,改善编译速度。 上次我们提到,如果一个类的封装不好,容易导致种种不便,那么如何设计能够避免这种现象呢?...

疯狂JAVA讲义学习笔记4——面向对象1

定义类[修饰符] class 类名 { 零到多个构造器定义.. 零到多个Field… 零到多个方法… }修饰符 public protected private stati...
  • xundh
  • xundh
  • 2017年01月03日 22:58
  • 233

深入PHP面向对象、模式与实践——高级特性(4)

Final类和方法 final关键字可以终止类的继承。final类不能有子类,final方法不能被覆写。 下面定义一个final类: final class Checkout { } cla...

java学习(4)——面向对象(上)

第4章  面向对象(上) 4.1   类和对象 4.1.1 定义类 class and object 定义一个类: [修饰符] class 类名 { 构造器; 成员变量; 方...

黑马程序员_JAVA笔记08——面向对象4(多态)

------- android培训、java培训、期待与您交流! ---------- 1、多态:可以理解为事物存在的多种体现形态。       人:男人、女人       ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象4——静态
举报原因:
原因补充:

(最多只允许输入30个字)