this关键字

普通方法中,this总是指向调用该方法的对象。

构造方法中,this总是指向正要初始化的对象。

this区分成员变量和全局变量的作用,在当前类中可以省略。

this的常用方法:

让类中的一个方法,访问该类的另一个属性或方法。

使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中使用,并且必须位于构造方法的第一行。

并且this关键字不能与static共同使用。

示例:

public class Test{

int a,b,c;//全局变量

Test(){//无参构造

System.out.println("正要new一个对象");

}

Test(int a,int b){//有参构造

this();//调用无参构造要位于第一行

a=a;//这里指的是局部变量而不是成员变量

this.a=a;//这样就区分了成员变量和局部变量

this.b=b;

}

Test(int a,intb,int c){

this(a,b);//调用无参要位于第一行

this.c=c;

}

void sing(){}//方法

void chifan(){

this.sing//调用本类中的sing方法

System.out.println("回家吃饭");

}

public static void main(String[] args){

Test i=new Test(2,3);//创建对象并调用两个的有参构造方法

i.chifan;

}

}

}

static关键字:

在类中,用static声明的成员变量为静态成员变量(类属性,类变量)从属于类,代表整个类的属性,为该类所有对象共享。

对于该类的所有对象来说,static成员变量只有一份,所以被该类所有对象共享。

可以使用对象.属性调用,不过一般使用,类名的属性名。

用static声明的方法为静态方法

1.不需要对象,就可以调用(类名.方法名)

2.静态方法中不能使用this关键字(this必须优先创建对象)

3.在静态方法中无法访问非静态成员变量,反之可以。(内存中分配空间时间不一样)

示例:

public class TestP{

int a;//成员变量

static int width;//静态成员变量

static void gg(){//静态成员方法

System.out.println("gg");

}

void tt(){//普通方法

System.out.println("tt");

}

public static void main(Strin [] args){

Test hi=new Test();

Test.width=2;

Test.gg;

h.gg;//通过引用也可以访问static变量或方法,不过一般使用类名。static成员名来访问。

gg();

}

}

静态成员变量(类变量)和成员变量的区别?

1.内存中保存的位置不同,成员变量保存在堆中,静态成员变量在方法区中

2.内存中保存份数不同,成员变量是每个对象一份,类变量是所有对象一份。

3.访问方式不同,成员变量:对象名.属性 stu.name="张三";类变量:类名.属性Test.name="李四";

4.在内存中分配的时间不同:成员变量:在创建对象时。 类变量:在第一次加载类的时将数据保存到方法区中分配空间。

使用static修饰代码块: 创建对象之前会被执行并按先后顺序。

格式: {

//代码

}

类变量代码块:使用static修饰,先于代码块和构造方法执行,并只执行一次

格式:static {

//代码

}

使用场景:在创建对象之前只做一次对象初始化或在创建对象之前执行某段通用代码。

静态代码---->代码块---->构造器---->方法 (先后顺序)

this关键字和static关键字的更多相关文章

  1. abstract关键字、final关键字、static关键字、访问修饰符详解

     abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:

  2. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  7. java中this关键字和static关键字和super关键字的用法

    this关键字 1. this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性: 2.可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数(这里面上面有个 ...

  8. 构造方法,this关键字,static关键字,封装,静态变量

    1.构造方法 构造方法是一种特殊的方法,是专门用于创建/实例化对象的方法. 构造方法根据是否有参数分为两类:1.无参构造方法  2.有参构造方法 1.1无参构造方法 无参构造方法就是构造方法中没有参数 ...

  9. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  10. 构造方法,this关键字,static关键字,封装

    1.构造方法 定义:构造方法是指实例化对象的方法 语法:[修饰符]  类名(参数){    } 根据有无参数分为有参构造和无参构造 1)有参构造 语法:[修饰符]  类名(type 实例变量,int ...

随机推荐

  1. crawler 听课笔记 碎碎念 3 关于python的细枝末节的回顾复习

    和廖雪峰大神的教程学了几遍后,还是出现了许多不足,于是就做一些回顾,列出一些python的细节问题,有一些就提一下,如果发现不清楚的话 还请移步https://www.liaoxuefeng.com/ ...

  2. [LOJ#2743][DP]「JOI Open 2016」摩天大楼

    题目传送门 DP 经典题 考虑从小到大把数加入排列内 如下图(\(A\) 已经经过排序): 我们考虑如上,在 \(i\) ( \(A_i\) )不断增大的过程中,维护上面直线 \(y=A_i\) 之下 ...

  3. 嗯 想写个demo 苦于没数据

    step 1: 来点数据: 各种数据 随你便了. step 2: 来个 服务端 step 3 : 客户端 调用

  4. Linux下的openssh详解

    前言 SSH(Secure Shell)是一个提供数据通信安全.远程登录.远程指令执行等功能的安全网络协议,由芬兰赫尔辛基大学研究员Tatu Ylönen,于1995年提出,其目的是用于替代非安全的T ...

  5. Git详解之初次运行

    配置文件 一般在新的系统上,我们都需要先配置下自己的 Git 工作环境.配置工作只需一次,以后升级时还会沿用现在的配置.当然,如果需要,你随时可以用相同的命令修改已有的配置. Git 提供了一个叫做 ...

  6. Docker基础内容之仓库

    前言 Docker提供了开放的中央仓库dockerhub,同时也允许我们使用registry搭建本地私有仓库.搭建私有仓库有如下的优点: 节省网络带宽,提升Docker部署速度,不用每个镜像从Dock ...

  7. SpringCloud与微服务系列专栏

    一. 前置知识 学习SpringCloud之前需要具备和掌握如下框架和工具的使用:SpringMVC,Spring,Spring Boot,Mybatis,Maven,Git. SpringCloud ...

  8. oracle问题之数据库恢复(三)

    可能很多人在做数据库恢复时,都遇到过如下错误: SQL> recover database; ORA: recovery session canceled due to errors ORA: ...

  9. Spring 核心功能演示

    Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot, ...

  10. YYC松鼠短视频系统上传视频会被压缩的问题如何解决?

    uni.chooseVideo({ count: 1, compressed: false, sourceType: ['album', 'camera'], success: (res) => ...