一、final

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

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

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

二、static

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

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

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

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

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

最新文章

  1. git简易操作
  2. iOS之加密的三种方法
  3. <<< java异常The import java.util cannot be resolved
  4. JAVA 之print,printf,println
  5. 深入了解SQL注入绕过waf和过滤机制
  6. delphi数组作为参数传值
  7. Dr.Kong的艺术品
  8. WCF 在VS中,添加服务引用,地址输入http://ip/Service.svc,点击前往,提示错误,内容如下:
  9. [Locked] Sparse Matrix Multiplication
  10. CSS里的 no-repeat 是什么意思
  11. Ubuntu 配置Tomcat环境
  12. 微信网页签名失败(invalid signature)
  13. Android - 分享内容 - 添加一个简单的分享操作
  14. (转载)html中div使用自动高度
  15. ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
  16. php之微信公众号发送模板消息参观模仿
  17. 使用 LD_PRELOAD 变量拦截调用
  18. WEB测试重点
  19. 打包pyinstaller
  20. 【转载】MSXML应用总结 开发篇(上)

热门文章

  1. Java多线程-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier
  2. 关于float样式
  3. ios 查看模拟器路径以及应用的文件夹
  4. WSGI简介
  5. SaltStack 批量管理任务计划
  6. Unity使用OpenGL绘制线段
  7. U3D功能脚本备忘
  8. codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)
  9. 《转》Python学习(19)-python函数(二)-关于lambda
  10. 嵌入式系统C编程之堆栈回溯(二)