JAVA学习笔记--简介几个常见关键字static、final、this、super
一、static
static(静态的),可以放在类、方法、字段之前。
通常,当创建类时,就是在描述那个类的外观与行为。除非用 new 创建那个类的对象,否则,实际上并未获得任何对象。执行 new 来创建对象时,数据存储空间才会被分配,其方法才可被外界调用。但是有两种情形上述方法无法解决。其一:只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象;另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起,也就是说,即便没有创建对象,也能够调用这个方法。
static关键字可以满足上述要求。当声明一个事物是 static 时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起,因此,即便从未创建某各类的任何对象,也可以调用其static方法或者访问其static域。
将static关键字放在定义之前,就可以将字段或方法设定为static。
1)static类
当一个类定义为static类型时,表明这是一个静态类。如果一个类被声明为静态类,那么只有一种情况:静态内部类(嵌套类)。关于嵌套类,我会在其他地方详细说明。
2)static方法
通常,将一个方法声明为静态的,表明可以直接通过 “类名.方法名” 的方式来调用这个方法,而无需创建该类的对象,但是会有一些限制:
· 静态方法只能调用静态方法,不能在静态方法中调用非静态方法;
· 静态方法只能访问静态数据成员
· 静态方法不能以任何方式引用 this 或 super
3)static数据成员
当一个数据成员被声明为静态的时,这个数据是唯一的,因为对于每个类来说,一个static字段只有一份存储空间(非static字段是每个对象都有一份存储空间),当改变这个字段时,在程序的所有地方这个字段都会被修改。引用也很方便,直接 “类名.静态变量名”即可。
二、final
JAVA中使用final关键字,通常表明这个地方是不可被改变的。
1)final数据
final数据用来表明一个不可被修改的数据。对于基本数据类型,final使数值保持不变;对于对象引用,final使引用恒定不变,即一旦引用被初始化指向一个对象,就无法再让它改为指向另一个对象,但是对象自身是可以被修改的。对比static来说,static表明这个域只有一份存储空间,但是其值是可以改变的;final表明这是一个常量。因而既是static又是final的域只占据一段不能被改变的存储空间,类似于“全局变量”,用大写表示。
2)final方法
使用final方法可以把方法锁定,防止任何继承类修改它的含义(不可被覆盖)。final方法的速度比非final方法要快,因为在编译时已经静态绑定了,不需要进行动态绑定,只是这样带来的效率又会引起一些其他问题,现在已经不再需要final方法去进行优化,只有想要明确禁止覆盖时,才将方法设置为final的。
另外,所以private方法都隐式地声明为final的,是不能被覆盖的。当你试图在子类中覆盖父类的private方法时,你不是在覆盖,而是创建了一个与父类的该方法方法名一样的新方法。
3)final类
当一个类被定义为final时,就表明我们不打算继承该类,而且也不允许别人这样做,这个类将不会有子类。
三、this
当你需要在方法的内部获得对当前对象的引用时,需要用到this关键字。 this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this关键字主要有两个应用:
1)返回对当前对象的引用,因而可以在实例代码中调用本类的其他方法或成员变量:this.方法名,this.成员变量名;
2)将当前对象传递给其他方法,这样可以让构造器调用同一个类的其他构造器,只是调用时,this语句要放在构造器的第一行。另外,this只能调用一个构造器,而不能调用两个。
四、super
关键字super有两种用途:
1)调用父类的构造器:
super(); // 调用父类的无参构造器(默认构造器),子类一般都会隐式调用父类的默认构造器
super(参数); // 调用父类的与参数匹配的构造器,
super语句必须出现在子类构造方法的第一行,这是显式调用父类构造方法的唯一方法。在任何情况下,构造一个类的实例时,将会沿着继承链一一调用父类的构造器,确保初始化。
2)调用父类的方法:
super.方法名(参数);
注:this和super不能同时出现在一个构造器里面;
this()和super()均不能在static环境中使用;
可以这样理解,this是指向当前对象的,super是指向父类的。
JAVA学习笔记--简介几个常见关键字static、final、this、super的更多相关文章
- 疯狂java学习笔记之面向对象(四) - this关键字
Java中this关键字主要有以下两个方法: 1.this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表 ...
- java学习笔记(八):继承、extends、super、this、final关键字
继承解决代码重用的问题,方便管理和维护代码. 继承 子类拥有父类非private的属性,方法. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展. 子类可以用自己的方式实现父类的方法. Java ...
- Java学习笔记(十八):static关键字
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记08--泛型
java学习笔记08--泛型 泛型可以解决数据类型的安全性问题,它主要的原理,是在类声明的时候通过一个标识标识类中某个属性的类型或者是某个方法的返回值及参数类型.这样在类声明或实例化的时候只要指定好需 ...
- java学习笔记5--类的方法
接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...
- java学习笔记(2)注释、public lcass、class、标识符、字面值、变量
java学习笔记(1)中说过了java的一些基础知识,发展史,特点,编译和运行过程,配置环境变量等,接下来开始介绍java的语法等只是点 关于java源程序中的注释: *什么是注释?注释的作用是什么 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- 为何.NET Core控制台项目发布后是一个dll文件,而不是exe文件?
项目中有一个.NET Core控制台项目叫ConsoleCoreApp,写好代码后准备发布: 结果发布后生成的是一个dll文件...为不是一个exe的可执行文件: 后来了解到.NET Core的项目分 ...
- goldengate简单配置
goldendate配置单项同步 源数据库 extract抽取进程 trail文件 复制进程 目标进程 由于最开始配置goldengate的时候,没有弄清除原理,导致出错了都不知道怎么解决. 最 ...
- mysql5.7关于使用到OR是否会用到索引并提高查询效率的探讨
相信很多人在mysql中看到了where条件中使用到了or就会以为这样是不会走索引的,通常会使用union all或者in 来进行优化,事实并不是想象的这样具体问题具体分析. 下面我们来看看 首先我们 ...
- Ajax与Xml
Ajax就是用javascript来实现的 主要是用来实现页面的局部刷新,比如当你在百度上回答别人的问题时候,没有登录,页面会弹出一个窗口,让你输入账号和密码,这就是利用ajax来做的,如果不是aja ...
- ping ipconfig telnet
//查看本机IP ipconfig 内网拼其他机子, 其他机子一定要关闭防火墙 ping 192.168.198.46 telnet 192.168.198.46 3000 拼端口 会跳转 ...
- php ajax confirm 删除
<button name="del" type="button" class="btn btn-primary btn-xs" id= ...
- oracle相关操作,存储、临时表空间、用户操作、启动过程
表空间:此空间是用来进行数据存储的(表.function.存储过程等),所以是实际物理存储区域.临时表空间:主要用途是在数据库进行排序运算[如创建索引.order by及group by.distin ...
- android4.4 重启的开机不播放开机铃声,按power键的开机播放开机铃声
平台:A33Android4.4Linux3.4 功能描述:实现重启的开机不播放开机铃声,按power键的开机播放开机铃声 一,无论关机还是重启都会经过rebootOrShutdown这个方法,在方法 ...
- Home Assistant系列 -- 自动语音播报天气
在树莓派上要让 Home Assistant 发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...
- C++ —— 类中static和const关键字声明变量的初始化方式总结
在类中声明变量/常量时,经常会用到static.const关键字.对于该变/常量的初始化问题,网上有许多相关文章,但是大多不够完善,或者存在错误.经过实际验证,总结如下: (注明:测试编译平台为VS2 ...