Java复习笔记6--Final&Static

Final & Static

final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。        注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

final类

final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

final方法

如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。        使用final方法的原因有二:        第一、把方法锁定,防止任何继承类修改它的意义和实现。        第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

final变量

final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

final参数

当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

void mss(final int i){

? i++;//错误

}

static

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。

static变量

静态变量在内存中只有一个拷贝,jvm只分配一次内存

实例变量每生成一个实例就分配一次内存

static方法

static代码块

static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次

public class Test{

? private int a;

? static {

? ….

? }

}

一个static的main方法,这样JVM在运行main方法的时候可以直接调用而不用创建实例。

static和abstract

It‘s not a logical contradiction, it‘s a language shortcoming, multiple other languages support this notion. "abstract" mean "implemented in subclasses", "static" means "executed on the class rather than class instances" There is no logical contradiction

static 和final一起使用

对于被static和final修饰过的实例常量,实例本身不能再改变了,但对于一些容器类型(比如,ArrayList、HashMap)的实例变量,不可以改变容器变量本身,但可以修改容器中存放的对象,这一点在编程中用到很多。

时间: 2024-10-24 12:19:08

Java复习笔记6--Final&Static的相关文章

java学习笔记之面向对象static,final关键字

java学习笔记之面向对象static,final关键字 一.static关键字 1.概述: static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中. 2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值) /* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */ 3.static的特点 /* 1.在同一个类中,静态成员只能访问静态成员,非静

java修饰符public final static abstract transient

JAVA 修饰符public final static abstract transient 关键字: public final static abstract ... 1.public protected default private 组 位置                        private      默认      protected        public 同一个类                    是            是         是         

Java复习笔记1--抽象类和接口

这一系列是今年7月份至8月份为实习面试所复习的Java功课~ 抽象类和接口 是Java 对抽象概念进行定义的2种机制. 抽象类 一个类没有足够的信息来描述一个具体的对象,需要其他具体的类才支撑它. 抽象类体现了数据抽象的四小,是实现多态的一种机制. 它定义了一组抽象的方法,至于这组抽象方法的具体表现形式有派生类来实现.同时抽象类提供了继承的概念,它的出发点就是为了继承,否则它没有存在的任何意义.所以说定义的抽象类一定是用来继承的,同时在一个以抽象类为节点的继承关系等级链中,叶子节点一定是具体的实

Java复习笔记7--Java封装

Java封装 getter() & setter() 使用封装有三大好处: 1.良好的封装能够减少耦合. 2.类内部的结构可以自由修改. 3.可以对成员进行更精确的控制. 4.隐藏信息,实现细节. Java继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率. 实际上继承者是被继承者的特殊化,它除了拥有被继承者的特性外,还拥有自己独有得特性.

《JAVA学习笔记 (final关键字)》

[14-9]面向对象-final关键字 /* 继承的弊端,打破封装性. 不让其他类继承该类,就不会有重写. 怎么能实现呢?通过Java中的一个关键子来实现,final(最终化). [final关键字] 是一个修饰符,可以修饰类,方法,变量(成员变量,局部变量,静态变量). [特点] 1,final修饰的类是一个最终类,不能派生子类. 如果类中出现部分可以重写,部分不可以,怎么办?只要让指定的方法最终化就可以了. 2,final修饰的方法是最终方法,不可以重写. 3,final修饰的变量是一个常量

java学习笔记四:static的几个角落及小谈多态

最近有点事情,没有及时更新笔记,学习不可弃,总结一下最近的学习,其中重点是static的一些应用,多态是一种设计理念,了解较容易,想如火纯清的确不是一件容易的事情. 对于static,主要有两点是我所学习的. 1.首先简单的介绍一下static的定义.static是静态的意思,就是说这个类变量或者类方法不需要实例化就可以使用.使用static的变量是类变量,也成为静态域(static field).这些是static的基本语义,了解了这些,继续向下看. java核心技术(卷一)对于静态有这样一段

Java复习笔记11--Stack&Heap

stack 栈 & heap 堆 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2.栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据可以共享.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢. Ja

大四Java复习笔记之Java基础

一.static和final 学习Java那么久,好像自己就没有怎么用过final,所以对fianl的理解不够.final不但出现在变量的修饰里面,还可以出现在方法和类的修饰.final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.final方法锁定方法,子类不能覆盖修改方法,同时方法会高效.final变量final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变,final是指引用的变量不能不能变,但是引用所指向的对象中的内容可以变,同时如果是null的

Java复习笔记8--内部类

Java内部类 在<Think in java>中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响.接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整. 其实使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,但是如果我们不需要解决多重继承问题,那么我们自然可以使用其他的编码方式,但是使用内部类还能够为我们带来如下特性(摘自<Think in java>