`

java keywords -final

阅读更多

第一篇从final关键字说起

 

Contents

  • final基本用法
  • final深入理解

 

  • final基本用法

 

final:无法改变的

 

1.1 final field:

 

final field 有两种解释:

 

(1)不会改变的编译时常量:编译器可以将该常量带入带能用到它的计算式中,在编译时执行计算,可以减轻运行时负担。此时的常量必须是 final 的被赋值的基本数据类型

(2)不希望被改变的运行时初始化值:如下面的代码



 

当在对象上使用final关键词时指的是对象的引用不可变,而对象本身的属性是可以任意修改的

 static final 的域只占一块不能被修改的存储空间--《编程思想》

 

1.2 final method:

 

final method 使用时主要基于设计的考虑,当某个方法不想被其子类覆盖时使用(比如使用模板模式)。对于private的方法,都隐式定义为final的,子类不可以使用@Override 覆盖父类中的private 或者final的方法。

 


1.3 final class:

当一个类不允许被继承时使用

 

  • 深入理解

不可变对象的线程安全性

首先明确不可变对象:指所有的成员都是final并且成员要么是基本类型,要么指向另一个不可变对象,不可变对象只有一种状态,并且该状态由构造函数控制

 

不可变对象的必要条件:

(1)对象创建后状态不能被修改

(2)对象的域是final的

(3)对象被正确创建(创建过程中this引用没有逸出)--《并发编程》

 

 

不可变对象一定是线程安全的,无需同步:

事实上final关键词可以保证对象在创建的过程中不被其他线程访问到,因为对象的域被声明为final时,在对象被初始化的时候就被赋值了。

 

来自:

http://www.javamex.com/tutorials/synchronization_final.shtml

明日再译

 


 
 

  • 大小: 6 KB
  • 大小: 5.8 KB
  • 大小: 2.8 KB
分享到:
评论

相关推荐

    Java语言规范 SE 8 版本-官方英文版-带书签文字版.pdf

    - 关键字(Keywords):如`public`, `private`, `protected`, `abstract`, `final`, `static`, `void`, `class`, `interface`等,它们在代码中有特殊含义。 - 类型系统:包括原始类型(如`int`, `float`, `char`, ...

    java名词速查表 java名词速查表

    - **示例**:public、private、protected、static、final等。 #### Native methods (本地方法) - 本地方法是由非Java语言编写的方法,通过JNI(Java Native Interface)调用。 - **作用**:用于执行平台特定的操作...

    CoreJava重点要点笔记

    - **Chapter 06 Advanced Language Features (Static、Final、Access control、Collections and Reflection、Abstract、Interface、Inner classes)**: - 高级语言特性详解,如静态成员、最终类、访问控制、集合框架...

    java 变量、关键字

    Java中有许多关键字,包括但不限于`class`、`interface`、`extends`、`implements`、`public`、`private`、`protected`、`static`、`final`、`void`、`int`、`float`、`double`、`boolean`等。这些关键字定义了Java...

    Java Syntax BNF_java_

    2. **关键字(Keywords)**:Java有一些预定义的关键字,如`public`, `private`, `protected`, `static`, `final`, `void`, `int`, `if`, `else`, `while`, `for`, `return`等,它们有特殊的语义,不能用作标识符。...

    学习java必掌握的词汇

    - **final**: 表示不可变性,用于声明常量或不可继承的类。 - **new**: 用于创建对象的实例。 - **abstract**: 抽象类或抽象方法的关键字,表示该类或方法不提供实现。 - **finally**: 用于异常处理中的`finally...

    Java语言小手册

    #### 二、关键字(Keywords) - 关键字是被Java语言保留用于特定用途的词。 - **示例**:`abstract`, `break`, `byte`, `boolean`, `catch`, `case`, `class`, `char`, `continue`, `default`, `double`, `do`, `...

    java关键字、标识符、注释

    #### 关键字(Keywords) 在Java语言中,关键字是具有特殊意义的保留字,它们不能用作变量名、方法名或类名等标识符。Java的关键字用于定义程序结构的重要组成部分,如控制语句、数据类型等。 - **常见关键字**: - ...

    大工《Java程序设计》21春在线作业2参考答案.docx.docx

    2. 关键字(Keywords):`implements`用于实现接口,`extends`用于类的继承,而`final`关键字则可以修饰变量使其变为常量,不能修饰类。`final`也可以修饰方法,使得该方法不能被重写。 3. 异常处理(Exception ...

    在Java中使用Aiax技术实现自动完成功能

    String sql = "SELECT keyword FROM keywords WHERE keyword LIKE ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, query + "%"); rs = pstmt.executeQuery(); while(rs.next()) { results.add...

    java基础语法讲解上集,适合初级人员入门学习

    关键字(Keywords) 关键字是指在Java语言中具有特殊含义的单词,它们在Java编程中扮演着至关重要的角色。关键字通常用来定义数据类型、流程控制、访问权限等。 - **数据类型关键字**: - `class`:用于定义类。 ...

    java保留字、关键字

    在Java编程语言中,保留字(Reserved Words)和关键字(Keywords)是两个非常重要的概念,它们构成了Java语法的基础。保留字是Java语言已经预定义并赋予特定含义的词汇,而关键字则是Java语法结构中不可或缺的部分。...

    开发Android必备的java基础.docx

    Java中通常使用`final`关键字来声明常量,例如: ```java final double PI = 3.14159; ``` 这里的`PI`就是一个常量,其值不能被修改。 在Android开发中,这些基础的Java知识是构建应用程序的基础。理解并熟练运用...

    Java Web应用开发:分页.docx

    private static final int RECORDS_PER_PAGE = 10; ``` - **查询后添加分页代码**:在查询商品列表之后,添加分页处理代码。 ```java List<Product> productList = productDao.getAllProducts(); int current...

    中软校园招聘JAVA开发工程师笔试题.pdf

    - 第7题,`<HEAD>`标签通常包含网页的标题(Title)、关键词(Keywords)、描述(Description)等元信息,但不包括网页类型,所以选项C错误。 - 第8题,要隐藏图片,需设置`display`属性为`none`,所以答案是D。 ...

    源码关键字统计.rar

    Java的关键字包括但不限于`abstract`, `assert`, `boolean`, `break`, `byte`, `case`, `catch`, `char`, `class`, `const`, `continue`, `default`, `do`, `double`, `else`, `enum`, `extends`, `final`, `finally...

    java中字符串参数化符号${}的解析

    private static final String REGEX = "(?(?<!\\\\)\\$\\{)(.*?)(?=(?<!\\\\)\\})"; public List<String> findKeywords(String str) { List<String> keywords = new ArrayList(); Pattern pattern = Pattern....

    简单的servlet增,删,改,查

    private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, ...

Global site tag (gtag.js) - Google Analytics