this

  • 理解为当前对象
//测试
public static void main(String[] args){
Person person = new Person(3, "xiaoMing");
}
//创建一个类:
class Person{
int age;
String name;
public Person(int age,String name){
this.age = age; //this:当前对象,在这里是指person这个对象。
this.name = name;
}
}
  • 可以调用构造器

    ①调用本类的其他构造器

    ②不能调自己

    ③构造器中使用this,则必须放在构造器的 首行
class Person{
int age;
String name;
public Person(int age){ //①
this.age = age;
} public Person(int age, String name){
this(age); //调用① 构造器
this.name = name;
}
}
//测试:
public static void main(String[] args){
Person person = new Person(3, "xiaoMing");
}

super

  • ① 若子类的属性(方法等)和父类的重名,可以用super.属性(方法等)调用父类的属性(方法等)【重写是个范例】
  • ② super调用父类构造器

    在子类构造器中声明super,则必须声明在首行,this和super不能同时出现

    在构造器首行,没有显式出现super,默认是super()构造器

static

  • 不能修饰构造器
  • static修饰的变量,叫静态变量,没有用static修饰的变量叫 实例变量,静态变量内存种独一份,被所有对象共享,当且仅当类被初次加载时会被初始化,而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
  • 静态变量在内存中存在一份,在方法区中的静态域中。
  • static修饰方法,叫静态方法,静态方法中只能声明静态属性,方法。

    非静态方法即可调用静态方法也可调用非静态方法
  • 在static方法中,不能使用this和super关键字

final

  • final修饰的属性可以被赋值的地方有:显式初始化,代码块中初始化,构造器中初始化
class Person{
int age ;
String name;
final int C = 3; //显式初始化
final int B ;
final int A ; {
B = 3; //代码块中赋值
} public Person(){
A = 3; //构造器中赋值
} public Person(int n){
A = n; //若用构造器赋值,则每写一个构造器都要赋值一次,
//因为有的构造器不一定用
}
}
  • 修饰类:此类不能被继承,'断子绝孙',不能说明该类中的属性和方法是final的
  • 修饰方法:此方法不能被重写,但是仍然可以继承
  • 修饰属性:

    ①若该属性是基本数据类型,则不能被修改

    ②若该属性是引用数据类型,如数组,对象,则该对象,数组的值可以被修改,

    但是引用不能修改
//1.
class Dog1{
String name;
//编译错误,age必须赋值
final int age = 3;
}
//测试
final Dog1 dog = new Dog1();
System.out.println(dog);
dog.name = "dd";
System.out.println(dog.name); //输出dd
dog.name = "cc";
System.out.println(dog.name); //输出cc,里面的值可以改 dog = new Dog1(); //编译错误,引用不能修改
//2.
final int[] arr = {11,33,44};
arr[2] = 2; //可以修改
System.out.println(arr[2]); //输出2
arr = new int[]{1}; //error,编译错误,引用不能修改
  • final还可以修饰局部变量:作用就是让局部变量不能再修改了
class Person{
public void show(final int a){
a = 3; //error,表示a只能使用不能修改
} public void show2(int a){
final int b = 3; //表示b不能修改了
b = 4; //error
}
} static final 修饰属性:表示全局常量

关键字——this,super,static,final的更多相关文章

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

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

  2. java面试官:兄弟简单谈谈Static、final、Static final各种用法吧

    前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...

  3. java中的Static、final、Static final各种用法详解

    前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...

  4. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  5. java基础9 main函数、this、static、super、final、instanceof 关键字

    一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问  原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...

  6. Java 构造方法及关键字:this、super、final、static

    一.构造方法 1.概念 在创建对象时,需要明确对象的属性值,即当使用new关键字创建对象时,同时给对象的属性初始化值. 这就需要用到构造方法.构造方法的格式: 修饰符 构造方法名(参数列表){ } 构 ...

  7. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

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

  8. Java中static、this、super、final的用法

    一.          static 请先看下面这段程序: public class Hello{public static void main(String[] args){//(1)System. ...

  9. java中static、this、super、final用途、用法及实例

    一.static 请先看下面这段程序: public class Hello { public static void main(String[] args){ //(1) System.out.pr ...

随机推荐

  1. 不仅仅是一把瑞士军刀 —— Apifox的野望和不足

    声明:本文内容不涉及任何 Apifox 的功能介绍,一来网上这方面的文章已经汗牛充栋,二来 Apifox 本身的用户体验做的非常好,对于开发者而言学习成本基本为零. 阮一峰:不管你是前端开发还是后端开 ...

  2. 8.Jenkins进阶之流水线pipeline基础使用实践(1)

    ​目录一览: 0x01 基础实践 (1) Maven 构建之 Pipeline Script (2) Maven 构建之 Pipeline Script from SCM (3) Jenkins pi ...

  3. jquery的常用API

    1, 增 $('body').append('<h1>大标题</h1>') $('body').append('<h2>二标题</h2>') $('&l ...

  4. node.js - 路由、中间件、mysql

    这几天天天搞到这么晚,我看今天的内容看起不多啊,不知道为什么学着学着就到了这么晚.今天的内容还是有点多哈,有点自我矛盾了,再次一一道来. 1. 首先今天先看到路由的概念,什么叫做路由? 路由就是映射关 ...

  5. ArcGIS使用技巧(一)——数据存储

    新手,若有错误还请指正! 日常接触ArcGIS较多,发现好多人虽然也在用ArcGIS,但一些基础的小技巧并不知道,写下来希望对大家有所帮助. ArcGIS默认的存储数据库是在C盘(图1),不修改存储数 ...

  6. Ubuntu22.04搭建PWN环境

    前言 最近尝试在Ubuntu最新的版本22.04版本上搭建PWN环境,有了之前在kali上搭建的经验,总的来说问题不大.但搭建的时候还是有不少地方出错了,好在搭建的过程中不断的拍摄快照,所以整个过程还 ...

  7. Node.js 中的进程和线程

    线程和进程是计算机操作系统的基础概念,在程序员中属于高频词汇,那如何理解呢?Node.js 中的进程和线程又是怎样的呢? 一.进程和线程 1.1.专业性文字定义 进程(Process),进程是计算机中 ...

  8. Nginx代理websocket为什么要这样做?

    Nginx反向代理websocket 示例: http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } s ...

  9. 女朋友面试回来抱怨说会redis,面试官问了一堆redis

    Redis 优缺点及特点 什么是Redis?简述它的优缺点? Redis本质上是一个Key-Value类型的内存数据库,类似MemoryCache,整个数据库统统加载在内存当中进行操作,定期通过异步操 ...

  10. linux篇-Centos7jdk安装

    2.1查看现有JDK #rpm -qa|grep jdk (如果有其他版本的JDK建议卸载) 卸载其他版本的JDK命令 #yum –y remove java-1.6.0 #yum –y remov ...