代码块(或初始化块)

  • 代码块的作用:用来初始化类、对象(从这个角度看,把它叫作初始化块)
  • 代码块如果有修饰的话,只能使用static
  • 分类:静态代码块 vs 非静态代码块

静态代码块

static {}
  • 内部可以有输出语句
  • 随着类的加载而执行,且只会执行一次
  • 作用:初始化类的信息(比如静态属性)
  • 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行。
  • 静态代码块的执行要优先于非静态代码块的执行
  • 静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构

非静态代码块

{}
  • 内部可以有输出语句
  • 随着对象的创建而执行
  • 每创建一个对象,就执行一次非静态代码块
  • 作用:可以在创建对象时,对对象的属性等进行初始化
  • 如果一个类中定义了多个代码块,则按照声明的先后顺序执行
  • 非静态代码块内部可以调用静态属性、静态方法,或非静态属性、非静态方法。

对属性可以赋值的位置:

  1. 默认初始化
  2. 显式初始化
  3. 构造器中初始化
  4. 有了对象后,可用“对象.属性”、“对象.方法”的方式进行赋值
  5. 在代码块中赋值
    执行先后顺序:1-2/5-3-4(2或5只看谁先声明,但一般没人把代码块声明在前面)

final关键字

1.final可以用来修饰的结构:类、方法、变量
2.final用来修饰一个类:此类不能被其他类所继承(即此类不能有子类了)。比如:String类、System类、StringBuffer类
3.final用来修饰方法:表明此方法不可以被重写。比如:Object类中的getclass();
4.final用来修饰变量:此时的“变量”就称为是一个常量

  1. final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化
  2. final修饰局部变量:尤其是使用final来修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值后,就只能在方法体内使用此形参,但不能进行重新赋值。

static final用来修饰属性:全局常量

注意:当我们把对象形参设成final时,对象里的属性可以变。

public void addOne(final other o){o.i++;
}

以上代码是合法的。

面向对象16:代码块、final关键字相关推荐

  1. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  2. Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常

    day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...

  3. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  4. 面向对象编程(十二)——final关键字

    阅读目录 final关键字 final修饰变量 final修饰方法 final修饰类 Final && Static 总结 final关键字 Java关键字final有"这是 ...

  5. Java面向对象(18)--final关键字使用

    在Java中声明类.变量和方法时,可使用关键字final来修饰,表示"最终的". final标记的类不能被继承,提高安全性,提高程序的可读性 如:String类.System类.S ...

  6. Java面向对象(四)final关键字

    一.final修饰变量 final修饰变量之后变量的直接值不能更改 ---- 常量. final定义的常量在对象创建完成之前允许改变一次值. java中 所说的常量往往是指静态常量 --- 只存储一份 ...

  7. static关键字与代码块

    文章目录 static关键字与代码块 一.static关键字 1.静态属性 2.静态方法 二.代码块 1.普通代码块 2.构造代码块 3.静态代码块 static关键字与代码块 一.static关键字 ...

  8. synchronized锁机制 之 代码块锁

    synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间.这种情况下可以尝试使用 ...

  9. 编程开发之--java多线程学习总结(2)同步代码块

    1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize;/*** 1.使用同步代码块* 语法:synchronized ( ...

  10. 在方法参数上使用final关键字

    经过一些自己的混淆,最终博客方法的具体含义(最终声明的方法参数)将对此博客条目进行澄清. 至少可以将方法参数上的final关键字视为Java编译器的指示符,表明该参数不能重新分配给另一个引用. Jav ...

最新文章

  1. ORB_SLAM2代码阅读(4)——LoopClosing线程
  2. 第三代主流测序数据组装软件
  3. 在Ruby中获取system()调用的输出
  4. 【django轻量级框架】使用支付宝支付接口(沙箱)
  5. linux服务器数据转发,Linux云服务器如何使用iptables做流量转发?
  6. mysql怎么引用别的文件_用source语句引用mysql文件的细节注意
  7. rust(20)-字符
  8. 腾讯在线教育小程序开发实践之路
  9. [jQuery] 针对jQuery的优化方法有哪些?
  10. 部署windows服务
  11. php修改隐藏域非法提交,PHP get、post变量放在表单隐藏域示例
  12. 使用keepalived搭建mysql主从备份、切换
  13. 如何降低软件项目的风险 -- 包括客户的风险,软件提供商的风险
  14. MPEG4Extractor分析
  15. OA系统新流程创建与管理办法
  16. Excel宏的基本逻辑语句
  17. JS数据结构与算法-队列结构
  18. Element ui 表单验证触发方式:trigger的两种选项
  19. k8s-重启kubelet服务异常 kubelet.service: main process exited, code=exited, status=1/FAILURE
  20. 工作五年的我,为什么要转行学网络安全技术呢

热门文章

  1. jquery中attr() 和 prop()的区别
  2. Oracle 备份与恢复学习笔记(8)
  3. Ubuntu 16.04安装SoapUI工具进行接口测试(Web Service/WSDL/RESTfull)
  4. 《领域驱动设计:软件核心复杂性应对之道(修订版)》—第2章 2.3节一个团队,一种语言...
  5. PhantomJS其他语言调用
  6. 事件驱动和状态机模式在YARN中的使用
  7. 【转载】深入浅出VA函数
  8. win10去掉文件夹前面的复选框
  9. 给予redis和zookeeper的分布式锁
  10. 谈论为什么要写博客的重要性