亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java this關鍵字的使用詳解

 更新時間:2021年11月05日 10:26:36   作者:兮動人  
this 關鍵字是 Java 常用的關鍵字,可用于任何實例方法內指向當前對象,也可指向對其調用當前方法的對象,或者在需要當前類型對象引用時使用

1. 先看一段代碼,并分析問題

在這里插入圖片描述

在這里插入圖片描述

public class This01 {

    //編寫一個main方法
    public static void main(String[] args) {

        Dog dog1 = new Dog("大壯", 3);
        //dog1調用了 info()方法
        dog1.info();

    }
}

class Dog{ //類

    String name;
    int age;
    // public Dog(String dName, int  dAge){//構造器
    // 	name = dName;
    // 	age = dAge;
    // }
    //如果我們構造器的形參,能夠直接寫成屬性名,就更好了
    //但是出現(xiàn)了一個問題,根據(jù)變量的作用域原則
    //構造器的name 是局部變量,而不是屬性
    //構造器的age  是局部變量,而不是屬性
    //==> 引出this關鍵字來解決
    public Dog(String name, int  age){//構造器
        //this.name 就是當前對象的屬性name
        this.name = name;
        //this.age 就是當前對象的屬性age
        this.age = age;
    }

    public void info(){//成員方法,輸出屬性x信息
        System.out.println(name + "\t" + age + "\t");
    }
}

在這里插入圖片描述

2. 深入理解 this

為了進一步理解 this,我們再看一個案例 (This01.java)

在這里插入圖片描述

在這里插入圖片描述

使用hashCode()看看對象的情況

在這里插入圖片描述

public class This01 { 

	//編寫一個main方法
	public static void main(String[] args) {

		Dog dog1 = new Dog("大壯", 3);
		System.out.println("dog1的hashcode=" + dog1.hashCode());
		//dog1調用了 info()方法
		dog1.info(); 

		System.out.println("============");
		Dog dog2 = new Dog("大黃", 2);
		System.out.println("dog2的hashcode=" + dog2.hashCode());
		dog2.info();
	}
}

class Dog{ //類

	String name;
	int age;

	public Dog(String name, int  age){//構造器
		//this.name 就是當前對象的屬性name
		this.name = name;
		//this.age 就是當前對象的屬性age
		this.age = age;
		System.out.println("this.hashCode=" + this.hashCode());
	}

	public void info(){//成員方法,輸出屬性x信息
		System.out.println("this.hashCode=" + this.hashCode());
		System.out.println(name + "\t" + age + "\t");
	}
}

在這里插入圖片描述

3. this 的注意事項和使用細節(jié)

ThisDetail.java

  • this 關鍵字可以用來訪問本類的屬性、方法、構造器
  • this 用于區(qū)分當前類的屬性和局部變量
public class ThisDetail {
    public static void main(String[] args) {
        T t = new T();
        t.f3();
    }
}

class T{

	String name = "兮動人";
    int num = 10;
    
	//this關鍵字可以用來訪問本類的屬性
	public void f3(){
	      String name = "smith";
	      //傳統(tǒng)方式
	      System.out.println("name=" + name + " num=" + num);//smith  100
	      //也可以使用this訪問屬性
	      System.out.println("name=" + this.name + " num=" + this.num);//jack 100
	}
}	    

在這里插入圖片描述

訪問成員方法的語法:this.方法名(參數(shù)列表);

public class ThisDetail {
    public static void main(String[] args) {
        T t1 = new T();
        t.f2();
    }
}

class T	{
    public void f1(){
        System.out.println("f1()方法...");
    }
    public void f2(){
        System.out.println("f2()方法...");
        //調用本類的 f1
        //第一種方式
        f1();
        //第二種方式
        this.f1();
    }
}

在這里插入圖片描述

訪問構造器語法:this(參數(shù)列表); 注意只能在構造器中使用(即只能在構造器中訪問另外一個構造器, 必須放在第一條語句)

public class ThisDetail {
    public static void main(String[] args) {

        T t2 = new T();
    }
}

