博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java--static、final、static final的区别
阅读量:5008 次
发布时间:2019-06-12

本文共 816 字,大约阅读时间需要 2 分钟。

 

一、final

  • final修饰类:表示该类不能被继承;final类中的方法默认是final的;
  • final修饰方法:表示该方法无法被重写;
  • final修饰方法参数:表示在变量的生存期中它的值不能被改变;
  • final修饰变量:包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时或者构造方法中对它赋值;

成员变量与局部变量的区别:

  1. 在类中位置不同。成员变量:在类中方法外。局部变量:在方法定义中或者方法声明上。
  2. 在内存中的位置不同。成员变量:在堆内存。  局部变量:在栈内存。
  3. 生命周期不同。成员变量:随着对象的创建而存在,随着对象的消失而消失。 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
  4. 初始化值不同。成员变量:有默认值初始化。局部变量:没有默认值初始化,必须定义,赋值,然后才能使用。
  5. 另外,局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

二、static

  • 修饰成员变量:将其变为类成员,从而实现所有对象对于该成员的共享;
  • 修饰成员方法:将其变为类方法,可以直接使用“类名.方法名"的方式调用,常用于工具类;
  • 静态代码块:将多个类成员放在一起初始化,用来优化程序性能,它只会在类加载的时候执行一次。

静态变量和非静态变量的区别是:

  1. 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
  2. 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

三、static final:同时使用static和final修饰的成员在内存中只占据一段不能改变的存储空间。

  • 修饰变量:表示一旦给值就不可修改,可以通过类名可以直接访问;
  • 修饰方法:表示不可覆盖,可以通过类名直接访问。

 

转载于:https://www.cnblogs.com/fqfanqi/p/10674336.html

你可能感兴趣的文章
接口测试(java+testng+ant+jenkins)第四篇jenkins
查看>>
Docker折腾手记-linux下安装
查看>>
Log4net入门使用
查看>>
NSLayoutConstraint 使用详解 VFL使用介绍
查看>>
Node.js中流程控制
查看>>
Netdata 服务器前端监控平台
查看>>
JSP内置对象概述
查看>>
安装 Tesserocr (填坑)
查看>>
freemarker对html里多行表格操作
查看>>
VM配置文件所在磁盘空间小于其配给内存时的错误信息
查看>>
ThinkCMF5.1主要特性
查看>>
CSS布局技巧
查看>>
mysqlimport 导入文件到数据库命令
查看>>
codeup 算法笔记【递归入门】组合+判断素数
查看>>
Linux开启关闭redis
查看>>
Application.Current的使用
查看>>
3487. 【NOIP2013模拟联考11】剑与魔法(dragons) (Standard IO)
查看>>
5791. 【NOIP2008模拟】阶乘
查看>>
python3学习笔记--list.append()/extend()/+=
查看>>
zookeeper的客户端应用
查看>>