this关键字的作用

1、this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;

2、this可以调用成员变量,不能调用局部变量;

3、this也可以调用成员方法,但在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。而且在静态方法中不允许出现this关键字。

super关键字的作用

1、super代表对当前对象的直接父类对象的引用;

2、super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员);

3、super可以调用直接父类的构造方法,只限构造方法中欧使用,且必须是第一条语句。

static关键字的作用

staic是java中的一个关键字,单词本身是静态的意思

使用static修饰的成员成为静态成员,是属于某个类的;而不使用static修饰的成员称为实例成员,是属于类的每个对象的。

一个类的成员包括变量、方法、构造方法、代码块、和内部类,static可以修饰除了构造方法以外的所有成员

1、static修饰变量

  static属性属于这个类所有,即由该类创建的所有对象共享一个satic属性。static变量和非static变量都是成员变量,这是共同点,区别主要有:

  1)在内存中份数不同

    不管有多少个对象,static变量只有一份。对于每个对象,实例变量都会有单独一份

    非static变量好比水杯,一个人一个;static变量好比饮水机,大家共享

  2)在内存中存放的位置不同

    静态变量存在方法区中,实例变量存在堆内存中

  3)访问的方式不同

    实例变量:对象名.变量名

    静态变量:对象名.变量名,不推荐如此使用;类名.变量名,推荐使用

  4)在内存中分配空间的时间不同

    实例变量:创建对象的时候才分配了空间

    静态变量:第一次加载类的时候

2.static修饰方法

  可以通过对象名.方法名和类名.方法名两种方式来访问

3.satic修饰代码块

  当类被第一次加载时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化

4.static修饰内部类

  属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),可以访问外部类的静态成员

5.静态导入

  import static java.lang.Math.*;非导入类和接口,而是导入类和接口的静态成员

abstract关键字的作用

1、abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;

2、使用abstract可以用来修饰的类是抽象类,需要被继承;

3、使用abstract修饰的方法是抽象方法,需要被子类重写

final关键字的作用

1、final可以用来修饰类、方法和属性,不能修饰构造方法。

2、使用final修饰的类不能被继承,使用final修饰的方法不能被重写,

3、使用final修饰的变量的值不能被修改,所以就成了常量。

特别注意:final修饰基本类型变量,其值不能改变,由原来的变量变为常量;但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变

class Test {
public static void main(String[] args) {
final Dog dog = new Dog("小黄");
dog.name = "大黄";//正确
dog = new Dog("黄黄");//错误
}
}

java中的this、super、static、final、abstract关键字的作用的更多相关文章

  1. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

  2. Java中this与super的区别【6】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...

  3. JAVA中this和super用法

    参考网上资料和自行理解总结java中this和super中各自用法及其差异 <一>. this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对 ...

  4. final和abstract关键字的作用

    final和abstract关键字的作用 final和abstract是功能相反的两个关键字,可以对比记忆 abstract可以用来修饰类和方法,不能用来修饰属性和构造方法:使用abstract修饰的 ...

  5. Java并发编程学习笔记 深入理解volatile关键字的作用

    引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识.网上关于volatile的 ...

  6. java笔记之static&final&abstract

    知识需要不断回顾和重新认识 一:static static类型变量初始值只能被赋值一次,它的整个生命周期是源程序,程序结束前变量都不会被释放. 例如: for(int i = 0; i<10; ...

  7. Java中public,private,final,static等概念的解读

    作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...

  8. [转] Java中public,private,final,static等概念的解读

    作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...

  9. this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

    1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     ...

随机推荐

  1. 《一头扎进》系列之Python+Selenium框架设计篇1-什么是自动化测试框架-价值好几K的框架,不看别后悔,过时不候

    1. 什么是自动化测试框架 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法:另一种定义认为,框架是可被应用开发者定制的 ...

  2. 【Java SE】使用Javacv截取视频图片

    [Java Web开发学习]使用Javacv截取视频图片 转载:https://www.cnblogs.com/yangchongxing/p/9482935.html github地址:https: ...

  3. 【Java Web开发学习】Spring消息-ActiveMQ发送消息

    ActiveMQ发送消息 转载:http://www.cnblogs.com/yangchongxing/p/9042401.html Java消息服务(Java Message Service, J ...

  4. 2016/09/22 mapreduce

    1.概念 Mapreduce是一个计算框架,表现形式是有个输入(input),mapreduce操作这个输入,通过本身定义好的计算模型,得到一个输出(output),也就是我们需要的结果. 在运行一个 ...

  5. 使用mongoshake进行oplog同步读取,解决乱码问题

    mongoshake 是个开源的用户mongo数据迁移和同步的工具,支持往各种目标源头写数据 具体:https://github.com/alibaba/MongoShake 有业务场景想把oplog ...

  6. C# get md5 from bytes

    static byte[] GetBytesFromDic(Dictionary<string,string> dic) { if(dic==null || !dic.Any()) { r ...

  7. leetcode菜鸡斗智斗勇系列(3)--- Jewels and Stones珠宝和钻石

    1.原题: https://leetcode.com/problems/jewels-and-stones/ You're given strings J representing the types ...

  8. TCPUDPDbg(TCP UDP 网络调试工具)

    下载链接:https://pan.baidu.com/s/1oan44qop73X5VuBcE-rjeA  提取码:v0oa

  9. 活久见: maven pom 竟然都会崩溃!

    问题是: 我的应用的pom 并没有任何报错,但是代码报错,而且编译不通过. 如下,我本地项目,从 spring-cloud-alibaba-dependencies 0.2.1.RELEASE 升级到 ...

  10. IT兄弟连 HTML5教程 CSS3属性特效 CSS3分栏布局

    CSS3中新出现的多列布局(multi-column)是传统HTML网页中块状布局模式的有力扩充.这种新语法能够让WEB开发人员轻松的让文本呈现多列显示.我们知道,当一行文字太长时,读者读起来就比较费 ...