Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)
Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html
main函数:
java MainDemo:将MainDemo类传入给虚拟机,启动虚拟机执行编译一个类的同时传入参数,java MainDemo hah he 将类后面跟入的数据已空格的格式区分自动存入数组当中。
1 /* 2 public static void main(String[] args) 3 4 主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。虚拟机jvm调用时传入的值为数组实体,调用的地址 5 6 主函数的定义: 7 public:代表着该函数访问权限是最大的。 8 static:代表主函数随着类的加载就已经存在了。 9 void:主函数没有具体的返回值。 10 main:不是关键字,但是是一个特殊的单词,可以被jvm识别。 11 (String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。 12 13 主函数是固定格式的:jvm识别。 14 15 jvm在调用主函数时,传入的是new String[0];
16 */ 17 //
18 class MainDemo
19 {
20 public static void main(String[] args)//new String[]
21 {
22 String[] arr = {"hah","hhe","heihei","xixi","hiahia"};
23 System.out.println(args);//当编译文件时直接java MainDemo打印值为地址值,当输入java MainDemo sssss打印值为地址值
System.out.println(args.length);//未传则为0
24 MainTest.main(arr); 25 } 26 } 27 28 //String[] args = new String[3]; 29 //String[] args = null; 30 31 32 class MainTest 33 { 34 public static void main(String[] args) 35 { 36 for(int x=0; x<args.length; x++) 37 System.out.println(args[x]); 38 //输出的args[x]为arr数组值 39 } 40 }
编译java MainDemo时,传入参数为 null,打印为null,传入参数有值则有值 比如 arr
如果数组大于0,可以打印值。为0打印args[0]则数组越界。
对象的初始化过程:
对象调用成员的过程:
单例模式的设计:
参考:http://www.cnblogs.com/itcqx/p/5546622.html
1 /* 2 设计模式:解决某一类问题最行之有效的方法。 3 java中23种设计模式: 4 单例设计模式:解决一个类在内存只存在一个对象。 5 7 想要保证对象唯一。 8 1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象 9 2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。 10 3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。 11 12 这三部怎么用代码体现呢? 13 1,将构造函数私有化。 14 2,在类中创建一个本类对象。 15 3,提供一个方法可以获取到该对象。 16 17 对于事物该怎么描述,还怎么描述。 18 当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。 19 20 */
饿汉式
1 /* 2 这个是先初始化对象。 3 称为:饿汉式。 4 5 Single类一进内存,就已经创建好了对象。 6 class Single 7 { 8 private static Single s = new Single(); 9 private Single(){} 10 public static Single getInstance() 11 { 12 return s; 13 } 14 } 15 */ 16 17 //对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。 18 //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。 19 class Single 20 { 21 private static Single s = null; 22 private Single(){} 23 public static Single getInstance() 24 { 25 if(s==null) 26 { 27 synchronized(Single.class) 28 { 29 if(s==null) 30 s = new Single(); 31 } 32 } 33 return s; 34 } 35 } 36 37 //记录原则:定义单例,建议使用饿汉式。 38 39 class 40 { 41 public static void main(String[] args) 42 { 43 System.out.println("Hello World!"); 44 } 45 }