首页 > 其他分享 >final关键字的作用

final关键字的作用

时间:2023-11-14 09:55:38浏览次数:30  
标签:String class public 关键字 static 修饰 final 作用

目录

1.修饰类时

1.只能是公共的(public)就算不写也是public
2.被final修饰的类不可以被继承

//前面默认有个public 写不写都行
final class A{
    
}

2.修饰方法时

1.方法不能不能覆盖
2.被final修饰的方法,JVM会尝试将其内联,以提高运行效率

3.修饰属性和局部变量时

3.1修饰局部变量时

1.要赋值
2.不能被改变

public class Test01 {
    public static void main(String[] args) {
        go();
    }
    public static void go(){
//        方式一:初始化的时候赋值
//        final int age = 10;
        
//        方式二:先初始化后赋值
        final int age;
        age = 10;
        System.out.println(age);
    }

}

3.2修饰成员变量时

1.必须在系统赋默认值之前赋值
2.不可更改

public class Test01 {
//    1.写法一报错未在创建时声明对象
//    final int a;
//    a =10;

//    2.写法二正确
//    final int a = 10;

//    3.写法三正确
    final int a;
//    赶在系统赋默认值之前赋值就行,系统赋默认值在构造方法执行的时候
    public Test01() {
        this.a =0;
    }
}
final String name = "qy";
//报错
name = "ym";

final Object obj = new Object();
//报错
obj = new Object();

3.3修饰类变量时

1.与static结合使用修饰的变量是常量
2.常量要符合命名规范,全部大写,可以用下划线连接
3.被final修饰的常量,在编译阶段会存入常量池中

public class Main {
//    final 放前放后都一样
//    final static double PI = 3.1415926;
    static final double PI = 3.1415926;
}

4.final与普通变量的区别

public class Test1 {
    public static void main(String[] args)  {
        String a = "hello2"; 
        final String b = "hello";
        String d = "hello";
        String c = b + 2; 
        String e = d + 2;
        System.out.println((a == c));
        System.out.println((a == e));
    }
}

//结果
//true
//false
public class Test2 {
    public static void main(String[] args)  {
        String a = "hello2"; 
        final String b = getHello();
        String c = b + 2; 
        System.out.println((a == c));
 
    }
     
    public static String getHello() {
        return "hello";
    }
}
//结果
//false

通过上面两个例子,我们可以发现在Test1中被final修饰的变量在进行字符串串接的时候,地址没变,但是在Test2中通过方法调用后就变了,也就是说间接的赋值会改变地址。

5.final用于引用

如果修饰引用,那么表示引用不可变,引用指向的内容可变。

public class Test02 {
    public static void main(String[] args) {
        final Student stu = new Student("小芊",18);
        //可以修改里面的值
        stu.setName("芊嵛");

//        不能再new
//        stu = new Student("ff",5);
    }
}

标签:String,class,public,关键字,static,修饰,final,作用
From: https://www.cnblogs.com/qy-blog/p/17830968.html

相关文章

  • finalshell报错java.net.UnknownHostException: node2
    前几天是node3连不上,今天早上写作业发现node2又连不上了]$systemctlstatusnetwork.service●network.service-LSB:Bringup/downnetworkingLoaded:loaded(/etc/rc.d/init.d/network;bad;vendorpreset:disabled)Active:active(exited)since二2023-11-1408:......
  • APK没有SO文件就运行不了吗,它有什么作用
    APK(Android应用程序包)中的SO文件,即“.so”文件,是一种特殊的文件格式,用于存储Android应用中的本地库(nativelibraries)。这些本地库通常是用C或C++编写的,然后编译成平台特定的代码。但并不是所有APK都必须含有SO文件才能运行。它们的使用取决于应用的特定需求。可以用生活中的例子......
  • apk里面的so文件包括什么,作用是什么,比喻一下
    在Android的APK文件中,.so 文件是指共享对象(SharedObject)文件,它们有以下特点和作用:本质和组成:.so 文件是Linux系统中的动态链接库(类似于Windows中的.dll 文件)。它们通常是用C或C++编写的,并被编译成机器码。作用:性能优化:由于.so 文件包含编译后的代码,它们可以提高应用的......
  • 题解 AT_codefestival_2016_final_f【Road of the King】
    注意到当前移动到的位置并不重要,重要的是经过的点数和\(1\)所在强连通分量大小,因此把它们放进状态里:设\(f_{i,j,k}\)表示进行\(i\)次移动,经过了\(j\)个不同的点,此时\(1\)所在的强连通分量大小为\(k\)的方案数。考察下一次移动到的点的情况:没有访问过:共有\(n-j\)......
  • 滚珠螺杆在注塑机械手中起什么作用?
    注塑机械手的配件中滚珠螺杆是重要的一环,在注塑机械手中起着重要的作用。注塑机械手是一种自动化设备,可以在注塑生产中实现自动化操作,而滚珠螺杆则是实现这一操作的关键部件之一。滚珠螺杆是一种将旋转运动转化为直线运动的精密传动部件,它由螺杆、滚珠和回程装置组成;那么滚珠螺杆起......
  • 秦疆的Java课程笔记:26 基础 变量 常量 作用域
    变量就是可以变化的量。Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括:变量名,变量类型,作用域。注意事项:每个变量都有类型,类型可以是基本类型,也可以是引用类型。变量名必须是合法的标识符。变量声明是一条完整的语句,因此每一......
  • Supervisor的作用与配置
    https://blog.csdn.net/hudeyong926/article/details/99540733 安装supervisor#检查是否已经安装supervisord--version#安装pipyuminstall-yepel-releaseyuminstall-ypython-pip#pip安装supervisorpipinstallsupervisor在末尾加入echo'exportPATH......
  • 01作用域与作用域链
    1.作用域 学习目标:了解作用域对程序执行的影响以及作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染作用域规定了变量能够被访问的范围,离开了这个范围变量便不能被访问作用域分为:局部作用域函数作用域:在函数内部声明的变量只能在函数内部被访问。外部无......
  • 项目章程的作用是什么,项目可行性研究包括哪些
    项目章程的作用包括:①确定项目经理,规定项目经理的权力②正式确认项目的存在,给项目一个合法的地位③规定项目的总体目标,包括范围、时间、成本和质量等。④通过叙述启动项目的理由,把项目与执行组织的日常经营运作及战略计划等联系起来可行性研究包括:1.投资必要性论证项目投资建设的必......
  • $(CURDIR)/Makefile Makefile: ; 的作用
    $(CURDIR)/MakefileMakefile:; 在这个Makefile中,$(CURDIR)/MakefileMakefile:;是一个特殊的语法,它被用于取消Makefile默认的隐含规则。这个语句的作用是阻止Make命令在当前目录下自动查找和使用默认的隐含规则来构建目标。通常情况下,如果没有指定如何构建某个目标,Make命令......