メンバー変数とローカル変数の違い
5978 ワード
メンバー変数とローカル変数の違いメンバー変数とローカル変数の違い
1、クラス内の位置が違う
メンバー変数:クラス内のメソッドの外側
ローカル変数:メソッドまたはコードブロック、またはメソッドの宣言(パラメータリスト)
2、メモリの中の位置が違うので、Javaプログラムのメモリの簡単な分析を見ることができます
≪メンバー変数|Member Variables|oem_src≫:スタック内(メソッド領域の静的領域)
ローカル変数:スタック内
3、ライフサイクルが違う
≪メンバー変数|Member Variables|oem_src≫:オブジェクトが作成されるにつれて存在し、オブジェクトが消失するにつれて消失します.
ローカル変数:メソッドの呼び出しまたはコードブロックの実行に伴って存在し、メソッドの呼び出しが完了するか、コードブロックの実行が完了するにつれて消失する
4、初期値
メンバー変数:デフォルト初期値あり
ローカル変数:デフォルトの初期値がなく、使用前に値を割り当てる必要があります.そうしないと、コンパイラがエラーを報告します(The local variable xxx may not have been initialized)
出力結果:ローカル変数showメソッドで定義されたname変数が出力されているのを見て、変数を使用する際に従う原則は近接原則ですが、メンバー変数nameにどのようにアクセスするか、Javaではthis(呼び出しオブジェクト自体を表す)というキーワードがメンバー変数にアクセスするために提供されています.
出力結果:メンバー変数
転載:https://www.cnblogs.com/huangminwen/p/5935130.html
メンバー変数とローカル変数
変数の位置を定義することによって、変数をメンバー変数とローカル変数メンバー変数に分けることができます.クラス範囲内で定義された変数ローカル変数は、メソッド内で定義された変数です.
メンバー変数は、インスタンス属性(static修飾を使用しない)がインスタンス属性の存在に伴って存在するクラス属性(static修飾)がクラスの存在に伴って存在することに分けられます.
メンバー変数は明示的に初期化する必要がなく、自動的にデフォルトの初期化が行われます.
ローカル変数は、パラメータ(形式パラメータ)がメソッド全体にわたって有効なメソッドローカル変数(メソッド内定義)この変数の定義からメソッドの終了までの期間に有効なコードブロックローカル変数(コードブロック内定義)がこの変数の定義から世代コードブロックの終了までの期間に有効である
ローカル変数は、パラメータ以外に初期化を表示する必要があります.つまり、初期値を指定する必要があります.そうしないとアクセスできません.
サンプルコード:
JAvaでは、ローカル変数とメンバー変数の名前を変更できます.ローカル変数はメンバー変数の値を上書きします.
コードの例:
1、クラス内の位置が違う
メンバー変数:クラス内のメソッドの外側
ローカル変数:メソッドまたはコードブロック、またはメソッドの宣言(パラメータリスト)
2、メモリの中の位置が違うので、Javaプログラムのメモリの簡単な分析を見ることができます
≪メンバー変数|Member Variables|oem_src≫:スタック内(メソッド領域の静的領域)
ローカル変数:スタック内
3、ライフサイクルが違う
≪メンバー変数|Member Variables|oem_src≫:オブジェクトが作成されるにつれて存在し、オブジェクトが消失するにつれて消失します.
ローカル変数:メソッドの呼び出しまたはコードブロックの実行に伴って存在し、メソッドの呼び出しが完了するか、コードブロックの実行が完了するにつれて消失する
4、初期値
メンバー変数:デフォルト初期値あり
ローカル変数:デフォルトの初期値がなく、使用前に値を割り当てる必要があります.そうしないと、コンパイラがエラーを報告します(The local variable xxx may not have been initialized)
1 package demo;
2
3 public class VariableDemo {
4 String name = " ";
5
6 public static void main(String[] args) {
7 new VariableDemo().show();
8 }
9
10 public void show() {
11 String name = " ";
12 System.out.println(name);
13 }
14 }
出力結果:ローカル変数showメソッドで定義されたname変数が出力されているのを見て、変数を使用する際に従う原則は近接原則ですが、メンバー変数nameにどのようにアクセスするか、Javaではthis(呼び出しオブジェクト自体を表す)というキーワードがメンバー変数にアクセスするために提供されています.
1 package demo;
2
3 public class VariableDemo {
4 String name = " ";
5
6 public static void main(String[] args) {
7 new VariableDemo().show();
8 }
9
10 public void show() {
11 String name = " ";
12 System.out.println(this.name);
13 }
14 }
出力結果:メンバー変数
転載:https://www.cnblogs.com/huangminwen/p/5935130.html
メンバー変数とローカル変数
変数の位置を定義することによって、変数をメンバー変数とローカル変数メンバー変数に分けることができます.クラス範囲内で定義された変数ローカル変数は、メソッド内で定義された変数です.
メンバー変数は、インスタンス属性(static修飾を使用しない)がインスタンス属性の存在に伴って存在するクラス属性(static修飾)がクラスの存在に伴って存在することに分けられます.
メンバー変数は明示的に初期化する必要がなく、自動的にデフォルトの初期化が行われます.
ローカル変数は、パラメータ(形式パラメータ)がメソッド全体にわたって有効なメソッドローカル変数(メソッド内定義)この変数の定義からメソッドの終了までの期間に有効なコードブロックローカル変数(コードブロック内定義)がこの変数の定義から世代コードブロックの終了までの期間に有効である
ローカル変数は、パラメータ以外に初期化を表示する必要があります.つまり、初期値を指定する必要があります.そうしないとアクセスできません.
サンプルコード:
package object;
/**
*
*
* */
public class VariableTest {
//
public static String staticname = " ";
public String nostaticname = " ";
//
public static String staticname1;
public String nostaticname1;
//
public void info(){
// i
//int i;
// ,
//System.out.println(i);
// i
int i = 10;
// i
System.out.println(i);
}
//
public static void infos(){
int i = 20;
System.out.println(i);
}
public static void main(String[] args) {
/* : ?*/
// ,
System.out.println(VariableTest.staticname);// :
// ,
VariableTest vt = new VariableTest();
System.out.println(vt.nostaticname);// :
/*--- : , ---*/
System.out.println("----------");
/* : ?*/
//
System.out.println(VariableTest.staticname1);// :null
//
System.out.println(vt.nostaticname1);// :null
/*--- : , ---*/
System.out.println("----------");
/* : ?*/
//vt.staticname;
//
//Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration
// : , “ ”
/* 。 eclipse
* test
* , ,
*VariableTest.staticname
* , , */
vt.staticname = " ";
// , ...
//The static field Variable Test.static name should be accessed in a static way
// : 。
System.out.println(vt.staticname);// :
// , , ↑
/* : , , ,
* , */
System.out.println("----------");
//
/* : , ?*/
//
vt.info();// :10
// info i ?
//System.out.println(i);
// :i cannot be resolved to a variable
// :i
/* : , */
System.out.println("----------");
//
/* : , ?*/
{
int j = 11;
System.out.println(j);// :11
}
//
//System.out.println(j);
// ,
/* , */
System.out.println("----------");
// :
infos();// :20
//
//System.out.println(i);
}
}
JAvaでは、ローカル変数とメンバー変数の名前を変更できます.ローカル変数はメンバー変数の値を上書きします.
コードの例:
package object;
/**
*
* */
public class VariableCover {
/* ,
* */
//
public String city = " ";
private static String citys = " ";
//
public void function(){
String city = " ";
//
//
System.out.println(city);// :
// , this
System.out.println(this.city);// :
}
public static void main(String[] args) {
String citys = " ";
//
System.out.println(citys);// :
//
System.out.println(VariableCover.citys);// :
String city = " ";
System.out.println(city);// :
//
System.out.println(new VariableCover().city);// :
new VariableCover().function();
}
}