zoukankan      html  css  js  c++  java
  • 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.静态类的代码块儿那些事儿

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

     静态代码块儿的执行顺序

             父类–静态代码块

             子类–静态代码块

             父类–非静态代码块

             父类–构造函数

             子类–非静态代码块

             子类–构造函数

  • 相关阅读:
    7、注解@Mapper、@MapperScan
    SpringBoot
    正则表达式"(^|&)" ,什么意思?
    JSON.NET的Self referencing loop detected with type的原因以及解决办法
    jquery ajax 中各个事件执行顺序
    Lucene BooleanQuery中的Occur.MUST与Occur.Should
    lucene中Field简析
    IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT的分析
    HTML5学习(1)简介
    HTML学习(17)URL
  • 原文地址:https://www.cnblogs.com/a986771570/p/8037213.html
Copyright © 2011-2022 走看看