Java 核心基础之static静态代码块和静态方法
static静态代码块和静态方法
static关键字
- static修饰的方法或变量,优先于对象执行,所以内存会先有static修饰的内容,后有对象的内容
- 可以用来修饰类的成员方法、类的成员变量,还可以编写static静态代码块
- 修饰变量就是类变量,修饰方法就是类方法
- 总结:类变量或者类方法,可以直接通过类名.方法名或者变量名进行调用,不用经过对象
public static class Student{
static int age;
public static String name;
public static void speak() {
System.out.println("唱歌");
}
}
public class Student {
static int age;
public static String name;
public static void speak() {
System.out.println("唱歌");
}
}
static变量也称作静态变量
- 和非静态变量的区别是,静态变量被所有的对象所共享,在内存中只有一份,它当且仅当在类初次加载时会被初始化。非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
- static成员变量的初始化顺序按照定义的顺序进行初始化
static方法也称作静态方法
- 不依赖于任何对象就可以进行访问,类名.方法名
- 不能访问类的非静态成员变量和非静态成员方法
注意事项
- 静态方法不能直接访问非静态变量
- 静态方法当中不能使用this
- 核心:一个类里面static修饰的不能访问非static修饰的成员或方法,而非static修饰的可以访问static修饰的成员或方法
静态代码块
- 加载类的时候,静态代码块会被执行一次,且只能执行一次
- 静态内容优先于非静态内容,所以静态代码比构造方法先执行
- 使用场景:用来一次性对静态成员变量进行赋值,或者类资源初始化等操作
class Person {
static {
System.out.println("我是静态代码块");
}
}
常考面试题
记得博主,在一次面试过程中,面试官出了这道题被吊打了。。。静态代码块、构造代码块、构造函数执行顺序
默认执行顺序为:静态代码块 > 构造代码块 > 构造函数
public class Student {
static {
System.out.println("我是静态代码块");
}
{
System.out.println("我是构造代码块");
}
public Student() {
System.out.println("我是构造函数");
}
}
执行顺序

继承关系时的执行顺序
老师类
class Teacher {
static {
System.out.println("我是【老师】静态代码块");
}
{
System.out.println("我是【老师】构造代码块");
}
public Teacher() {
System.out.println("我是【老师】构造函数");
}
}
学生类继承老师
public class Student extends Teacher{
static {
System.out.println("我是【学生】静态代码块");
}
{
System.out.println("我是【学生】构造代码块");
}
public Student() {
System.out.println("我是【学生】构造函数");
}
}
执行顺序
public class MyMain {
public static void main(String[] args) {
Student student=new Student();
}
}
p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
打印结果:我是【老师】静态代码块 》我是【学生】静态代码块》我是【老师】构造代码块 》我是【老师】构造函数》我是【学生】构造代码块》我是【学生】构造函数

p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
p.p1 { margin: 0; font: 12px Menlo; color: rgba(42, 0, 255, 1) }
Java 核心基础之static静态代码块和静态方法的更多相关文章
- Java之static静态代码块
Java之static静态代码块 构造代码块 使用{}包裹的代码区域,这里的代码区域特指位于class{}下面的而不是存在于其他type method(){}这类函数下面的代码区域 public cl ...
- Java static 静态代码块、代码块
简述 static{} 静态代码块,加载类之前执行 {} 代码块,每次new的时候都会被执行 示例 类: public class Student { int age; String name; bo ...
- static{}静态代码块与{}普通代码块之间的区别
先看一个例子: //class A package com.my.test; class A { static { System.out.println("A1:父类静态代码区域" ...
- Java-静态关键字Static&静态代码块
静态成员变量:(static修饰变量) 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类.多个对象共享同一份数据. 静态方法:(static修饰方法) 一旦使用 ...
- java基础--java静态代码块和静态方法的区别、static用法
转载自: http://blog.sina.com.cn/s/blog_afddb8ff0101aqs9.html 静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时, ...
- java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序
4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print(& ...
- Java static 静态代码块执行分析
假设有这样一个类: public class Utils { static { Log.i("static","isLoad!"); } public stat ...
- Java接口以及匿名内部类,静态代码块
接口 接口中只能定义public并且是final的公共静态常量,不允许定义变量. 抽象类可以定义抽象方法和非抽象方法,接口中只能定义公共的,抽象的实例方法. 接口只能由其他接口实现继承 子接口继承的目 ...
- java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数
一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构
- java中静态变量,静态代码块,静态方法,实例变量,匿名代码块等的加载顺序
转自:http://blog.csdn.net/mrzhoug/article/details/51581994 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普 ...
随机推荐
- d3d12龙书阅读----绘制几何体(下)
d3d12龙书阅读----绘制几何体(下) 本节在上一节的基础上,对整个绘制过程进行优化,将绘制单个几何体的内容拓展到了多个几何体,同时对根签名进行了进一步地探索. 帧资源 在之前绘制每帧的结尾,我们 ...
- 经验分享:春招零Offer,5月份还有机会吗?
先说答案:5 月份依然有拿到 Offer 的机会. 5月份春招结束了吗? 对于应届大学生来说(也就是今年暑假毕业的学生),5 月中旬春招就陆续结束了,但是 5 月份会有很多补录的机会. 对于非应届的大 ...
- Angular快速生成文件基本命令
ng new 作用:创建一个已被初始化的Angular应用 命令选项 参数 说明 --collection -c 指定工程模板 属于高阶操作,暂不知道如何使用 --directory 指定新项目创建的 ...
- pod(三):pod的管理
目录 一.系统环境 二.前言 三.pod的管理 3.1 环境介绍 3.2 管理pod 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.17 ...
- tkinter时钟(实时更新显示)
from tkinter import * import time root = Tk() root.geometry('300x200') var = StringVar() def show(): ...
- CSS——渐变色
<!DOCTYPE html> <html> <head> <style> div { width: 210px; height: 50px; floa ...
- FFmpeg中的关键方法及结构体(二)avformat_open_input
1.avformat_open_input 该方法声明在libavformat/avformat.h:2093 int avformat_open_input(AVFormatContext **ps ...
- 用 vue2 和 webpack 快速建构 NW.js 项目
经过实践和学习,发现本篇文章部分内容已经过时,请看我的关于 Vue 和 NW.js 的 ** 最新文章 ** 和相关实践项目 vue-nw-seed . 使用到的技能点 vue2 webpack NW ...
- 一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
在现代云计算环境中,自动化部署已经成为一项重要的任务.Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源. 阿里 ...
- Python保姆级教程 数据类型—新手小白入门必看系列
推荐使用压缩软件和杀毒软件 7 - zip 使用火绒 一.基本数据类型与变量(上) 2.1 注释 优点: 代码说明 没注释的代码 有注释的代码 不让解释器执行注释的那句话 2.2 单行注释 单行注释快 ...