final:

  1. 修饰类:类不能被继承
  2. 修饰方法:方法不能被重写
  3. 修饰变量:不能修改变量的指向,且只能赋值一次
    1. 全局变量是有默认值的,所以如果用final修饰全局变量,能在定义的同时赋值,或在构造函数中赋值(注意,其他方法不能给final全局变量赋值,会报错)
    2. 局部变量不会默认赋值,因此如果用final修饰,可以初始化一次
    3. 注意:final变量是不能修改指向(即地址),但不代表不能改值,引用类型的话是可以改值的

代码:

1.赋值问题final变量可以在构造函数内赋值,这个特性可能会使人疑惑。因为全局变量是会默认赋值的,并且这个赋值操作是先于构造函数执行的,所以可以在构造函数中赋值看起来似乎是不可能的。但这确实是可以的,但也只能是构造函数,其他方法并不行。这是因为Java有一个“空白final”的东西,"空白final"指的是被申明final但未给初值的域。此外,Java还规定空白final在使用之前必须初始化。二者兼和,就出现了上面所说的特殊情况eg.class  Test{final int m =3;//,正常初始化,并赋值为3,不存在“空白final”final int  n; //正常初始化,并初始化为“空白final”Test(){n = 3; // “空白final”被赋值为3}/** 注意,在非构造方法内给”空白final“赋值是非法的*  final int error ;*  void show(){*      error = 3; 这是会报错的            *   }}
2.改值问题calss Test1{final int m =3; //基本数据类型,m里面存放的是常量3的地址,所以m的值是无法改变的final Test2 test2;Test1(){test = new Test2();test.m = 4; //合法test.n = 8; //合法test  = new Test2();//不合法,test不能指向新的地址}}class Test2{int m = 3;int n= 6;}

static 方法


“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

  • static在对象存在前就存在(不是类存在前)
  • static不能访问非静态方法和变量,反之可以
  • static方法无法使用this,应为不存在对象

static变量


  • static成员变量的初始化顺序按照定义的顺序进行初始化。

  • 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化

static代码块


static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

优化前,每次创建两个对象

class Person{private Date birthDate;public Person(Date birthDate) {this.birthDate = birthDate;}boolean isBornBoomer() {Date startDate = Date.valueOf("1946");Date endDate = Date.valueOf("1964");return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;}
}

优化后,只需创建一个

class Person{private Date birthDate;private static Date startDate,endDate;static{startDate = Date.valueOf("1946");endDate = Date.valueOf("1964");}public Person(Date birthDate) {this.birthDate = birthDate;}boolean isBornBoomer() {return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;}
}

注意:

 class staticTest{
static int a=47;
static String[] s = new String[10];}staticTest t1 = new staticTest();
staticTest t2 = new staticTest();t1.a和t2.a是同一个,不是两个
t1.s和t2.s是也是同一个,不是两个

static final

  • java中的常量
  • 变量名全部大写()
  • 必须在申明的同时赋值
  • 由类名.访问
  • 在编译时自动替换,效率高
  • 不可改变
public static final double PI = 3.1415926;

java final static相关推荐

  1. java中abstract,interface,final,static的区别

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: abstract, interface, final, static 一,抽象类:abstract 1,只要有一个或 ...

  2. java final内存机制_Java中的内存处理机制和final、static、final static总结

    装载自:http://blog.csdn.net/wqthaha/article/details/20923579 Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JV ...

  3. Java的static,final,代码块,内部类,抽象类,接口等

    Java的static,final,代码块,内部类,抽象类,接口等 1 static关键字月final关键字 1.1 static static表示静态.可以修饰属性,方法,代码块内部类等,总结如下: ...

  4. java中static、final、static final浅析

    final final可以修饰类.属性.方法.局部变量.参数,不能修饰接口! final修饰类:该类不能被继承(解释了为什么不能修饰接口,不过接口里面的属性.方法等是可以用final修饰的): fin ...

  5. java中static、final 和 static final之间的区别

    java中static.final 和 static final之间的区别 static可以修饰:全局属性,方法,代码块,内部类(静态内部类或嵌套内部类) 由于静态属性和方法是属于该类的所有对象的,所 ...

  6. java final 初始化_[转]java static final 初始化

    1.static修饰(类变量)一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为privat ...

  7. Java final与static

    Java final关键词 修饰类 该类不能被继承 修饰方法 该方法不能被重写 修饰变量 该变量只有一次赋值机会 Java static关键词 修饰方法 不能访问外部的非static属性

  8. java中static、final、static final的区别

    总结一: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始 ...

  9. 转:java中static、final、static final的区别

    http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性 ...

最新文章

  1. 【C++】C/C++ 中的单例模式
  2. Wamp与IIS同时在Windows7下运行解决方法
  3. 王佩丰第2讲-excel单元格格式设置 笔记
  4. QT信号和槽函数学习笔记
  5. 老用户们,苹果没有忘了你们!
  6. ssis zip压缩文件_在SSIS中处理参差不齐的正确格式的文件
  7. 收藏十二:ExtJs
  8. WinForm程序中使用Unity3D控件
  9. C语言商品超市管理系统课程设计,C语言课程设计超市信息管理系统.doc
  10. win7美化_Windows桌面美化记(二)这可能是你看过最详细的美化教程
  11. 每天被信息轰炸的你,如何辨别新闻真假?
  12. UE4 C++ 通过Spline绘制任意道路
  13. MATLAB 整数小数负数十进制转换为十六进制
  14. IOS之 UITableview的简单使用
  15. Vue3 京东到家项目实战第二篇(商家详情页面及购物车完整逻辑开发) 进阶式掌握vue3完整知识体系
  16. 四、vue 项目使用高德地图画面(多边形)
  17. 一键图解iframe标签属性以及使用
  18. Python爬虫 爬取豆瓣电影TOP250
  19. 谷歌浏览器被搜狗劫持问题
  20. 塑料袋吹膜机多少钱一台_塑料袋制袋机多少钱一台-卓越机械(在线咨询)-塑料袋制袋机...

热门文章

  1. 循环打印三角形 java 0913
  2. 1910101811-2
  3. dj鲜生-用户中心-个人信息
  4. 爬虫-10-响应对象的常用属性
  5. Django + react + 阿里云ecs 前后端分离部署上线
  6. 【转】微信开发出现“该公众号暂时无法提供服务,请稍后再试”的坑
  7. 016医疗项目 数据字典(概念和在本系统中的应用)
  8. Netty ChannelOption 解释
  9. iScroll4下表单元素聚焦及键盘的异常问题
  10. 临时抱佛脚 国产手机经典匮乏原因大解析