在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

  1. 当用final修饰一个类时,表明这个类不能被继承。
  2. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
  3. final修饰的成员变量,必须在定义时或者构造函数中初始化赋值,而且一旦赋值则不能改变。
  4. 当一个变量被定义成final 类型时,在编译时能知道其确切的值,则被当成常量使用。

  

final String a = "hello";
String b = "hello";
String c = "helloworld";
String d = a + "world";
String e = b + "world";
System.out.println(c == d);
System.out.println(c == e);

    输出结果:

      true

      false

  5.  final 修饰的对象内容可变,但是对象是不可变的。如:

    final MyClass myClass = new MyClass();

    myClass.i = myClass.i + 3;

    System.out.println(++myClass.i);

   输出结果:

    4

  但是如果重新给myClass赋值则会编译错误。

    myClass = new MyClass();

  6. 对于方法参数是final类型的

 

 public void testString(final String str){

      str += "333";

   }//编译产生错误,不可重新赋值

   public void testStringBuilder(final StringBuilder str){

      str.append("333");

}//可顺利编译执行,并输出333

总结一下。我认为final所不能改变的只是引用的,而不是引用的内容。当final修饰的变量的引用地址没有发生改变而只是值的改变则是可以的。

Java之final的解析的更多相关文章

  1. Java中 final和static解析

    一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理 ...

  2. 【转】Java HashMap 源码解析(好文章)

    ­ .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wra ...

  3. [转]java static final 初始化

    http://tanbing1986411.blog.163.com/blog/static/7259798220103610224434/ java static final 初始化 1.stati ...

  4. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  5. JAVA中生成、解析二维码图片的方法

    JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...

  6. Java集合类源码解析:Vector

    [学习笔记]转载 Java集合类源码解析:Vector   引言 之前的文章我们学习了一个集合类 ArrayList,今天讲它的一个兄弟 Vector.为什么说是它兄弟呢?因为从容器的构造来说,Vec ...

  7. 沉淀再出发:java中线程池解析

    沉淀再出发:java中线程池解析 一.前言 在多线程执行的环境之中,如果线程执行的时间短但是启动的线程又非常多,线程运转的时间基本上浪费在了创建和销毁上面,因此有没有一种方式能够让一个线程执行完自己的 ...

  8. 【Java面试题系列】:Java中final finally finalize的区别

    本篇为[Java面试题系列]第三篇,文中如有错误,欢迎指正. 第一篇链接:[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 第二篇链接:[Java面试题系列]:Java基础知识常见面试题 ...

  9. Java——LinkedHashMap源码解析

    以下针对JDK 1.8版本中的LinkedHashMap进行分析. 对于HashMap的源码解析,可阅读Java--HashMap源码解析 概述   哈希表和链表基于Map接口的实现,其具有可预测的迭 ...

随机推荐

  1. Bzoj 1984: 月下“毛景树” 树链剖分

    1984: 月下“毛景树” Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1282  Solved: 410[Submit][Status][Discu ...

  2. PC-[WIN7]此计算机无法联接家庭组

    不能启用 HomeGroup Listener 解决: 1.设定为自动开始:Function Discovery Provider HostFunction Discovery Resource Pu ...

  3. java实现简单的文件筛选

    package filenameFilter; import java.io.File; /* * 实现功能: * 获取指定路径下的指定格式的文件; * */ public class Test { ...

  4. Office在线预览及PDF在线预览的实现方式史上最全大集合

    Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...

  5. 图解三种APP的区别

  6. UVa 567: Risk

    这是一道很简单的图论题,只要使用宽度优先搜索(BFS)标记节点间距离即可. 我的解题代码如下: #include <iostream> #include <cstdio> #i ...

  7. Operfire/XMPP

    Operfire/XMPP 关于Openfire.XMPP协议.IM相关知识 基于开源 Openfire 聊天服务器 - 开发聊天记录插件 posted @ 2013-03-29 11:03 hooj ...

  8. 第33日 我疯了集成平台(六)-步履轻盈JQuery(四)

    6一个月28日本,天阴下雨. " 微雨过,小荷翻,榴花开欲燃.玉盆纤手弄清泉,琼珠碎却圆."          古老的JavaScript,且乱且复杂.封装成库,青春焕发,这样人们 ...

  9. flex利用webservice上传照片

    WebService端代码 /// <summary> /// 上传文件到远程server /// </summary> /// <param name="fi ...

  10. extjs_02_grid(显示本地数据,显示跨域数据)

    1.显示表格 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...