1.关键字final

  •      final修饰类:这个类就不能被继承
  •      final修饰方法:不能被重写
  •      final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值。习惯上,常量用大写字符表示
  •      此常量在哪里赋值:①此常量不能使用默认初始化 ②可以显式的赋值、代码块、构造器

      注意:变量用static final修饰:全局常量

   2.关键字static

     static,静态的,可以用来属性、方法、*代码块(或初始化块)、*内部类

     static修饰属性(类变量):

  • 由类创建的所有的对象,都共用这一个属性
  • 当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。vs 实例变量(非static修饰的属性,各个对象各自拥有一套副本)
  • 静态类变量随着类的加载而加载的,而且独一份
  • 静态的变量可以直接通过“类.类变量”的形式来调用
  • 静态类变量的加载是要早于对象。所以当有对象以后,可以“对象.类变量”使用。但是"类.实例变量"是不行的
  • 静态类变量存在于静态域中

     static修饰方法(类方法):

  • 随着类的加载而加载,在内存中也是独一份
  • 可以直接通过“类.类方法”的方式调用
  • 内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法是可以调用静态的属性或静态的方法

      注意:静态的结构(static的属性、方法、代码块、内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构

                 静态的方法内是不可以有this或super关键字的!

     static测试实例:

  1. package com.yyx.pratice;
  2.  
  3. public class JavaPratice {
  4. public static void main(String[] args) {
  5. Account a1 = new Account("abc123", 1000);
  6. Account a2 = new Account("abc456", 2000);
  7. Account a3 = new Account("abc456", 2000);
  8. System.out.println(a1);
  9. System.out.println(a2);
  10. System.out.println(a3);
  11. }
  12. }
  13.  
  14. class Account {
  15. private int id;// 账号
  16. private String password;// 密码
  17. private double balance;// 余额
  18. private static double rate = 0.05;// 利率
  19. private static double minBalance = 1;// 最小余额
  20. private static int init = 1000;
  21.  
  22. public Account(String password, double balance) {
  23. this.id = init++;
  24. this.password = password;
  25. this.balance = balance;
  26. }
  27.  
  28. public int getId() {
  29. return id;
  30. }
  31.  
  32. public void setId(int id) {
  33. this.id = id;
  34. }
  35.  
  36. public String getPassword() {
  37. return password;
  38. }
  39.  
  40. public void setPassword(String password) {
  41. this.password = password;
  42. }
  43.  
  44. public double getBalance() {
  45. return balance;
  46. }
  47.  
  48. public void setBalance(double balance) {
  49. this.balance = balance;
  50. }
  51.  
  52. public static double getRate() {
  53. return rate;
  54. }
  55.  
  56. public static void setRate(double rate) {
  57. Account.rate = rate;
  58. }
  59.  
  60. public static double getMinBalance() {
  61. return minBalance;
  62. }
  63.  
  64. public static void setMinBalance(double minBalance) {
  65. Account.minBalance = minBalance;
  66. }
  67.  
  68. @Override
  69. public String toString() {
  70. return "Account [id=" + id + ", password=" + password + ", balance=" + balance + "]";
  71. }
  72.  
  73. }

Java基础(basis)-----关键字final和static的作用的更多相关文章

  1. Java基础:关键字final,static

    一 . final 含义:adj.最后的,最终的; 决定性的; 不可更改的.在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了 ...

  2. Java基础(basis)-----关键字this和super的作用

    1.关键字this 可以用来修饰属性.方法.构造器:this理解为当前对象或当前正在创建的对象 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量 ...

  3. Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类

    final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...

  4. java基础只关键字final

    final关键字简述 final关键字是在编写java程序中出现频率和很高的关键字,如果想要更好的编写java程序,那么掌握final关键字的运用是非常必要的.让我们先看一下final关键字可以修饰的 ...

  5. java基础复习:final,static,以及String类

    2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...

  6. Java基础(basis)-----关键字break、continue、return的区别

       1.break      break只能用于switch语句和循环语句中,跳出当前循环:但是如果是嵌套循环, 则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环 for (int i ...

  7. 【转】Java关键字final、static使用总结

    转自:http://lavasoft.blog.51cto.com/62575/18771/   Java关键字final.static使用总结   一.final        根据程序上下文环境, ...

  8. Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  9. 转!Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...

随机推荐

  1. Ajax替换局部DIV层

    <a href="addgoods.jsp" onclick="createRequest('addgoods.jsp','show');return false; ...

  2. 蜕变成蝶~Linux设备驱动中的并发控制

    并发和竞争发生在两类体系中: 对称多处理器(SMP)的多个CPU 内核可抢占的单CPU系统 访问共享资源的代码区域称为临界区(critical sections),临界区需要以某种互斥机制加以保护.在 ...

  3. Tomcat启动报错:This file is needed to run this program

    Tomcat版本为 8.5.29. 1.情景 kill调用tomcat进程后,重启tomcat报如下错误: Cannot find /usr/local/apache-tomcat-/bin/setc ...

  4. 开发环境使用docker 快速启动 单机 RocketMq

    镜像说明 https://cr.console.aliyun.com/?spm=5176.2020520001.1001.8.kpaxIC&accounttraceid=176ddc4e-62 ...

  5. 转载:【Scala】使用Option、Some、None,避免使用null

    转载自Jason DingGitCafe博客主页(http://jasonding1354.gitcafe.io/)Github博客主页(http://jasonding1354.github.io/ ...

  6. 【Oracle】PL/SQL 显式游标、隐式游标、动态游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  7. 三维计算机视觉 — 中层次视觉 — Point Pair Feature

    机器人视觉中有一项重要人物就是从场景中提取物体的位置,姿态.图像处理算法借助Deep Learning 的东风已经在图像的物体标记领域耍的飞起了.而从三维场景中提取物体还有待研究.目前已有的思路是先提 ...

  8. 对于已经添加引用,还找不到类型或名字空间的错误及svn客户端清除用户帐号密码

    1 已经添加过引用,却找不到类型或名字空间. 可以看下项目的的.net framework版本是否一致. 项目(例如类库项目)右键(vs解决方案资源管理器)——>属性——>应用程序——&g ...

  9. Java 中的泛型

    泛型的一般意义: 泛型,又叫 参数多态或者类型参数多态.在强类型的编程语言中普遍作用是:加强编译时的类型安全(类型检查),以及减少类型转换的次数. Java 中的 泛型: 编译时进行 类型擦除 生成与 ...

  10. js获取当前日期方法(YYYY-MM-DD格式)

      var myDate = new Date(); var time = myDate.toLocaleDateString().split('/').join('-');将1970/08/08转化 ...