java中同一個類中元素的相互關系
1.同一類中方法和變量的調用關系
1.1.在同一個類中只能由方法來調用變量,不能用變量來調用方法。
1.2.在構造方法中調用變量。
可以訪問本類中的實例變量,默認是this.實例變量名稱,可以省略this.
可以訪問本類中的類變量,默認是類名.類變量名稱,可以省略類名,也可以使用this,可以省略this。
可以訪問本方法中的局部變量,只能變量名稱訪問。
例如:
package com.click369.test.demo1;
public class StudentBean {
int stuid=1001; //實例變量
static String stuname="zhangsan"; //靜態成員變量[類變量]
/**
* 無參數構造方法
*/
public StudentBean(){
System.out.println("構造方法訪問實例變量stuid=="+this.stuid);
System.out.println("構造方法訪問實例變量stuid=="+stuid);
System.out.println("構造方法訪問類變量stuname=="+StudentBean.stuname);
System.out.println("構造方法訪問類變量stuname=="+stuname);
System.out.println("構造方法訪問類變量stuname=="+this.stuname);
char sex='男'; //局部變量
//System.out.println("構造方法訪問局部變量sex=="+this.sex);
//System.out.println("構造方法訪問局部變量sex=="+StudentBean.sex);
System.out.println("構造方法訪問局部變量sex=="+sex);
}
}
1.3.實例方法中調用變量
可以訪問本類中的實例變量,默認this.實例變量名稱,可以省略this.
可以訪問本類中的類變量,默認是類名.類變量名稱,可以省略類名,也可以使用this,可以省略this。
可以訪問本方法中的局部變量,只能變量名稱訪問。
例如:
package com.click369.test.demo1;
public class StudentBean {
int stuid=1001; //實例變量
static String stuname="zhangsan"; //靜態成員變量[類變量]
/**
* 實例方法
*/
public void testMethod(){
System.out.println("實例方法訪問實例變量stuid=="+this.stuid);
System.out.println("實例方法訪問實例變量stuid=="+stuid);
System.out.println("實例方法訪問類變量stuname=="+StudentBean.stuname);
System.out.println("實例方法訪問類變量stuname=="+stuname);
System.out.println("實例方法訪問類變量stuname=="+this.stuname);
char sex='男'; //局部變量
//System.out.println("構造方法訪問局部變量sex=="+this.sex);
//System.out.println("構造方法訪問局部變量sex=="+StudentBean.sex);
System.out.println("構造方法訪問局部變量sex=="+sex);
}
}
1.4.類方法【靜態方法】中調用變量
不能出現this關鍵字。
不能訪問本類中的實例變量。
可以訪問本類中類變量,默認類名.變量名稱,可以省略類名。
可以訪問本方法中的局部變量,只能變量名稱訪問。
例如:
package com.click369.test.demo1;
public class StudentBean {
int stuid=1001; //實例變量
static String stuname="zhangsan"; //靜態成員變量[類變量]
/**
* 類方法【靜態方法】
*/
public static void testStaticMehtod(){
//System.out.println("類方法【靜態方法】訪問實例變量stuid=="+this.stuid);
//System.out.println("類方法【靜態方法】訪問實例變量stuid=="+stuid);
System.out.println("類方法【靜態方法】訪問類變量stuname=="+StudentBean.stuname);
System.out.println("類方法【靜態方法】訪問類變量stuname=="+stuname);
//System.out.println("類方法【靜態方法】訪問類變量stuname=="+this.stuname);
char sex='男'; //局部變量
//System.out.println("類方法【靜態方法】訪問局部變量sex=="+this.sex);
//System.out.println("類方法【靜態方法】訪問局部變量sex=="+StudentBean.sex);
System.out.println("類方法【靜態方法】訪問局部變量sex=="+sex);
}
}
2.同一類中方法和方法的調用關系
2.1.構造方法調用其他的方法.
可以訪問本類中其他的構造方法,new + 構造方法。
可以訪問本類中的實例方法,默認this.實例方法 ,可以省略this.
可以訪問本類中的類方法,默認類名.類方法,可以省略類名,也可以this.類方法,可以省略this.
例如:
package com.click369.test.demo1;
public class PersonBean {
/**
* 無參數構造方法
*/
public PersonBean(){
//new PersonBean();//錯誤
new PersonBean("test");
this.testMethod();
testMethod();
PersonBean.testStaticMethod();
testStaticMethod();
this.testStaticMethod();
}
/**
* 有參數的構造方法
* @param canshu
*/
public PersonBean(String canshu){
System.out.println("有參數的構造方法");
}
/**
* 實例方法
*/
public void testMethod(){
System.out.println("實例方法");
}
/**
* 類方法
*/
public static void testStaticMethod(){
System.out.println("類方法");
}
}
2.2 實例方法調用其他方法
可以訪問本類的構造方法,默認是new + 構造方法;
可以訪問本類中的實例方法,默認this.實例方法,可以省略this.
可以本類中的類方法,默認類名.類方法,可以省略類名,也可以this.類方法,可以省略this
例如:
package com.click369.test.demo1;
public class MyClass {
public MyClass(){
System.out.println("無參數構造方法");
}
public MyClass(String value){
System.out.println("有參數構造方法參數是=="+value);
}
public void testMehtod(){
System.out.println("實例方法");
}
public static void testStaticMehtod(){
System.out.println("類方法");
}
/**
* 實例方法
*/
public void method(){
//new MyClass();
new MyClass("Zhangsan");
this.testMehtod();
testMehtod();
MyClass.testStaticMehtod();
testStaticMehtod();
this.testStaticMehtod();
}
}
2.3 類方法訪問其他方法
可以訪問本類中的構造方法,new + 構造方法。
不可以訪問本類中的實例方法。
可以訪問本類中的其他類方法,默認類名.類方法,可以省略類名。
不能出現this
例如:
package com.click369.test.demo1;
public class TestClass {
public TestClass(){
System.out.println("無參數的構造方法");
}
public void tesrtMehtod(){
System.out.println(" 實例方法");
}
public static void testStaticMethod(){
System.out.println("類方法");
}
/**
* 類方法
*/
public static void method(){
new TestClass();
// this.tesrtMehtod();
// tesrtMehtod();
TestClass.testStaticMethod();
testStaticMethod();
// this.testStaticMethod();
}
}
3.方法的重載
在同一個java類中,出現的方法名稱相同,但是方法的參數不同,這種現象就是方法的重載。
構造方法,實例方法,類方法都可以重載。
2.方法的重載一個方法類型和方法的返回值沒有關系,只看名稱和參數。
例如:
package com.click369.test.demo1;
public class DoxClass {
//構造方法重載
public DoxClass(){
}
public DoxClass(String value){
}
//實例方法重載
public int testMethod(int num){
return 100;
}
public double testMethod(double num){
return 100;
}
//類方法重載
public static int getInt(int num){
return num;
}
public static double getInt(int num ,double num2){
return num+num2;
}
}
4.this關鍵字
1.不能標識符
2.this表示本類對象【出現在哪一個類,就代表哪一個類的對象】
3.this不能出現在類方法中。
this用法===[Java程序=對象+消息]
我們在本類中本類自己定義的變量和方法時,也需要對象訪問,而這個時候this就可以用來充當訪問變量/方法的對象使用。
1. 在構造方法中訪問實例變量/實例方法默認是this.實例變量/實例方法,this是可以省略。
2.在實例方法中訪問其他的實變量/實例方法,默認是this.實例變量/實例方法,this是可以省略。
3.this不能出現在類方法中
4.如果需要強制使用被局部變量隱藏的成員變量的數據值的時候,一定不能省略this.
5.static關鍵字
static---靜態的
用static關鍵修飾的變量叫靜態成員變量
用static關鍵修飾的方法叫靜態方法
在程序運行的時候static關鍵字,表示為static修飾的java元素【變量/方法】,提前分配好運行所需的內存空間。
通常情況下沒有使用static修飾的變量和方法會在程序運行的時候分配內存空間,而使用static修飾的變量和方法則是要早于程序運行的時候分配內存空間,程序被加載的時候就已經分配好內存空間,這就是提前分配好運行所需的內存空間的意思。
靜態成員變量、靜態方法的內存分配時機要早于實例變量和實例方法的內存分配時機。當我們靜態方法訪問實例變量/實例方法時,此時實例變量和實例方法不存在,因此上我們地靜態方法中是不能訪問實例變量/實例方法。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。