美文网首页
《九》、static关键字及代码块

《九》、static关键字及代码块

作者: 神奇作手 | 来源:发表于2019-07-26 11:53 被阅读0次

一、static关键字

   static关键字在Java程序开发过程之中主要进行属性和方法的定义。

1、static 定义属性

   类中的最主要的组成就是属性和方法。

   static可以定义公共属性,所有对象都可以拥有并且修改公共属性的能力。
   static属性可以在没有实例化对象的情况下直接通过类名称访问。
   在以后编写类的过程中首先考虑的全部都是非static属性,只有在描述公共的属性的时候才会考虑到static属性,如果说使用占比:非static属性(98%),static属性(2%)。

2、static 定义方法

   使用static定义方法的最大特征在于可以直接由类名称进行方法调用,不管是static属性还是static方法,都不会受到实例化对象的限制。

   非static(普通方法)、static方法,这两类方法之间的调用有如下限制:

  • 非static方法可以调用static属性与非static属性,也可以调用static方法;
  • static方法不允许调用非static属性方法,只允许调用其它的static属性或方法;
       |- static 所有方法和属性可以在没有实例化对象的形式下进行访问,而所有的非static操作要求必须存在有实例化对象才可以进行访问,所以两者是完全矛盾的;
       在所有类设计的大部分情况下类中的组成基本上都是以非static方法和属性的形式出现的,所以static操作只作为一小部分的情况出现(不作为设计首选),当需要描述公共以及避免实例化对象困扰的时候才会使用static结构。

二、代码块

   代码块是一种进行程序切割的一种手段,在Java里面支持有四类代码块:普通代码块、构造代码块、静态代码块、同步代码块,其中同步代码块的使用最为复杂。

1、普通代码块

   所谓的普通代码块值的是在代码之中利用“{}”括起来的一段程序代码

代码块的本质上就是一组“{}”定义的程序语句。

范例:普通代码块

public class TestDemo {//主类
    public static void main(String[] args){//主方法
        { //普通代码块
            int num = 10; //局部变量
            System.out.println("【1】num="+num);
        }
        { //这样观察会更加的清晰,每个num都属于局部变量
            int num = 100; //局部变量
            System.out.println("【2】num="+num);
        }
    }
}

程序执行结果:

【1】num=10
【2】num=100

   普通代码块的主要功能是之间写在方法之中,并且将一个比较长的方法进行切割处理,这样就可以防止同名变量出现冲突。但是由于限制的方法代码都比较简单,所以对于重名变量可以轻松回避。

2、构造块

   将一个代码块定义在类之中,就成为了一个构造块,并且该构造块将随着每一次类对象的实例化进行调用。
范例:构造块

class Ball{
    {//代码块直接写在了类之中
        System.out.println("【构造块】Ball类...");
    }
}
public class TestDemo{ //主类
    public static void main(String[] args) { //主方法
        new Ball();
        new Ball();
    }
}

程序执行结果:

【构造块】Ball类...
【构造块】Ball类...

如果说构造块与构造方法同时定义在类之中了,那么构造块中的代码会先执行。

范例:构造块与构造方法

class Ball{
    public Ball(){
        System.out.println("【构造方法】public Ball(){...}");
    }
    {//代码块直接写在了类之中
        System.out.println("【构造块】Ball类...");
    }
}
public class TestDemo{ //主类
    public static void main(String[] args) { //主方法
        new Ball();
    }
}

程序执行结果:

【构造块】Ball类...
【构造方法】public Ball(){...}

   构造方法的主要功能是进行属性的赋值处理,如果有一些先期的处理逻辑为了与构造方法的结构分开,就可以利用构造块的形式完成。

3、静态块

   静态块是使用static关键字定义的代码块,静态块需要考虑两种的定义位置:普通类中、主类中。

范例1:普通类中定义静态块

class Ball{
    public Ball(){
        System.out.println("【构造方法】public Ball(){...}");
    }
    {//代码块直接写在了类之中
        System.out.println("【构造块】Ball类...");
    }
    static{//代码块使用了static声明
        System.out.println("【静态块】Ball类...");
    }
}
public class TestDemo{ //主类
    public static void main(String[] args) { //主方法
        new Ball();
        new Ball();
    }
}

程序执行结果:

【静态块】Ball类...
【构造块】Ball类...
【构造方法】public Ball(){...}
【构造块】Ball类...
【构造方法】public Ball(){...}

   通过执行结果可以发现,静态块优先于构造块执行,并且不管有多少个实例化对象,静态块只执行一次,大部分情况下静态块往往会作为一些公共属性初始化操作。

主类中也可以定义静态块,该静态块的执行优先于主方法执行。

范例2:主类中定义静态块

public class TestDemo {//主类
    static {
        System.out.println("【1】");
    }
    public static void main(String[] args){//主方法

        System.out.println("【2】");
    }
}

程序执行结果:

【1】
【2】

相关文章

  • 《九》、static关键字及代码块

    一、static关键字    static关键字在Java程序开发过程之中主要进行属性和方法的定义。 1、stat...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • Java-static、final关键字

    static 注意:static关键字可以用修饰代码块.static代码块可以置于类中的任何一个位置,并可以有多个...

  • 03-面向对象(1)

    static关键字 static:静态的,可以用来修饰属性、方法、代码块(或初始化块)、内部类 2.static修...

  • 第10章 静态,最终和单例模式

    1. 静态static关键字 static关键字被称为静态关键字,可以修饰属性,方法,代码块(还有内部类)。被st...

  • static

    static关键字的使用 static:静态的 static可以用来修饰:属性、方法、代码块、内部类 使用stat...

  • Java篇-static与final关键字的使用

    一 : static关键字 static :静态的,可以用来修饰属性,方法,代码块(初始化块),内部类.被其修饰的...

  • JavaSE基础知识学习-----Static关键字

    Static关键字 static静态的,可以用来修饰变量,修饰方法,代码块,静态内部类和静态导包。static关键...

  • Java Static和final关键字

    一.static关键字 static意为静态的,可以用来修饰属性、方法、代码块、类。 1.修饰属性 被static...

  • static关键字

    static 关键字用的非常广泛,它可以用来修饰变量,方法,内部类和代码块。static 关键字允许在没有创建对象...

网友评论

      本文标题:《九》、static关键字及代码块

      本文链接:https://www.haomeiwen.com/subject/oofrrctx.html