真的知道final的用法了吗?

今天晚上在网上看到一些讲基础的java知识的blog,自己便想了想真的知道了这些基础知识了吗?想想还是基础知识掌握的不好,在这里把自己遇到的问题写到blog里,一是希望自己以后一定要关注java的基础知识,定期看书复习,俗话说:“万丈高楼从地起”,只有掌握好了基础才能写出有质量的代码。二是如果有人和我一样不了解final的话,希望有所帮助。
我们都知道finnal是用来定义常量的,一旦定义就不可以改变。这句话是正确的,但是,我们应该仔细分析这句话,定义常量有基本类型和引用类型,那对这两种类型的变量,什么才叫做一旦定义就不能改变呢?我们来看看这段代码:
	public static final int DEFAULT_NUM = 1;

public static void changeNum(int num) {
DEFAULT_NUM = 2;
}

这个代码肯定是错误的。我们在来看另外一段代码:
	public static final Map<String, String> INFO_MAP = new HashMap<String, String>();

static {
INFO_MAP.put("s", "soong");
}

啊?不是说finnal变量一旦第一就不可以改变吗?没错!这个观点是真确的(废话,全世界的java书都是这样讲的,呵呵),这里就体现了,对于基本数据类型来说一但定义,并且赋值后,是不能改变的,对于应用数据类型来说,不能改变不是指它的值不能改变,而是指它所指向的引用不能改变(这就是基本数据类型和引用类型的差别)。
总结一句话:“finnal对于基本数据类型是值不能改变,而对于引用数据类型是其引用不能改变”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值