返回顶部
首页 > 资讯 > 后端开发 > JAVA >java final本质解释
  • 730
分享到

java final本质解释

java教程java 2020-08-09 16:08:48 730人浏览 绘本
摘要

含义:final 含义是【仅可以被赋值一次】。赋值位置:在【声明时赋值】、在【构造方法中赋值】举例:package com.dada.data; public class TestFinal { // 1.声明时赋值 p

含义:final 含义是【仅可以被赋值一次】。

赋值位置:在【声明时赋值】、在【构造方法中赋值】

举例:

package com.dada.data;
 
public class TestFinal {
    // 1.声明时赋值
    private final int i = 0;
    private final int j;
    public TestF() {
        // 2.构造方法中赋值
        j = 10;
    }
}

注意:我们说 final 是仅可以赋值一次没错,但是我们知道在 java 中【值有两种】,【基本数据类型的值】和【引用数据类型的值】,对于基本数据类型来说,赋值就是直接把【值赋给变量】,对于引用数据类型来说就是把【引用赋给变量】。

因此:仅可以赋值一次的含义也就分为两种情况了,1.如果是基本数据类型,那么就是值本身不能变;2.如果是引用数据类型的值,那就是引用不能变,但是被引用的内容是可以变的。

举例:

定义 Student 类:

package com.dada.data;
 
public class Student {
	private int id;
	private String name;
	private int score;
	public Student(int id, String name, int score) {
		this.id = id;
		this.name = name;
		this.score = score;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "id: " + id + "	 name:" + name + "	score:" + score;
	}
}

定义测试类:

package com.dada.data;
 
public class TestFinal {
	private final Student ss;
	
	public static void main(String[] args) {
		TestFinal tf = new TestFinal();
	}
	public TestFinal() {
		Student student = new Student(1, "dada", 3);
		// 第一次赋值
		ss = student;
		System.out.println(ss.toString());
		
		// 修改引用所对应的对象的内容
		student.setId(2);
		student.setName("hehe");
		student.setScore(10);
		System.out.println(ss.toString());
	}
}

输出结果:

id: 1     name:dada    score:3
id: 2     name:hehe    score:10

总结:

由上面的例子可以知道,变量被 final 修饰之后其引用的内容还是可以被修改的,之所以很多时候我们感觉它不能被修改是因为:

通常我们是在定义变量时进行的赋值,这个时候对于基本类型数据来说它是永远不能改变的。

对于引用类型数据来说,因为我们无法获取对应的引用,所以也会觉得引用类型数据也是不能被修改的。

--结束END--

本文标题: java final本质解释

本文链接: https://lsjlt.com/news/3282.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java final本质解释
    含义:final 含义是【仅可以被赋值一次】。赋值位置:在【声明时赋值】、在【构造方法中赋值】举例:package com.dada.data; public class TestFinal { // 1.声明时赋值 p...
    99+
    2020-08-09
    java教程 java
  • Java接口的本质解析
    目录接口接口的定义接口和抽象的区别接口的格式接口中的主要成分抽象方法:常量:接口的案例接口与接口的关系JDK8之后的接口新增方法1.含有默认方法和静态方法2.含有私有方法和私有静态方...
    99+
    2024-04-02
  • Java抽象的本质解析
    目录Java抽象基础知识抽象抽象的定义abstract的使用抽象方法:抽象类:定义抽象类抽象类的一些注意点总结茫茫人海千千万万,感谢这一秒你看到这里。希望我的能对你的有所帮助!共勉!...
    99+
    2024-04-02
  • 详解java中Static、final、Static final的各种用法
    对Static、final、Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从容的回答...static加载:static在类加...
    99+
    2015-12-04
    java入门 java Static final Static final
  • 详解Java关键字final
    目录一、常见问题二、final修饰类三、final修饰方法四、final方法是可以被重载的五、修饰变量六、static final七、black final八、final域重排序规则...
    99+
    2024-04-02
  • Java接口回调的本质详解
    本质是JVM指令invokevirtual它涉及到了多态的特性,使用 virtual dispatch 做方法调用 virtual dispatch 机制会首先从 receiver(...
    99+
    2024-04-02
  • java中注解的本质是什么
    这篇文章给大家介绍java中注解的本质是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • 详解Java中的final关键字
    目录概述使用方式修饰类修饰方法修饰变量概述 子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种...
    99+
    2022-11-13
    Java final关键字 Java final
  • import的本质解析
    上一篇文章中我们介绍了python中hashlib模块用法示例,详情参见:http://www.lsjlt.com/article/127103.htm。今天我们看看import的有关内容。 编程时总是用到...
    99+
    2022-06-04
    本质 import
  • Java基础之关键字final详解
    Java-关键字:final 1 .final可以用来修饰的结构: 类、方法、变量 2.final 用来修饰一个类: 此类不能被其他类所继承 比如:String类、Sys...
    99+
    2024-04-02
  • 深入理解java final不可变性
    目录一、java final基本概念:1、主要用于修饰类、属性和方法:2、final finally finalize区别:二、final 不可变: 1、JAVA Stri...
    99+
    2024-04-02
  • 洞悉 VUE 观察者的本质,释放代码潜能
    观察者的工作原理 观察者是一个轻量级的对象,负责监视数据对象并侦听其属性的变化。当检测到更改时,观察者会通知关联的组件,使其重新渲染受影响的部分。该过程是自动进行的,不需要显式更新代码。 观察者使用对象代理来创建数据对象的反应性版本。代理...
    99+
    2024-04-02
  • java学习之路——final关键字详解
    一、概述学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final用于修饰不可改变内容。final...
    99+
    2021-08-02
    java入门 java final 关键字
  • Java全面细致讲解final的使用
    目录一、理解二、作用1. 修饰-类2. 修饰-方法3. 修饰-变量3.1 修饰-成员变量(属性)3.2 修饰-局部变量三、经典题目一、理解 final:最终的 二、作用 final ...
    99+
    2024-04-02
  • Java接口的本质实例分析
    本文小编为大家详细介绍“Java接口的本质实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java接口的本质实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。接口Java接口是一系列方法的声明,是一些...
    99+
    2023-06-29
  • 怎么理解Lisp的本质
    本篇内容介绍了“怎么理解Lisp的本质”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介最初在web的某些...
    99+
    2024-04-02
  • 怎么理解Ajax的本质
    今天就跟大家聊聊有关怎么理解Ajax的本质,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1、Ajax (Asynch...
    99+
    2024-04-02
  • Java 文件操作的哲学:理解文件的本质
    文件是计算机系统中信息存储和管理的基本单元,也是 Java 文件操作的核心关注点。理解文件的本质对于有效地操作和管理文件至关重要。 抽象和层次结构 文件本质上是一个抽象概念,代表着存储在持久介质(例如磁盘或内存)中的一组数据。文件的逻辑结...
    99+
    2024-04-02
  • 理解Reviverevive,全面解析其本质
    reviverevive 是一种编程技术,允许动态加载和卸载运行中应用程序的代码,从而实现应用程序的实时更新和扩展。它利用 java reflection api,可以通过加载新类、调用...
    99+
    2024-04-08
  • Java修饰符 abstract,static,final 的区别详解
    static 表示静态,它可以修饰属性,方法和代码块。 1.static修饰属性(类变量),那么这个属性就可以用类名.属性名来访问,也就是使这个属性成为本类的类变量,为本类对象所共有...
    99+
    2022-11-15
    abstract static final
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作