User.java
public class User {
// クラス全体ã§å…±æœ‰ã™ã‚‹ã€Œæ¬¡ã«å‰²ã‚Šå½“ã¦ã‚‹IDã€
private static int nextId = 1;
// ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸID(個別)
private int id;
// ユーザーã®åå‰ï¼ˆå€‹åˆ¥ï¼‰
private String name;
// コンストラクタ:Userを生æˆã™ã‚‹ãŸã³ã«IDを自動ã§ä»˜ã‘ã‚‹
public User(String name) {
this.id = nextId; // 今ã®nextIdを割り当ã¦
nextId++; // 次ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ç”¨ã«+1ã—ã¦ãŠã
this.name = name;
}
// ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’å‡ºåŠ›
public void printInfo() {
System.out.println("[ID: " + id + "] åå‰: " + name);
}
}
Main.java
public class Main {
public static void main(String[] args) {
User u1 = new User("Alice");
User u2 = new User("Bob");
User u3 = new User("Carol");
u1.printInfo();
u2.printInfo();
u3.printInfo();
}
}
å®Ÿè¡Œçµæžœ
[ID: 1] åå‰: Alice
[ID: 2] åå‰: Bob
[ID: 3] åå‰: Carol
解説
ã“ã®å•題ã§ã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã”ã¨ã«ä¸€æ„ãªIDを自動付与ã™ã‚‹æ–¹æ³•ã¨ã—ã¦static 変数をカウンタã¨ã—ã¦ä½¿ã†ãƒ†ã‚¯ãƒ‹ãƒƒã‚¯ã‚’å¦ã³ã¾ã—ãŸã€‚
static㪠nextId ã¨ã¯ï¼Ÿ
private static int nextId = 1;
- ã™ã¹ã¦ã®
Userインスタンス㧠共有ã•れるカウンタ - åˆæœŸå€¤ã‚’ 1 ã«ã—ã¦ãŠãã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒä½œã‚‰ã‚Œã‚‹ãŸã³ã«1ã¤ãšã¤å¢—ã‚„ã™
id = nextId; nextId++;ã«ã‚ˆã£ã¦ã€ä¸€æ„ãªIDã‚’é †ç•ªã«å‰²ã‚ŠæŒ¯ã‚‹ã“ã¨ãŒã§ãã‚‹
ãªãœ id ã¯éžstaticãªã®ã‹ï¼Ÿ
private int id;
idã¯ãã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å°‚ç”¨ã®æƒ…å ±- static ã«ã—ã¦ã—ã¾ã†ã¨ã€å…¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒåŒã˜å€¤ã‚’æŒã£ã¦ã—ã¾ã†
- å„インスタンス㌠自分ã ã‘ã®ID ã‚’æŒã¤ãŸã‚ã«ã¯ã€éžstaticã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚‹
ç¾å ´ã§ã‚ˆã使ã‚れるè¨è¨ˆ
ã“ã®ã‚ˆã†ãªã€ŒID連番割り振りã€ã¯ã€å®Ÿéš›ã®é–‹ç™ºç¾å ´ã§ã‚‚éžå¸¸ã«ã‚ˆã使ã‚れã¾ã™ã€‚
例:
- ユーザーID
- 注文番å·
- セッション番å·
ã„ãšã‚Œã‚‚「一æ„ãªç•ªå·ã‚’自動ã§ãµã‚‹ã€ãŸã‚ã« static 変数を活用ã—ã¾ã™ã€‚
ã¾ã¨ã‚
static変数㯠インスタンス間ã§å…±æœ‰ã™ã‚‹ã‚«ã‚¦ãƒ³ã‚¿ã¨ã—ã¦ä½¿ãˆã‚‹- コンストラクタ内ã§
id = nextId++ã¨ã™ã‚‹ã“ã¨ã§ã€ä¸€æ„ãªIDを割り当ã¦ã‚‰ã‚Œã‚‹ staticã¨éžstaticã®ã€Œå½¹å‰²ã®é•ã„ã€ã‚’ã€è¨è¨ˆã¨ã—ã¦ä½¿ã„分ã‘ã‚‹ã“ã¨ãŒé‡è¦
104 ステップアップå•題 「static修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€Œstatic修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
// tesh:
// ä¼¼ãŸå•題ã§ã¾ãŸè©°ã¾ã‚‹æœªæ¥ã€è¦‹ãˆã¦ã‚‹ãªã‚‰æ¢ã‚よã†ã€‚
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント