什么是java静态
java静态包含静态变量、静态要领、静态初始化块,以下是静态的详解。(引荐教程:java教程)
1. 什么是静态变量
人人都晓得,我们能够基于一个类建立多个该类的对象,每一个对象都具有本身的成员,相互自力。
然而在某些时刻,我们更愿望该类一切的对象同享同一个成员。此时就是 static 大显神通的时刻了!
Java 中被 static 润饰的成员称为静态成员或类成员。它属于全部类一切,而不是某个对象一切,即被类的一切对象所同享。
静态成员能够运用类名直接接见,也能够运用对象名举行接见。固然,鉴于他作用的特殊性更引荐用类名接见
运用 static 能够润饰变量、要领和代码块。
public class Test1 { // static润饰的变量为静态变量,一切类的对象同享hobby static String hobby = "Tedu"; public static void main(String[] args) { // 静态变量能够直接运用类名来接见,无需建立对象 System.out.println("经由过程类名接见hobby:" + Test1.hobby); // 建立类的对象 Test1 t1 = new Test1(); // 运用对象名接见静态变量 System.out.println("运用对象名访hobby:" + t1.hobby); // 运用对象名的情势修正静态变量的值 t1.hobby = "cjj"; // 再次运用类名接见静态白变量,值已被修正 System.out.println("经由过程类名接见hobby:" + Test1.hobby); } }
运转效果:
经由过程类名接见hobby:Tedu 运用对象名访hobby:Tedu 经由过程类名接见hobby:cjj
注重:
静态成员属于全部类,当体系第一次运用该类时,就会为其分派内存空间直到该类被卸载才会举行资本接纳!
2. static 运用之静态要领
与静态变量一样,我们也能够运用 static 润饰要领,称为静态要领或类要领。
实在之前我们一直写的 main 要领就是静态要领
public class Test01 { //运用static关键字声明静态要领 public static void print() { System.out.println("迎接你:Cjj!"); } public static void main(String[] args) { //直接运用类名挪用静态要领 Test01.print(); //也能够经由过程对象名挪用,固然更引荐运用类名挪用 Test01 t1 = new Test01(); t1.print(); } }
复制代码
迎接你:Cjj! 迎接你:Cjj!
注重:
1、 静态要领中能够直接挪用同类中的静态成员,但不能直接挪用非静态成员。如:
假如愿望在静态要领中挪用非静态变量,能够经由过程建立类的对象,然后经由过程对象来接见非静态变量。如:
2、 在一般成员要领中,则能够直接接见同类的非静态变量和静态变量,如:
3、 静态要领中不能直接挪用非静态要领,须要经由过程对象来接见非静态要领。如:
public class Test01 { String name = "Cjj"; //静态成员变量 static String hobby = "study"; //非静态成员变量 //一般成员要领 public void print1() { System.out.println("一般成员要领~~~"); } //静态成员要领 public static void print2() { System.out.println("静态成员要领~~~"); } public static void main(String[] args) { //一般成员要领必需经由过程对象来挪用 Test01 t1 = new Test01(); t1.print1(); //能够直接挪用静态要领 print2(); } }
3. static 运用之静态初始化块
Java 中能够经由过程初始化块举行数据赋值。如:
public class Test02 { String name; // 定义一个成员变量 //经由过程初始化块为成员变量赋值 { name = "cjj"; } }
顺次实行这些代码块。假如运用 static 润饰初始化块,就称为静态初始化块。
注重:
静态初始化块只在类加载时实行,且只会实行一次,同时静态初始化块只能给静态变量赋值,不能初始化一般的成员变量。
我们来看一段代码:
public class Test02 { int num1; int num2; static int num3; public Test02() {// 组织要领 num1 = 11; System.out.println("经由过程组织要领为变量num1赋值"); } { // 初始化块 num2 = 22; System.out.println("经由过程初始化块为变量num2赋值"); } static {// 静态初始化块 num3 = 33; System.out.println("经由过程静态初始化块为静态变量num3赋值"); } public static void main(String[] args) { Test02 t1 = new Test02(); //建立对象 System.out.println("num1:" + t1.num1); System.out.println("num2:" + t1.num2); System.out.println("num3:" + num3); } }
运转效果:
经由过程静态初始化块为静态变量num3赋值 经由过程初始化块为变量num2赋值 经由过程组织要领为变量num1赋值 num1:11 num2:22 num3:33
经由过程输出效果,我们能够看到,顺序运转时静态初始化块最早被实行,然后实行一般初始化块,末了才实行组织要领。因为静态初始化块只在类加载时实行一次,所以当再次建立对象 hello2 时并未实行静态初始化块。
类是在第一次运用的时刻才加载,加载以后就不会移除。
以上就是什么是java静态的细致内容,更多请关注ki4网别的相干文章!