zoukankan      html  css  js  c++  java
  • 黑马程序员——JAVA基础之主函数main和静态static,静态代码块

    ------- android培训java培训、期待与您交流! ---------- 

    主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。

    主函数的定义:
    public:代表着该函数访问权限是最大的。
    static:代表主函数随着类的加载就已经存在了。
    void:主函数没有具体的返回值。
    main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
    (String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。

    主函数是固定格式的:jvm识别。

    jvm在调用主函数时,传入的是new String[0];

    静态(关键字):static

    static用法:

    是一个修饰符,用于修饰成员(成员变量,成员函数)。

    当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。

    格式:  类名.静态成员。

    static特点:
    1,随着类的加载而加载。 也就说:静态会随着类的消失而消失。说明它的生命周期最长。

    2,优先于的对象存在。明确一点:静态是先存在,对象是后存在的。

    3,被所有对象所共享
    4,可以直接被类名所调用。

     

    实例变量和类变量的区别:
    1,存放位置。类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。
    2,生命周期: 类变量生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。

     静态使用注意事项:
    1,静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。
    2,静态方法中不可以定义this,super关键字。 因为静态优先于对象存在。所以静态方法中不可以出现this。
    3,主函数是静态的。


     
    静态的利弊:
    利处:对对象的共享数据进行单独空间的存储,节省空间。 没有必要每一个对象中都存储一份,可以直接被类名调用。
    弊端:生命周期过长。访问出现局限性,静态只能访问静态。

    什么时候使用静态static: 
     每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装。以便复用。 虽然可以通过建立对象使用这些工具方法,对数组进行操作但是发现了问题:
    1,对象是用于封装数据的,可是对象并未封装特有数据。
    2,操作数组的每一个方法都没有用到对象中的特有数据。 
     这时就考虑,让程序更严谨,是不需要对象的。可以将类中的方法都定义成static的。直接通过类名调用即可。 
     将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。可以通过将构造函数私有化完成。

    静态代码块


     

    静态代码块格式:
    static
    {
        静态代码块中的执行语句。

     

    静态代码块特点

    随着类的加载而执行,只执行一次,并优先于主函数。
    用于给类进行初始化的。

    /**
    * 静态代码块的演示
    * 显示:b c a e9 d 
    */
    
    class StaticCode
    {
    	int num=9;
    	StaticCode()
    	{
    		System.out.println("b");
    	}
    
    	static
    	{
    		System.out.println("a");
    	}
    	{
    		System.out.println("e"+this.num);//要用this.来访问
    	}
    
    	StaticCode(int x)
    	{
    		System.out.println("d");
    	}
    	public static void show()
    	{
    		System.out.println("show run");
    	}
    }
    
    class StaticCodeDemo 
    {
    	static
    	{
    		System.out.println("b");
    	}
    	public static void main(String[] args) 
    	{
    		new StaticCode(4);
    	}
    	static
    	{
    		System.out.println("c");
    	}
    }
    


     

    ------- android培训java培训、期待与您交流! ---------- 

  • 相关阅读:
    python yield yield from
    python isinstance()与type()的区别
    python isinstance用法
    python 展开嵌套的序列
    python getmtime() 最近修改文件内容的时间
    python getctime() 文件最后一次的改变时间
    python getatime() 查看文件的访问时间
    python模拟随机游走
    getopt例子
    matplotlib 代码风格
  • 原文地址:https://www.cnblogs.com/runwind/p/4212207.html
Copyright © 2011-2022 走看看