class T{
    /*
	細節(jié): 訪問構造器語法:this(參數(shù)列表);
	注意只能在構造器中使用(即只能在構造器中訪問另外一個構造器)
	注意: 訪問構造器語法:this(參數(shù)列表); 必須放置第一條語句
	 */
    public T(){
        //這里去訪問 T(String name,int age)構造器,必須放在第一行
        this("Jack", 23);
        System.out.println("T()構造器");

    }

    public T(String name,int age){
        System.out.println("T(String name,int age)構造器");
    }

}

在這里插入圖片描述

this 不能在類定義的外部使用,只能在類定義的方法中使用。

4. this 的案例

TestPerson.java

定義 Person 類,里面有 name、age 屬性,并提供 compareTo 比較方法,用于判斷是否和另一個人相等,提供測試類 TestPerson 用于測試, 名字和年齡完全一樣,就返回 true, 否則返回 false

public class TestPerson { 

	//編寫一個main方法
	public static void main(String[] args) {

		Person p1 = new Person("mary", 20);
		Person p2 = new Person("mary", 20);

		System.out.println("p1和p2比較的結果=" + p1.compareTo(p2));
	}
}

/*
定義Person類,里面有name、age屬性,并提供compareTo比較方法,
用于判斷是否和另一個人相等,提供測試類TestPerson用于測試, 
名字和年齡完全一樣,就返回true, 否則返回false

 */
class Person {
	String name;
	int age;
	//構造器
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	//compareTo比較方法
	public boolean compareTo(Person p) {
		//名字和年齡完全一樣
		// if(this.name.equals(p.name) && this.age == p.age) {
		// 	return true;
		// } else {
		// 	return false;
		// }
		return this.name.equals(p.name) && this.age == p.age;
	}
}

在這里插入圖片描述

把名字或年齡改成其他不同數(shù)據(jù)

在這里插入圖片描述

到此這篇關于Java this關鍵字的使用詳解的文章就介紹到這了,更多相關Java this內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java操作mongodb增刪改查的基本操作實戰(zhàn)指南

    Java操作mongodb增刪改查的基本操作實戰(zhàn)指南

    MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,由c++語言編寫,旨在為WEB應用提供可擴展的高性能數(shù)據(jù)存儲解決方案,下面這篇文章主要給大家介紹了關于Java操作mongodb增刪改查的基本操作實戰(zhàn)指南,需要的朋友可以參考下
    2023-05-05
  • 一文掌握Spring?Boot?日志文件

    一文掌握Spring?Boot?日志文件

    日志是程序的重要組成部分,日志對于我們來說,最主要的用途就是排除和定位問題,這篇文章主要介紹了Spring?Boot?日志文件,需要的朋友可以參考下
    2023-03-03
  • springCloud config本地配置操作

    springCloud config本地配置操作

    這篇文章主要介紹了springCloud config本地配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Maven安裝教程及是否安裝成功

    詳解Maven安裝教程及是否安裝成功

    這篇文章主要介紹了詳解Maven安裝教程及是否安裝成功,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java web開發(fā)中加載圖片路徑的兩種方式

    Java web開發(fā)中加載圖片路徑的兩種方式

    下文給大家介紹基于編譯器idea以及tomcat服務器開發(fā)的,對Java web開發(fā)加載圖片路徑的兩種方式感興趣的朋友一起看看吧
    2017-07-07
  • Java由淺入深細數(shù)數(shù)組的操作上

    Java由淺入深細數(shù)數(shù)組的操作上

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • maven創(chuàng)建spark項目的pom.xml文件配置demo

    maven創(chuàng)建spark項目的pom.xml文件配置demo

    這篇文章主要為大家介紹了maven創(chuàng)建spark項目的pom.xml文件配置demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • java實現(xiàn)登錄驗證碼功能

    java實現(xiàn)登錄驗證碼功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)登錄驗證碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 淺談java對象結構 對象頭 Markword

    淺談java對象結構 對象頭 Markword

    這篇文章主要介紹了淺談java對象結構 對象頭 Markword,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java不定參數(shù)使用及一些注意情況

    Java不定參數(shù)使用及一些注意情況

    不定參數(shù)是一種特殊的參數(shù)類型,它允許方法接受可變數(shù)量的參數(shù),本文主要介紹了Java不定參數(shù)使用及一些注意情況,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論