1.代码块的作用:用来初始化类、对象

2.代码块如果有修饰的话,只能使用static.

3.分类:静态代码块 vs 非静态代码块

4.静态代码块

内部可以有输出语句

随着类的加载而执行,而且只执行一次

作用:初始化类的信息

如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行

静态代码块的执行要优先于非静态代码块的执行

静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构

5.非静态代码块

内部可以有输出语句

随着对象的创建而执行

每创建一个对象,就执行一次非静态代码块

作用:可以在创建对象时,对对象的属性等进行初始化

如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行

非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法

对属性可以赋值的位置:

①默认初始化
②显式初始化/⑤在代码块中赋值
③构造器中初始化
④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
执行的先后顺序:① - ② / ⑤ - ③ - ④

final关键字
final:最终的

1.final可以用来修饰的结构:类、方法、变量

2.final 用来修饰一个类:此类不能被其他类所继承。比如:String类、System类、StringBuffer类

3.final 用来修饰方法:表明此方法不可以被重写。比如:Object类中getClass();

4.final 用来修饰变量:此时的"变量"就称为是一个常量

4.1 final修饰属性:可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化

4.2 final修饰局部变量:尤其是使用final修饰形参时,表明此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值。

public void show(final int num){
//num = 20;//编译不通过
System.out.println(num);
}
//不可以在方法内赋值,只有在调用时赋值,如test.show(10);

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

面试题:排错

public class Something{
public int addOne(final int x){
return ++x;// 错误的,因为改变了x;
//return x + 1;//正确的。未改变x;
}
}

代码块及final关键字的使用的更多相关文章

  1. this、static、main方法、静态代码块、final关键字、Runtime类、Cloneable类、类成员的访问控制权限、异常体系

    this表示当前对象,用在方法内部,当某对象调用该方法时,该方法中的this就代表调用该方法的对象: static关键字: 修饰类属性后,该属性就成为该类所有实例的公共属性,修改该属性值,所有的实例的 ...

  2. java 类、方法、代码块修饰式关键字总结

    super 关键字 this和super的区别 访问成员的区别 this关键字 this特点 this使用场景 static关键字 例子 访问权限修饰符 特点 总结: 四个修饰符的特点 访问权限修饰符 ...

  3. 9、包、访问控制、import、static、static代码块、final、抽象类、接口、instanceof、多态

    1.包 三级命名:公司的尾缀(com).公司名字(baidu).业务(Sale) java.lang:默认包:String.Math,Object,System java.util:工具包 java. ...

  4. 类(静态)变量和类(静态)static方法以及main方法、代码块,final方法的使用,单例设计模式

    类的加载:时间 1.创建对象实例(new 一个新对象时) 2.创建子类对象实例,父类也会被加载 3.使用类的静态成员时(静态属性,静态方法) 一.static 静态变量:类变量,静态属性(会被该类的所 ...

  5. 构造代码块、this关键字、静态变量、静态代码块、主函数

    一.构造代码块: 作用:给对象进行初始化. 特点:对象一经运行就执行(与变量声明时赋初值同级别,此处注意 非法前向引用) 优先于构造函数的执行. 与构造函数的区别: 构造代码块是给所有对象统一初始化. ...

  6. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

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

  7. static关键字和代码块

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

  8. 多线程、死锁、线程安全、同步方法、代码块、休眠、守护线程、Thread、Runnable(二十三)

    1.多线程的引入 * 1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多项工作* 2.多线程的应用场景 * 红蜘蛛同时共 ...

  9. java提高篇(十二)-----代码块

    在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...

随机推荐

  1. 【Java中的线程】java.lang.Thread 类分析

    进程和线程 联想一下现实生活中的例子--烧开水,烧开水时是不是不需要在旁边守着,交给热水机完成,烧开水这段时间可以去干一点其他的事情,例如将衣服丢到洗衣机中洗衣服.这样开水烧完,衣服洗的也差不多了.这 ...

  2. 使用JMeter进行MySQL的压力测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 前言 1. JMeter安装 2. 导入MyS ...

  3. 从 Delta 2.0 开始聊聊我们需要怎样的数据湖

    盘点行业内近期发生的大事,Delta 2.0 的开源是最让人津津乐道的,尤其在 Databricks 官宣 delta2.0 时抛出了下面这张性能对比,颇有些引战的味道. 虽然 Databricks ...

  4. Java学习--基础

    java学习 基础 Java三大版本 javase 标准版 占领桌面端(基础) javame 移动版 嵌入式开发.占领手机端 javaee 企业版 占领服务器端 Java的特性和优势 跨平台.可移植性 ...

  5. Android Studio 模拟器(AVD)访问互联网

    模拟器默认是不可以直接访问互联网的,需要为模拟器配置 DNS 服务器. (一)找到模拟器安装的位置 模拟器安装位置在安卓 SDK 下面,进入[SDK Path]/emulator. (二)打开终端输入 ...

  6. 大数据Hadoop入门教程 | (二)Linux

    使用finalShell可以提供文件目录图形化 完整Linux命令整理参考大佬博客:Linux常见文件管理命令 - Mr_Walker - 博客园 Linux文件系统基础知识 Linux文件系统概念 ...

  7. 演示RabbitMQ的交换类型

    一.Direct exchange 新建一个名为direct_exchange的Direct exchange 添加队列direct_queue1 添加队列direct_queue2 direct_e ...

  8. PHP实现服务器文件预览

    PHP实现服务器里面的所有文件进行预览跟手机文件夹一样 服务器创建一个index.php文件 点我查看 <?php // errors ini_set('display_errors', 1); ...

  9. 好好回答下 TCP 和 UDP 的区别

    写了这么多篇关于 TCP 和 UDP 的文章,还没有好好聊过这两个协议的区别,这篇文章我们就来开诚布公的谈一谈. 关于 TCP 和 UDP ,想必大家都看过一张这样的图. 有一个小姑娘在对着瓶口慢慢的 ...

  10. 【java】学习路径20-Date、Calender日期与时间

    简单的说,Date和Calender基本上是差不多的. 在最开始的时候只有Date,没有Calender. 在jdk不断更新的时候,发现了Date有一点缺陷,于是推出了Calender. // Dat ...