java类中的static成员变量和static⽅法简单介绍,持续补充⼀.静态成员变量
1.属于整个类⽽不是某个对象实例,所以可以直接通过类名和对象名去调⽤。
2.静态成员属于整个类,当系统第⼀次使⽤该类时,就会为其分配内存空间直到该类被卸载才会进⾏资源回收
⼆.静态⽅法
1.静态⽅法中可以直接调⽤同类中的静态成员,但不能直接调⽤⾮静态成员;如果希望在静态⽅法中调⽤⾮静态变量,可以通过创建类的对象,然后通过对象来访问⾮静态变量
2. 在普通成员⽅法中,则可以直接访问同类的⾮静态变量和静态变量
3. 静态⽅法中不能直接调⽤⾮静态⽅法,需要通过对象来访问⾮静态⽅法
注:静态⽅法是属于类的,内存必须为它分配内存空间,这个空间⼀直由静态⽅法占⽤,内存管理器不会由于静态⽅法没有被调⽤⽽将静态⽅法的存储空间收回,这样如果将所有的⽅法都声明为静态⽅法,就会占⽤⼤量的内存空间,最后是系统变慢。⽽普通的成员⽅法是由对象调⽤的,内存并不会⼀直为起分配内存,只有调⽤的时候才为其分配存储空间,⽽当其没有被调⽤时,存储空间就会被内存管理其收回,释放没有⽤的空间,提⾼的系统的运⾏速率
三.初始化块和静态初始化块
1.为什么要有初始化?
答:初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的⼀些所有对象共有的属性、⽅法等内容时就可以⽤初始化块初始化了
好处是可以提⾼初始化块的复⽤,提⾼整个应⽤的可维护性
2.有初始化块和静态初始化块的区别?
答:(1)程序运⾏时静态初始化块最先被执⾏,然后执⾏普通初始化块,最后才执⾏构造⽅法。
static修饰的变量 (2)静态初始化块只在类加载时执⾏⼀次,且只能初始化静态成员变量,不能初始化普通变量
注:java中没有静态构造函数,通过静态代码块完成类似作⽤
1 public class HelloWorld {
2
3 String name; // 声明变量name
4 String sex; // 声明变量sex
5static int age;// 声明静态变量age
6
7// 构造⽅法,⼿动声明构造⽅法之后,不论声明的是有参还是⽆参的构造⽅法,系统都不会再⾃动⽣成⽆参的构造⽅法
8public HelloWorld () {
9 System.out.println("通过构造⽅法初始化name");
10 name = "tom";
11 }
12
13// 初始化块
14 {
15 System.out.println("通过初始化块初始化sex");
16 sex = "男";
17 }
18
19// 静态初始化块,只在类加载的时候初始化⼀次,且只能初始化静态成员变量,不能初始化普通变量
20static {
21 System.out.println("通过静态初始化块初始化age");
22 age = 20;
23 }
24
25public void show() {
26 System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
27 }
28
29public static void main(String[] args) {
30
31// 创建对象
32 HelloWorld hello = new HelloWorld();
33// 调⽤对象的show⽅法
34 hello.show();
35 HelloWorld hello1 = new HelloWorld();
36 }
37 }
这是输出结果:
通过静态初始化块初始化age
通过初始化块初始化sex
通过构造⽅法初始化name
姓名:tom,性别:男,年龄:20通过初始化块初始化sex
通过构造⽅法初始化name
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论