——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——–
第一话:什么时候使用静态 static
static 静态修饰符,是类的属性与对象的创建没有关系。可以用[类名.类成员]来访问而不需要创建对象。
静态修饰的内容有成员变量和函数。所以这边分2方面讲述。
什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰。
举个例子:某厂生产笔,要看生产了多少只笔,这时可以将笔的只数用static修饰。相应的在笔的构造器中让笔的只数自动递增1就能快速实现编号,而
不用再对笔的只数进行额外的赋值。代码如下:
class Pen
{
public static int number = 0;
private String color;
public Pen()
{
number++;
}
public static void showNumber()//显示number
{
System.out.println("当前生产了"+number+"只笔");
}
public static void main(String[] args)
{
new Pen();
new Pen().showNumber();
}
}
这个例子中 number就属于共享的数据。而对象中的特有数据(color)要定义成非静态存在于堆内存中。
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据)那么该功能可以定义成静态的。如上个代码中对number的显示。
举个反面例子,对color进行显示而将设置color的方法用static来修饰
public String color;
public static void showColor()
{
System.out.println(color);
}
此时编译器会报错。因为static修饰的方法只能操作static成员,这也说明了静态是类的成员。
第二话:静态的应用
每一个应用程序中都有共性的功能,可以将这些功能抽取出来独立封装,以便复用。举个例子:
编写一个工具类可以对数组进行操作。此时可以将该工具类独立封装起来,该类的所有方法都用static来修饰。这样就能通过类名来实现对工具的使用,减少了创建对象时的开支。代码如下:
class ArrayTool{
public static void getMax(int[] arr)
{
求最大值;
}
public static void getMin(int[] arr)
{
求最小值;
}
public static void bubbls(int[] arr)
{
冒泡排序;
}
}
public class ArrayOperation
{
public static void main(String[] args)
{
int[] a = {1,2,34,6}
ArrayTool.getMax(a);//类名直接使用工具
}
}