java中final修饰的类_java中final修饰符实例分析

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修饰符有所了解了呢,相信注释中已经给大家解释的很清楚了,我这里就不再啰嗦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值