Java中static和final的难点

  最近才开始学JAVA,惭愧至极。所以更要努力学了,落后太多,需要花doule份时间去迎头赶上。最近学基础发现static和final的用法有点逆天,是OC语言用的少呢还是自己技术太渣。JAVA基础讲的语法实在是有点多,所以写个随笔记录一下。

  先讲讲final,这个还算少一点的。首先final的中文翻译过来就是最终的意思,意思就是不能改变的,从这一点就知道以该修饰符修饰的都是固定不变的(怎么这么像static呢)。再来讲讲final作为修饰符的四种常见的情况。1:final修饰变量,被修饰的变量是不能修改值的,eg:final int a = 1;一般用法是在固定的某些值,像IOS开发里面其实就是机型啊,屏幕尺寸之类的,通知名称之类的。JAVA中目前的使用情况我还不是很清楚,后面应该还是有一些确定的,像URL地址之类的肯定是不变的,这里感觉和static结合用到的地方有点多。2:final修饰类,被修饰的类是不能被继承的,一般用于制作工具类,不希望被继承。常见的是八大基本类型对应的类。Byte,Short,Integer,Long,Float,Double,Character,Boolean。这个肯定是不能写继承类的,其实也没必要继承。3:final修饰的对象,被修饰的对象地址是不能变的,eg:final Person p = new Person;此时的p指向是不能修改的,也就是不能将别的p1,p2之类的赋值给p对象,此时是不允许的直接报错。但是这里又一个坑就是p对象的成员变量是可以修改地址的。eg:p.name = "123";随便怎么赋值都是会改变的。这里把p当作是容器,容器不允许变动,但是容器内东西是可以改变的。4:final修饰的方法是不允许被子类覆盖的,因为都已经是最终的方法,但是可以被继承,父类的private成员方法不能被子类覆盖,因此private方法默认是final修饰的。注意,final不能修饰构造方法。这里差不多把final讲完了。接下来讲讲static。

  static表示全局或者静态的意思。可以修饰成员变量和成员方法,还可以修饰代码块。static作为修饰符,只创建一次,这个是为了节约内存,如IOS一样。static修饰的成员变量只能static修饰的方法去访问,并且static修饰的成员变量通过类名去访问。被static修饰的方法也是用类名去访问。不能用this和super字样,因为两者对应的都是类对应的对象。注意点:static修饰的代码块称为静态代码块。JVM家在类时会执行这些静态代码块。优先于Main方法执行,只会被执行一次。可以做初始化某些类的成员变量的初始值。

原文地址:https://www.cnblogs.com/paoxiaoqianzibi/p/6950938.html