java static关键字和代码块
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关键字和代码块的更多相关文章
- 03_java基础(八)之static关键字与代码块
20\21.static关键字 /** * static关键字 * 1.用static修饰后的方法,称为静态方法. * 2.静态的方法特点,可以使用 类名.方法名称 调用方法 * 3.静态方法只能调用 ...
- 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式
0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...
- static关键字和代码块
static关键字 static修饰的变量称为静态变量/共享变量/类变量 用于修饰类的成员,如成员变量.成员方法以及代码块等,内static修饰的成员具备一些特殊性 1.静态变量 在java类中使用s ...
- java的4种代码块
一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args ...
- 【转】Java的四种代码块
原贴地址:http://www.cnblogs.com/end/archive/2012/12/21/2827554.html 一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下 ...
- Java 基础 面向对象之关键字内部类代码块修饰符
final final概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后 ...
- java中的静态代码块、构造代码块、构造方法
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...
- Java面试题 静态代码块 构造代码块 构造方法 的执行顺序
JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...
- Java基础6:代码块与代码加载顺序
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
随机推荐
- __x__(34)0908第五天__ 定位 position
position 定位 指将原始摆放到页面的任意位置. 继承性:no 默认值:static 没有定位,原始出现在正常的文档流中 可选值: static : 默认值,元素没有开启定位 ...
- [LeetCode] Minimize Max Distance to Gas Station 最小化去加油站的最大距离
On a horizontal number line, we have gas stations at positions stations[0], stations[1], ..., statio ...
- springboot/Mybatis整合
正题 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper ...
- 配置Spark
参考<深入理解Spark:核心思想与源码分析> Spark使用Scala进行编写,而Scala又是基于JVM运行,所以需要先安装JDK,这个不再赘述. 1.安装Scala 安装获取Scal ...
- [Luogu P2563]质数和分解
题目链接 话不多说,这是一道质数题+完全背包.先预处理筛出质数,直接背包就行. #include<iostream> #include<cstdio> #include< ...
- 获取node异步执行结果的方式
拿数据库操作举例: var connection = mysql.createConnection(); connection.query(sql,function(err,rows){xxx} ); ...
- 面向面试编程代码片段之GC
x 代码 using System; using System.Threading; public static class Program{ public static void Main(){ T ...
- cesium 飞线 瓣体传感器(雷达扫描) 效果
参考:github地址 本人新手,npm webpack 这些还是一知半解,只记录自己得到成功结果的操作步骤,可能存在多余或错误的步骤. 1.github 把代码下载下来,解压. 2.webstorm ...
- Fillder安装,如何解决证书无法导出
Q: 安装配置完Fidder之后,点击导出证书,提示Creation of the root ceritificate was not successful A :需执行dos命名. -cy aut ...
- 转载,matla滤波函数
转载地址http://blog.sina.com.cn/s/blog_6163bdeb0102e1dj.html 滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程.滤波器的实现包括滤波器结构的选 ...