时间:2021-05-19
final修饰符:
final修饰成员变量必须有程序员显示指定初始值。
类的Field:必须在静态初始化块中或声明该Field时指定初始值。
实例Field:必须在非静态初始块中,声明Field或者构造器中指定初始值。
final局部变量:必须由程序员显示初始化。
final修饰的基本变量和引用类型变量的区别?
final修饰的基本变量:不能对基本变量重新赋值。
final修饰的引用变量:只保证这个引用类型所引用的地址不会变,即
一直引用同一个对象,但这个对象完全可以发生改变。
复制代码 代码如下:
/**
*/
import java.util.*;
public class Demo5
{
public static void main(String[] args)
{
final B b = new B(22);
b.test();
//合法 改变值,但仍是指向同一个引用
b.setAge(20);
System.out.println(b.getAge());
// 非法
// b = null;
b.test2();
}
}
/**
fianl修饰成员变量
*/
class A
{
//合法
final int a = 10;
//构造器或初始化化块中指定初始值
final String str;
final int c;
final static double d;
{
str = "hello";
//非法
// a = 100;
}
static
{
d = 100;
}
// 构造器可对没在初始化块中指定的Field指定初始值
public A()
{
// 非法
// str = "ddd";
c = 1000;
}
public double changFinal()
{
// 不能再普通方法中为final指定初始值
// return d = 1000.90;
return 0;
}
}
/**
fianl修饰数组 对象
*/
class B
{
private int age;
public B()
{
}
public B(int age)
{
this.age = age;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return this.age;
}
public void test()
{
final int[] arr={23,434,56,898};
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
arr[2] = 200;
System.out.println(Arrays.toString(arr));
//下面对Arr重新赋值 非法
// arr = null;
}
/**
加深对final的理解
*/
public void test2()
{
String str1 = "美好未来";
//直接引用常量池中的"美好未来"
String str2 = "美好"+"未来";
//true
System.out.println(str1 == str2);
String s1 = "美好";
String s2 = "未来";
String s3 = s1+s2;
//false s1 s2只是变量 在编译时期不能确定
//若想在编译时期确定 则用 final修饰 s1 s2
System.out.println(str1 == s3);
}
}
小伙伴们是否对java中final修饰符有所了解了呢,相信注释中已经给大家解释的很清楚了,我这里就不再啰嗦
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为大家分享了java中final修饰符的使用,供大家参考,具体内容如下1.final修饰符的用法:final可以修饰变量,被final修饰的变量被赋初始值之
一.在java中提供的一些修饰符,这些修饰符可以修饰类、变量和方法,在java中常见的修饰符有:abstract(抽象的)、static(静态的)、public
Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明:publi
Java访问修饰符(访问控制符)Java通过修饰符来控制类、属性和方法的访问权限和其他功能,通常放在语句的最前端。例如:publicclassclassName
枚举java语言中的修饰符组合,代码如下所示:packagemodel;/*topclass的修饰符组合abstractfi