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. SpringMVC的坑

    The request sent by the client was syntactically incorrect. 这个错误的原因是 因为 提交的表单数据和目标方法的入参不一致所导致   然后我就 ...

  2. 写给踏入IT行业的自己

    在IT工程师和培训机构多如牛毛的时代,拜师学艺并不难.但自学编程对于毫无基础的同学来说却可能是个问题,相信有过类似经历的朋友都有一把辛酸泪和一肚不吐不快的体会.让我们从一个故事说起… 故事 某君在一个 ...

  3. Linux系统安装tomcat

    1.首先下载tomcat:http://tomcat.apache.org/download-60.cgi 2.解压缩tar.gz文件: tar -xzvf xxxxxxx/apache-tomcat ...

  4. 微信小程序开发的游戏《拼图游戏》

    微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({ /** * 页面的初始数据 */ data: { }, initGame: ...

  5. fpga xilink 电平

  6. Mac OSX bash function 备份

    # mount the android file image function mountAndroid { hdiutil attach ~/android.dmg.sparsefile.spars ...

  7. sizeof操作符的一些例子

    例一: #include <iostream> using namespace std; class A { public: char c; }; class B { public: in ...

  8. php爬虫入门

    本篇文章介绍PHP抓取网页内容技术,利用PHP cURL扩展获取网页内容,还可以抓取网页头部,设置cookie,处理302跳转. 一.cURL安装 采用源码安装PHP时,需要在configure时添加 ...

  9. Your password does not satisfy the current policy requirements问题解决方法

    运行 mysql>set validate_password_policy=0; 目的是,可以设置弱密码.

  10. Mybatis的bind动态SQL

    bind标签用于在SQL执行的上下文中绑定一个变量,方便在后续中直接使用:下面的例子中将name参数拼接成模糊查询需要的字符串然后和bindName绑定,在后面的使用中可以直接使用bindName变量 ...