静态的用例
1.除了对象调用方式外,还有一个类名调用方式。
2.虽然工具类可以使用,但是每一个功能都没有对该类的对象的特有数据进行访问,那么这些功能,就不需要对象调用,所以可以将这些功能都定义成static的类型。而且当这个类中的功能都被静态化后,只要使用类名调用即可。
3.当其他程序使用该类时,因为该类中有一个默认的构造函数,所以其他程序还可以建造该类对象。而该类并不需要对象就可以使用类中的成员,所以这个对象建立的就没有任何意义,为了提高程序的严谨性,应该强制不让其他程序建立该类的对象。该怎样禁止其他程序建立该对象?只要将该类的构造函数私有化,这样,你即使建立了该类的对象,也没有办法初始化。
如何制作类的帮助文档?
帮助文档的建立,方便你使用该类中的功能。
javadoc -d toolhelp -author -version ArrayTool.java其中:toolhelp时所建立的文件夹名-author作者名-version版本名@param @return
主函数
1.主函数是静态的,说明主函数只能直接访问静态的成员。
2.public static void main(String[] args)
public:jvm(虚拟机)调用的函数必须权限足够大,所以被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();//39和40只执行一次
41.// System.out.println("d");
42. }
43. static
44. {
45. System.out.println("c");
46. }
47.}
48.
49.//b c e a d