Photo by hina_ono_hana static あああ 2023年8月25日 18:33 Javaに戻ります。今回はコンストラクタの続きで、staticを学習します。相変わらずYoutubeのせかチャンをみて学習中。 今の自分のレベルだと導入の説明がしにくいので、いきなりコードをみていきます。とりあえずコードを確認コンストラクタ復習済みの前提で臨みます。まずは、うまくいかないほうのコードです。メインメソッド設計図コードを読むイメージとしてはメインメソッド4行目:コンストラクタでstu1のオブジェクト生成5行目:設計図クラスの15行目(void display~)を呼び出しています。7行目:コンストラクタでstu2のオブジェクト生成8行目:設計図クラスの15行目(void display~)を呼び出しています。設計図5行目:String型の変数nameを設定6行目:int型の変数counterを0と初期化した。9行目~:メソッドの設定。Student4からstring nを受け取る。name=nとする。counter++なので、6行目で設定したcounter=0に+1され、「1」になるSystem~では、name=nで受け取った値が入り、Xさんをインスタンス化しました。と出力される。15行目:System~を実行するメソッドとして設定された変数displayなんとなくの出力イメージをします。①Student4 stu1 = new Student4("菅原");②stu1.display();③Student4 stu2 = new Student4("村山");④stu2.display(); }①について「菅原」を設計図に渡す(設計図9行目)name=n=菅原 となる。counter++ でint counter = 0 だったのが1になるSystem~で「菅原さんをインスタンス化しました」と出力される②についてstu1について、設計図15行目のdisplayでのメソッドを呼び出す。System~が出力される。counterは上記①を経て1になっているつまり、「1人です」と出力される。③について「村山」を設計図に渡す(設計図9行目)name=n=村山 となる。counter++ でint counter = 0 だったのが1になるSystem~で「村山さんをインスタンス化しました」と出力される④についてstu2について、設計図15行目のdisplayでのメソッドを呼び出す。System~が出力される。counterは上記③を経て1になっているつまり、「1人です」と出力される。<出力結果>菅原さんをインスタンス化しました1人です村山さんをインスタンス化しました1人ですなぜ、村山さんの後が2人ですとならないのでしょうか。それは、couterがオブジェクト毎に処理されているからです。stu1とstu2というオブジェクトをつくったので、それぞれにcounterという変数領域がとられているので、counterが0→1と毎回なってしまうのです。でもカウントアップをしていきたい、そこで使うのが「static」です。staticを使って書き換えていくメインメソッド設計図書き換えた部分は、コメントアウトの通りです。設計図にて、int=counter = 0 の前にstaticをいれることで、それぞれのオブジェクトから出したみたいなイメージ?で良いと思います。前はオブジェクト毎にカウントしていたけど、カウンターは外にあって、それぞれのオブジェクトをカウントしてくれてるみたいな・・・説明がむずいです。泣メインメソッドにて確認するよよりわかるかもしれないです。<抜粋>①Student4 stu1 = new Student4("菅原");②//stu1.display( );→下記のように書き換え③Student4.display( );こうある訳ですが①は問題ないですよね。そのままです。「菅原」を設計図に渡す(設計図10行目)name=n=菅原 となる。counter++ でint counter = 0 だったのが1になるSystem~で「菅原さんをインスタンス化しました」と出力される大切なのが次以降です。②は前の書き方です。コメントアウトしてます②と③を比較してよく見てください。stu1をStudent4と変えているんです。これで、オブジェクト(stu1)の中にあったカウンターを取り出した。といったイメージでしょうか。<出力結果>0人です菅原さんをインスタンス化しました1人です村山さんをインスタンス化しました2人です0人ですも含め説明するので、もう一回メインメソッドを見ますメインメソッド(上記と同じもの)5行目:設計図の通り、static int counter = 0 の状態なので0人です。9行目:7行目を経ることで、counterが++されているので0→1です。13行目:11行目を経ることで、counterが++されているので1→2です。なので、今回はカウントアップされていくことができます。 ダウンロード copy #プログラミング #プログラミング初心者 #java #static この記事が気に入ったらサポートをしてみませんか? 記事をサポート