码迷,mamicode.com
首页 > 编程语言 > 详细

java学习笔记之 static

时间:2016-07-24 00:16:29      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

java中的static

说明:这只是本人的学习java的个人心得与见解,分享出来,也算是自己的笔记。(本人小白,有错误的话望大神指出,不喜勿喷。-.-)

静态变量

– 在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量

– 静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问

– static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错,下面的Demo是违反语法的。

 

1 public class Student{
2        public void study(){
3         static int num=10;//错误的
4 
5         }
6 
7 }    

 

 

 

静态方法

--被static关键字修饰的方法称为静态方法

--同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。

--在一个静态方法中只能访问用static修饰的成员,原因在于没有被

static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。

 

静态程序块

– 用static关键字修饰的程序块称为静态程序块

– 当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次

– 在程序中,通常使用静态代码块来对类的成员变量进行初始化

  • 1、什么是程序块        

类中除了有成员变量、方法和构造方法,还可以使用程序块,所谓程序块就是由一对花括号({})包括的语句块

  • 2、程序块的作用

在Java中,程序块的作用相当于完成一些初始化操作,常常在程序块实现对成员变量的初始化赋值。

普通程序块和静态程序块有以下区别:

 执行的顺序不同,静态程序块在编译即被执行且执行一次,而普通程序块只有在使用new运算符实例化对象被调用且执行一次;

 静态程序块只能访问类成员,而普通程序块既可以访问实例成员,也可以访问类成员。

下面开始详细的讲解与Demo

前提引入:
Java 中可以通过初始化块进行数据赋值

以Demo说明:

public class HelloWorld{
    String name;
    {
    name="love you ";

    }

}

 

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。
>>如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
Demo:

public class StaticBlock{
    int num1;
    int num2;
    static int num3;
    //构造方法
    public StaticBlock(){
        num1=91;
        System.out.println("用构造方法完成num1的赋值");
    }
    //初始化块
    {
        num2=74;
        System.out.println("用初始化块完成num2的赋值");
    
    }
    //静态的初始化块 static
    static{
        num3=85;
        System.out.println("用静态的初始化块完成num3的赋值");
    }
    public static void main(String[] args){
        StaticBlock sta1=new StaticBlock();
        System.out.println("num1:"+sta1.num1);
        System.out.println("num2:"+sta1.num2);
        System.out.println("num3:"+num3);
        StaticBlock sta2=new StaticBlock();

        
    }
}

输出的结果为:

技术分享

为什么会有这养的输出结果呢????

注意到输出的顺序了吗?

通过输出结果,我们可以看到:

程序运行时静态初始化块最先被执行,

然后执行普通初始化块,

最后才执行构造方法。

由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

 

 

 

 

java学习笔记之 static

标签:

原文地址:http://www.cnblogs.com/tudou-loveloli/p/5271683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!