1. static关键字
  2. 代码块
  3. 方法重写

    1. 方法重写的特点:

    2. 注意事项:

static关键字

为什么需要学习static关键字?

针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑使用static关键字

static概述: 多个对象共享同一份数据

static的特点:

  • static修饰变量又称为共享变量,类变量,静态变量
  • 静态成员属于某一类的,而不属于某一个具体的对象

3.访问静态成员的方式:

a.通过对象访问 不建议

b.通过类名访问

c.通过读写方法访问

4.静态static关键字可以修饰变量,还能够修饰方法,同时还可以修饰代码块(后面讲)

5.static修饰的方法称为类方法,方法体内部称为静态环境/静态上下文

a.非静态环境可以访问静态变量

b.静态环境下只能够访问静态变量

c.静态环境下不能够出现this,super

6.静态修饰方法的意义? -- 简化代码

a.静态方法用来访问静态成员

b.编写工具类

1.构造方法私有

2.成员方法添加static关键字修饰

例子:

Arrays 工具类 Math 工具类

7.static还可以修饰类,但是必须是内部类(后面讲解)

8.static的内存图

static是共享的,不变的,放在方法区,静态代码块在类加载的时候就会执行,并且只执行一次

代码块

1.局部代码块: 定义在局部位置,限定局部变量的作用域

2.构造代码块: 定义在成员位置,抽取多个构造代码块的重复代码,从而简化代码,在每次构造方法之前执行,并且可以执行多次

3.静态代码块: 定义在成员位置

a.在类加载的时候执行,只能够执行一次

b.目前理解为在类第一次出现的时候加载或者类的成员被访问的时候加载

静态代码块作用:

a.初始化静态成员

b.资源文件的读写,以及配置文件的读写,以及连接资源的载入等等

例子:

数据库连接

读取配置文件

4.同步代码块: 定义在局部位置 (在讲解多线程的时候讲解)

面试题: 静态变量和非静态变量的区别?

构造方法、构造代码块、静态代码块的执行顺序?

静态代码块 > 构造代码块 > 构造方法

静态代码块在类加载的时候执行只执行一次

构造代码块在每次访问构造方法之前执行,可以执行多次

构造方法每次创建对象的时候执行,可以执行多次

public class StaticDemo02 {
public static void main(String[] args) { CodeBlock2.z = 100; CodeBlock2 cb = new CodeBlock2();
CodeBlock2 cb2 = new CodeBlock2(1, 2);
} } class CodeBlock2 { int x;
int y;
static int z; {
// System.out.println("CodeBlock 构造代码块");
print();
} public CodeBlock2() {
// print();
System.out.println("我是无参构造方法");
} static {
System.out.println("我是静态代码块");
z = 100;
} public CodeBlock2(int x, int y) {
// print();
this.x = x;
this.y = y;
System.out.println("我是带参构造方法");
} public void print() {
System.out.format("(%d,%d)%n", x, y);
} public void method() { int num = 10; // 局部代码块
{
int a = 20;
System.out.println(num);
System.out.println(a);
} int a = 30; // 同步代码块
synchronized(new Object()){
}
}
} 我是静态代码块
(0,0)
我是无参构造方法
(0,0)
我是带参构造方法

java static关键字和代码块的更多相关文章

  1. 03_java基础(八)之static关键字与代码块

    20\21.static关键字 /** * static关键字 * 1.用static修饰后的方法,称为静态方法. * 2.静态的方法特点,可以使用 类名.方法名称 调用方法 * 3.静态方法只能调用 ...

  2. 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式

    0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...

  3. static关键字和代码块

    static关键字 static修饰的变量称为静态变量/共享变量/类变量 用于修饰类的成员,如成员变量.成员方法以及代码块等,内static修饰的成员具备一些特殊性 1.静态变量 在java类中使用s ...

  4. java的4种代码块

    一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args ...

  5. 【转】Java的四种代码块

    原贴地址:http://www.cnblogs.com/end/archive/2012/12/21/2827554.html 一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下 ...

  6. Java 基础 面向对象之关键字内部类代码块修饰符

    final final概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后 ...

  7. java中的静态代码块、构造代码块、构造方法

    运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...

  8. Java面试题 静态代码块 构造代码块 构造方法 的执行顺序

    JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...

  9. Java基础6:代码块与代码加载顺序

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

随机推荐

  1. Zepto.js_开始

    https://zeptojs.com 轻量级的 JavaScript 库,移动端优先框架 针对移动端,处理了一系列如 click 点击延迟 毫秒 响应执行快 目前 API 完善的框架中体积最小的一个 ...

  2. 安装Nginx到linux服务器(Ubuntu)详解

    先去下载一个nginx放到服务器. 然后解压(可参考前面安装tomcat)编译(./configure --prefix=/usr/local/nginx/server/ && mak ...

  3. Machine Learning, Homework 9, Neural Nets

    Machine Learning, Homework 9, Neural NetsApril 15, 2019ContentsBoston Housing with a Single Layer an ...

  4. 2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析 实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...

  5. kafka手动开启监听

    项目集成spring-kafka,在项目启动后需要做些初始化资源的任务,kafka消费会依赖这些所以需要配置kafka手动启动. 类似这样,设置autoStartup为false 然后代码里面调用这个 ...

  6. 多线程之Lock的基本介绍

    基本介绍 java.util.concurrent.locks是java1.5之后出现的一种锁实现方式,是一个接口.但是在这之前已经有一个同步机制的实现就是synchronized关键字,那为什么还要 ...

  7. 创建一个vue项目()

    1.打开cmd,选定路径 2. vue init webpack "项目名称“ 3.在项目路径下,安装一下项目依赖 cnpm install 4.运行   cnpm run dev 5.在浏 ...

  8. numpy(四)

    逻辑符 : ==  !=  <  > <=  >= x=np.array([1,3,5]) x<3 array([True,False,,False]) (2*x) == ...

  9. eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)

    来自于:https://www.jb51.net/softjc/628026.html 一. 安装 有两种安装方法 1. 下载安装(推荐) 地址: http://sourceforge.net/pro ...

  10. ui component 是一个前端 mvc 开发框架