Java基础(静态static)

为什么有静态static?

由于在一些场合中一个类的多个实例要共享一个成员变量;有时候要定义 “常量”,但是java中没有提供常量;

有时候想定义一些不和具体对象相关联的方法,不需要每次都去new对象再去使用方法的时候,可以使用静态方法来定义。

案列1.通过类名.方法名去使用类中方法,不需要new一个新的对象。

  • 主程序

 

public class main {
//如果没有static静态方法 则必须要new这个对象才行

public static void main(String []args)
{
	int []a=new int[5];//
	a[0]=1;
	a[1]=2;
	a[2]=3;
	int b;
   b=calc.sum(a);
   System.out.println("总和为"+b);
}
}

 

  • 静态方法
public class calc {

public static int sum(int []a)
{
    int s=0;
    System.out.println("数组长度为"+a.length);
    //注意数组是从0开始,也就是只需要遍历到4就可以了
	for(int i=0;i<a.length-1;i++)
	{
		s=s+i;
		System.out.println(s);
	}
    return s;
}


}

       通过上述的方法可以直观的感受到static带来的便利。

            接下来我将static删除

        

       

 程序报错,所以必须使用静态类来标注这个方法才行

2.static变量是和共享的同一个内存空间,而非static的方法则是根据对象来隔离

3.static方法无法使用this这个关键字,这个是因为static就是一个类,不属于任何对象,所以this就不能表示任何对象了。

4.最后就是静态类的成员无法访问到非静态的成员,然而非静态类的成员可以访问静态类的成员

案列

 这里有一个封装好的person,里面提供了非静态的方法getage,无法通过静态类cacl来进行调用访问。

 5.静态类的代码块儿那些事儿

 静态类的代码块在类的初始化的时候就被执行,但是只执行一次

 静态代码块儿的执行顺序

         父类–静态代码块

         子类–静态代码块

         父类–非静态代码块

         父类–构造函数

         子类–非静态代码块

         子类–构造函数

原文地址:https://www.cnblogs.com/a986771570/p/8037213.html