标签:分配 print 允许 sys 加载 get new 特点 概述
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 }
标签:分配 print 允许 sys 加载 get new 特点 概述
原文地址:https://www.cnblogs.com/ZengBlogs/p/12168792.html