Java之static关键字

Posted zengblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之static关键字相关的知识,希望对你有一定的参考价值。

static关键字概述:

在Java中,定义static关键字用于修饰类的成员,

如成员变量、成员方法以及代码块等,被static修改的成员具备些特殊性。

static关键字使用范围:

在Java类中,可用static修饰属性、方法、代码块、内部类。

被static关键字修饰后的成员特点:

1.随着类的加载而加载。

2.优先于对象存在。

3.修饰的成员,被所有对象所共享。

4.访问权限允许时,可不创建对象,直接被类调用。

静态变量:

1.在Java类中,可以使用static关键字来修饰成员变量,该变最被称作静态变量。

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

3. static 关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。

 1 class Student {
 2     //定义静态变量schoolName
 3     static String schoolName;
 4 }
 5 
 6 public class StaticDemo{
 7     public static void main(String[] args) {
 8         //创建学生对象
 9         Student stu = new Student();
10         Student.schoolName = "MIT"; //为静态变量赋值
11         System.out.println("我的学校是" + Student.schoolName);
12     }
13 }

静态方法:

1.在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中。

2.非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。

3.引用静态方法时,可以用类名.方法名或者对象名.方法名的形式

注意事项:

1.非静态方法既可以访问静态数据成员 又可以访问非静态数据成员,

而静态方法只能访问静态数据成员。

2.非静态方法既可以访问静态方法又可以访问非静态方法,

而静态方法只能访问静态数据方法。

原因分析:

1.静态方法和静态数据成员会随着类的定义而被分配和装载入内存中。

2.非静态方法和非静态数据成员只有在类的对象创建时,

在对象的内存中才有这个方法的代码段。

 1 public class TestStatic {
 2     public static void main(String[]args){
 3         //使用类名加前缀访问静态方法
 4         System.out.println(S.getStatic());
 5         S s=new S();
 6         //使用实例化对象名访问静态方法
 7         System.out.println(s.getStatic());
 8         System.out.println(s.get());
 9     }
10     public static class S
11     {
12         private static int a;
13         private int t=0;
14 
15         //静态初始器:由static和{}组成,只在类装载的时候
16         // (第一次使用类的时候)执行一次,往往用来初始化静态变量。
17         static{
18             a=10;
19         }
20 
21         //静态方法只能访问静态数据成员
22         public static int getStatic() { return a;}
23         public int getT(){return t; }
24 
25         //非静态方法可以访问静态方法和非静态方法
26         public int get(){
27             getT();
28             getStatic();
29             t=a;//非静态方法可以访问非静态数据成员和静态数据成员
30             return t;
31         }
32     }
33 }

静态代码块:

1.在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,

用static关键字修饰的代码块称为静态代码块。

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

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

 1 class staticDemo{
 2     //静志代码块
 3     static {
 4         System.out.println("测试类的静态代码块执行了");
 5     }
 6 
 7     public static void main(String[] args) {
 8         //下面的代码创建了两个Person对象
 9         Person p1 = new Person() ;
10         Person p2 = new Person();
11     }
12 }
13 
14 
15 class Person{
16     static String country;
17     //下面是 一个静态代码块
18     static {
19         country="china";
20         System.out.println("Person类中的静态代码块执行了");
21     }
22 }

以上是关于Java之static关键字的主要内容,如果未能解决你的问题,请参考以下文章

Java基础之static关键字的用法

Java 核心基础之static静态代码块和静态方法

Java基础之static关键字

java第五章:面向对象(oop)之 static关键字

java基础之static关键词的作用

JAVA基础之Static