Blogger Information
Blog 75
fans 0
comment 0
visits 55141
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
小猿圈java之static关键字
聆听的博客
Original
506 people have browsed it

static静态方法学java的都很熟悉,那static有什么作用、又是怎么用的呢?使用过程中应该注意什么呢?小猿圈加加详解一下static,对static模糊的朋友看到这篇文章,清晰透彻,下面进入整题。

1、static方法
 
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。(static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的)

 

Static修饰方法:方法可以直接被类名点出
基本作用:方便在没有创建对象的情况下来进行调用(方法/变量)。

2、static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static成员变量的初始化顺序按照定义的顺序进行初始化。
static修饰变量:变量可以直接被类名点出,是一个静态变量 在内存中的方法区中 如果常量池中有该变量 那么有且只有一个
注意:被static所修饰 可以直接通过类名点出 数据存放在方法区 数据是整个项目公用的

3、static代码块:{}
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

{}定义在方法中:普通代码块
{}定义在类中:构造块
{}定义在类中并且被static所修饰:静态代码块
    执行顺序:静态代码块——构造块——普通代码块

在我们程序启动的时候 被static所修饰的会先被创建 而没有被static所修饰会后加载 被static所修饰 会优于类的创建
 static所修饰的变量和方法 只能 被static修饰的方法所调用  不能调用非static修饰的方法
非static的方法 可以代用 static修饰的方法

面试真题练习:
下面是一道面试当中,出现频率很高的一道关于static的面试题:
这段代码的输出结果是什么?

实例

class Base{
    static{
        System.out.println("base static");
        }

    public Base(){
        System.out.println("base constructor");

        }


    }
public class Test extends Base{
    static{
         System.out.println("hello static");
        }
    public Test(){
         System.out.println("hello constructor");

        }
    public static void main(String[] args){
        new Test();

        }


    }

运行实例 »

result:
base static
test static
base constructor
test constructor

解析:代码块执行顺序:静态代码块——构造块——普通代码块,所以在我们程序启动的时候 被static所修饰的会先被加载, 而没有被static所修饰会后加载,Test类继承自Base类,因此会转去先加载Base类的static块,再加载Test类中的static块,然后依照顺序加载父类和子类的其他代码块

看完小猿圈写的这篇文章,是不是感觉赚到了,static写的一目了然,最后面试题也是相当重要的,是static知识点出的,做错的朋友可以看看解析,希望大家可以通过小编这篇文章,对static好好理解了,想了解其他知识点的朋友,可以看看小猿圈加加的前几篇文章哦。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post