java中this关键字和static关键字

Java中this关键字

方法中的this,是该方法被谁调用,this就指的是谁,this指的是本对象

  1. this.属性:this可以省略,如果方法中的变量名与属性名一样时,为了区别,this不可省略
  2. this.方法:在类中的一个对象方法调用另一个对象方法时,可以用this,也可以省略,类方法中不能使用this
  3. this():this()可以用来访问本类中的构造方法

this(): 作用开辟空间,一定要先开辟空间再执行其他内容:

注意:super()和this()完全相同,

super()是调用父类的构造函数

this的作用如下:

  • this()可以访问本类中的构造方法
  • this()不能在普通的方法中使用,只能在构造方法中使用
  • this()在构造方法中使用必须时第一条语句
  • this()可以添加相应的参数,调用有参构造方法
  • 在同一个类中,两个构造方法不能通过两个this相互调用
  • 不能与super()同时使用

this的图标描述:

image-20220511194450929
package com.oop;

public class Person {
    private String name;


    //this.属性
    public void setName(String name){
        System.out.println("setName()方法");
        this.name=name;
    }
    //this.方法
    public void sleep(){
        System.out.println("sleep()方法");
        this.setName("张三");
    }
    //this只能在对象方法中使用
    public static void Form(){
        //this.sleep()   错
        Person p=new Person();
        p.sleep();
        System.out.println(p.name);
    }

    public static void main(String[] args) {
        Form();
    }
}

this()在有参构造方法里面先调用无参构造方法:

//无参构造
    public Person1(){
        System.out.println("无参构造方法调用");
    }

    //有参构造
    public Person1(String name) {
        this();  //调用无参构造方法
        this.name = name;
    }

public static void main(String[] args) {
        Person1 p=new Person1("张三");
        System.out.println(p.name);
    }

在这里插入图片描述

java中static关键字

static关键字:修饰的数据存储在我们的方法区中的静态常量池中,static可以修饰方法,变量和代码块

  1. static修饰变量:static修饰的变量就属于类变量,被所有对象共享
  2. static修饰方法:this关键字不能在static方法中使用,静态方法(内存已存在)当中不饿能够使用非静态方法(内存不存在),非静态方法可以调用静态方法
  3. static修饰代码块:主要的作用用于变量初始化,无论放在哪里,都是再main方法中运行,通过main方法加载出来

解释:只要是类属性(加了static)只有一个内存空间,不管哪个对象查看都是一样的,某一个对象对值进行了修改,则每一个访问的值都发生了变化,访问到的都是最新修改的值。

 	private String name;
    private int age;
    private static String from;   //只有一块内存,不管谁访问都该都是一样的

Person1 p1=new Person1("张三",20);
        Person1 p2=new Person1("李四",18);
        Person1.from="中国";
        p1.from="地址为中国";
        System.out.println(p1);
        System.out.println(p2);
//输出
//Person1{name='张三', age=20, from='地址为中国'}
//Person1{name='李四', age=18, from='地址为中国'}

static修饰代码块:变量初始化

在一个类加载的时候,先执行静态代码块在执行其他,可以用于数据的初始化

static{
        from="中国";  //类中对静态变量
        System.out.println("静态代码块");
    }
public static void main(String[] args) {
        Person1 p1=new Person1("张三",20);
        Person1 p2=new Person1("李四",18);
        //Person1.from="中国";
        //p1.from="地址为中国";
        System.out.println(p1);
        System.out.println(p2);
    }

输出
//静态代码块
//Person1{name=‘张三’, age=20, from=‘中国’}
//Person1{name=‘李四’, age=18, from=‘中国’}

 Person1 p1=new Person1("张三",20);
        Person1 p2=new Person1("李四",18);
        //Person1.from="中国";
        //p1.from="地址为中国";
        System.out.println(p1);
        System.out.println(p2);
    }

输出:
//静态代码块
//Person1{name=‘张三’, age=20, from=‘中国’}
//Person1{name=‘李四’, age=18, from=‘中国’}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值