说明:不一定准确,但是最快理解。

final:

final可以修饰:属性,方法,类,局部变量(方法中的变量)

final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。

final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。

final修饰的属性表明是一个常数(创建后不能被修改)。

final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。

对于基本类型数据,final会将值变为一个常数(创建后不能被修改);但是对于对象句柄(亦可称作引用或者指针),final会将句柄变为一个常数(进行声明时,必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。方法参数中的final句柄,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)。

static:

static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)

static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。

static修饰的属性所有对象都只有一个值。

static修饰的属性强调它们只有一个。

static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等

static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。

static不可以修饰局部变量。

static final和final static:

static final和final static没什么区别,一般static写在前面。

static final:

static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。

static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用

转载自https://www.cnblogs.com/EasonJim/p/7841990.html

Java中static、final、static final的区别(转)的更多相关文章

  1. 在JAVA中利用public static final的组合方式对常量进行标识

    在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这 ...

  2. JAVA中extends 与implements有啥区别?

    JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...

  3. Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)

    Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例  原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...

  4. java中的sleep()和wait()的区别

    对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...

  5. java中的this与super的区别

    java中的this与super的区别 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base { Base() { System.out.pr ...

  6. Java中instanceof和isInstance的具体区别

    Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...

  7. Java 中静态变量和实例变量区别

    Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...

  8. JAVA中String = null 与 String = "" 的区别

    JAVA中String = null 与 String = ""的区别 笔者今天在Debug的时候发现的NPE(NullPointerException),辛辛苦苦地调试了半天,终 ...

  9. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

  10. Java中wait和sleep方法的区别

    1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...

随机推荐

  1. Scala基础学习(一、数据类型)

    Scala 支持的数据类型: 数据类型 描述 Byte 8位有符号补码整数.数值区间为 -128 到 127 Short 16位有符号补码整数.数值区间为 -32768 到 32767 Int 32位 ...

  2. 对lua中__newindex的理解

    阅读了文章后用流程图来总结一下 __newindex的规则: a.如果__newindex是一个函数,则在给table不存在的字段赋值时,会调用这个函数.b.如果__newindex是一个table, ...

  3. python自动化框架(一)

    一.jsonpath难点分析 dic = { "error_code": 0, "stu_info": [ { "id": 2057, &q ...

  4. python的面试问题

    WHAT 1. 什么是Python? Python是一种编程语言,它有对象.模块.线程.异常处理和自动内存管理.可以加入与其他语言的对比.下面是回答这一问题的几个关键点: a. Python是一种解释 ...

  5. 光照构建失败。Swarm启动失败

    这是别人(http://blog.csdn.net/z609932088/article/details/52368015)写的,亲试可用 如下图 百度许久,有大神指出是我在编译源码的的时候没有将其中 ...

  6. div介绍 盒子模型边框属性 CSS初始化 文字排版 边框调整 溢出

    今天学习的div,了解了div是干什么用的掌握了什么是盒子模型,以及div的外边距内边距以及边框,运用div和CSS给文字排版,利用边框的来做图像,div溢出的处理 CSS初始化: 精确排版的时候用这 ...

  7. Junit单元测试随笔

    Junit单元测试随笔 Mooctest 使用心得: Mooctest IDE非常适合新手使用,相比于Eclipse,他免去了配置环境的麻烦.eclipse中 Junit 编写代码经验总结 刚开始写测 ...

  8. 公司内网接口ip城市查询分析

    require 'rubygems' require 'json' print ARGV print "fist is :",ARGV[0] logfile="#{ARG ...

  9. edgedb 内部pg 数据存储的探索 (一)基本环境搭建

    edgedb 是基于pg 上的对象关系数据库,已经写过使用docker 运行的demo,为了探索内部的原理,做了一下尝试,开启pg 访问 后边会进一步的学习 环境准备 为了测试,使用yum 安装 安装 ...

  10. websocket 2 rest api

    需要开发一个prometheus 的exporter 使用jmespath 获取对应metrics的数据,并进行转换处理,但是因为那个服务 提供的接口是通过websoket 的实时api,所以基于no ...