Java基础笔记29——static关键字
Posted `青红造了个白`
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础笔记29——static关键字相关的知识,希望对你有一定的参考价值。
static关键字:修饰成员,不可以修饰局部变量
1.修饰属性(静态变量、类变量):对象共享,类被加载时,即被保存在内存当中,当类存在时,类变量一直存在
两种方式访问:
1.直接访问(推荐使用):类名.属性;
2.实例化后访问:对象名.属性;
2.修饰方法(静态方法)
两种方式访问:
1.直接访问(推荐使用):类名.方法名();
2.实例化后访问:对象名.方法名();
注意:
(1)静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员
(2)静态方法中不能使用this和super关键字
(3)静态方法不能被非静态方法覆盖
(4)静态方法不能修饰构造器
3.修饰代码块(静态代码块):静态块经常用来进行类属性的初始化,在类加载时执行,且仅执行一次
类加载-> 静态代码块(只执行一次) -> new对象 -> 自由代码块 -> 构造函数
例子:
package com.lqh.chapter02; public class _27static { //用static修饰属性 static String author = "lqh"; String identity = "Student"; //静态代码块 static { System.out.println("静态初始化,类的初始化操作------"); } //自由代码块 { System.out.println("对象初始化,对象的初始化操作------"); } //构造函数 public _27static() { System.out.println("构造函数"); } //用static修饰方法 public static String getAuthor() { System.out.println(_27static.author);//静态成员,类级别,类一被加载,即保存在内存中 System.out.println(new _27static().identity);//非静态成员,对象级别,对象被new之后,才保存在内存中 //System.out.println(identity);//报错,static修饰的方法不能直接访问类中的非静态成员 /* 报错,因为static修饰的方法在类加载时就保存到内存,但this和super关键字需要new了对象之后才能保存到内存 System.out.println(this.identity); System.out.println(super.toString()); */ return author; } public static void main(String[] args) { //1.直接访问static修饰的属性 System.out.println(_27static.author); //2.实例化后访问static修饰的属性 _27static test = new _27static(); System.out.println(test.author); System.out.println("--------------"); //1.直接访问static修饰的方法 System.out.println(_27static.getAuthor()); //2.实例化后访问static修饰的方法 System.out.println(test.getAuthor()); } } class Test extends _27static{ //静态方法不能被非静态方法覆盖 /* * public String getAuthor() { * * } */ }
输出结果为:
静态初始化,类的初始化操作------
lqh
对象初始化,对象的初始化操作------
构造函数
lqh
--------------
lqh
对象初始化,对象的初始化操作------
构造函数
Student
lqh
lqh
对象初始化,对象的初始化操作------
构造函数
Student
lqh
以上是关于Java基础笔记29——static关键字的主要内容,如果未能解决你的问题,请参考以下文章
Java学习笔记3.4.3 static关键字 - 静态代码块
零基础学Java并不难!详解Java中的static关键字(下)