您的位置:首页 > 编程语言 > Java开发

java中静态成员函数&单例设计模式

2014-03-15 15:29 393 查看
这是静态的基本识:

今天学的是所谓的关键字 static

上午:

对static做了明确的解释以及用法:

一:这个静态的特点是:

1。用static修饰的成员,随着类的加载而加载,

2.用于共享数据,可以被所有对象所共享。

3.储存在方法区,生命周期长,并且优先于对象存在。

4.比对象多了一种调用方式,可以直接类名调用(类名.成员)

二:

1.静态方法不可以定义this super关键字,this指向一个对象,而在静态修饰的方法中先进内存的数据

不可以访问后进内存的数据

2.静态方法只能访问静态变量,非静态方法既能访问静态变量又能访问非静态变量

3.主函数是静态的......

三:静态的好处与弊端......

好处:比对象多了一种调用方式

弊端:只能被静态访问,访问权限降低了

静态修饰的是对象共有的数据

非静态修饰的是对象特有的数据

静态变量与非静态变量的区别:

静态变量也称类变量是放在方法区的随对象的加载而加载,非静态变量也是成员变量,放在堆内存中是

随这对象的创建而产生的,随这对象的消失而消失,他们的生命周期不同。

******************************************************************************************

静态的使用场景是:

1.成员变量,当该成员变量所存储的数据每一个对象都是一样的,这是没有必要把该数据存储到每一个

数据中,只要共享该数据即可,这时该对象就被定义为静态

2.成员函数,当成员函数并没有访问对象中特有的数据时,就将方法定义为静态的。若函数访问了成员

变量,则成员函数是非静态的

******************************************************************************************

******************************************************************************************

******************************************************************************************

帮助文档的制作:

开始时候:首先是 /** */ 里面写 @author作者 @version版本号

制作该类的帮助文档,以便于使用该类中的功能。

:/> javadoc -d toolhelp -author -version ArrayTool.java

*/

/**

这个类使用操作数组的工具类,里面提供了很多的静态的功能,如:排序,获取最大值等。

@author 张三

@version V1.0

*/

public class ArrayTool

{

private ArrayTool(){}//不让其他程序创建该类对象

/**

对int类型的数组进行排序。从小到大。

@param arr 接收一个int类型的数组。

*/

public static void sort(int[] arr)

{

for(int x=0; x<arr.length-1; x++)

{

for(int y=x+1; y<arr.length; y++)

{

if(arr[x]>arr[y])

{

swap(arr,x,y);

}

}

}

}

/**

将int数组转换成字符串。

@param arr 接收一个int类型的数组。

@return 返回该数组的对应的字符串,格式:[元素1, 元素2, ...]

*/

public static String arrToString(int[] arr)

{

String str = "[";

for(int x=0; x<arr.length; x++)

{

if(x!=arr.length-1)

str = str + arr[x]+", ";

else

str = str + arr[x] + "]";

}

return str;

}

/*

给数组进行换位操作。

*/

private static void swap(int[] arr,int x,int y)

{

int temp = arr[x];

arr[x] = arr[y];

arr[y] = temp;

}

/**

获取数组中的最大值。

@param arr 接收一个int类型的数组。

@return 该数组中的最大值。

*/

public static int getMax(int[] arr)

{

int max = 0;

for(int x=1; x<arr.length; x++)

{

if(arr[x]>arr[max])

max = x;

}

return arr[max];

}

}

:/> javadoc -d toolhelp -author -version ArrayTool.java

*/

******************************************************************************************

******************************************************************************************

******************************************************************************************

静态代码块:格式为:static{code......;}

当类在加载金内存时,如果需要进行一些内容的执行的时候,完成一个类的初始化,就需要使用静态代

码块来完成给类初始化

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

静态代码块,构造代码块,构造函数

******************************************************************************************

******************************************************************************************

设计模式:重点掌握:

设计模式:就是解决问题最行之有效的解决方案,设计模式是一种思想。

Java中总结出23种设计模式。

单例设计模式:

解决的问题是:保证一个类在内存中只存在一个对象

简单说,就是保证类的唯一性

应用场景:比如A,B都要使用配置文件对象,希望A对配置数据修改后,B可以之间使用,那么就需要A程

序跟B程序使用的是同一个对象。

如何保证一个类在内存中的唯一性呢?

1.为了控制该类的对象建立,不让其他程序建立该类对象。

2.在本类中自定义一个本类对象

3.对外提供获取该对象的方式即可。

代码如何实现呢? (***********)

1.可以将构造函数私有化,这样对方程序创建就无法初始化,已达到不允许,其他程序创建对象的目的

2.在本类中,通过new创建一个本类对象

3.提供一个公共的方法返回该对象,方便与其他城西获取对象。

另外的一种表现形式:(饿汉式)(*******)

对象的延迟加载方式: (弊端:当并发访问getinstance方法时,容易出现安全隐患(线程安全隐患)

)(懒汉式)(*******)

******************************************************************************************

饿汉 class single

{ private static single a =new single();

private single(){}

public static single getintance(){return s;}

}

******************************************************************************************

懒汉 class single

{

private static single s =null ; //类一进内存成员值 为null,当用这个对象的时候再创

建这个类,为延迟加载,

private single(){};

public static single getintance()

{

if(s==null)

s=new single();

return s;

}

******************************************************************************************

******************************************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