public class MathUtils {
// staticメソッド - 与ãˆã‚‰ã‚ŒãŸæ•°ãŒç´ æ•°ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
public static boolean isPrime(int number) {
if (number <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
// staticメソッド - 与ãˆã‚‰ã‚ŒãŸæ•°ã®éšŽä¹—を計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
public static int factorial(int number) {
if (number == 0 || number == 1) {
return 1;
}
return number * factorial(number - 1);
}
// staticメソッド - 与ãˆã‚‰ã‚ŒãŸæ•°ãŒãƒ•ã‚£ãƒœãƒŠãƒƒãƒæ•°åˆ—ã«å«ã¾ã‚Œã‚‹ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
public static boolean isInFibonacciSequence(int number) {
if (number < 0) {
return false;
}
int a = 0, b = 1;
while (a <= number) {
if (a == number) {
return true;
}
int temp = a + b;
a = b;
b = temp;
}
return false;
}
}
ã“ã®è§£ç”例ã§ã¯ã€MathUtilsクラスã«3ã¤ã®staticメソッドを実装ã—ã¾ã—ãŸã€‚ãれãžã‚ŒãŒç´ 数判定ã€éšŽä¹—計算ã€ãŠã‚ˆã³ãƒ•ã‚£ãƒœãƒŠãƒƒãƒæ•°åˆ—ã®åˆ¤å®šã‚’行ã„ã¾ã™ã€‚ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã—ã¦ç•°ãªã‚‹æ•°å€¤ã«å¯¾ã—ã¦å‹•作をテストã—ã¦ã¿ã¦ãã ã•ã„。
å‚考:SimpleDataFormatクラス
staticメソッド
staticメソッドã¯ã€Javaプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã«ãŠã„ã¦ã‚¯ãƒ©ã‚¹ãƒ¬ãƒ™ãƒ«ã§å®šç¾©ã•れるメソッドã§ã‚りã€ç‰¹å®šã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ç´ä»˜ã‹ãªã„å½¢ã§å‘¼ã³å‡ºã•れã¾ã™ã€‚以下ã«ã€staticメソッドã«é–¢ã™ã‚‹ä¸»ãªç‰¹å¾´ã¨è§£èª¬ã‚’示ã—ã¾ã™ã€‚
- インスタンスä¸è¦:
staticメソッドã¯ç‰¹å®šã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ç´ä»˜ã‹ãªã„ãŸã‚ã€ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã›ãšã«å‘¼ã³å‡ºã›ã¾ã™ã€‚- 例:
ClassName.staticMethod();
- クラスメソッド:
staticメソッドã¯é€šå¸¸ã€ã‚¯ãƒ©ã‚¹è‡ªä½“ã«å±žã™ã‚‹ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦å®£è¨€ã•れã¾ã™ã€‚- インスタンスメソッドã¨ã¯ç•°ãªã‚Šã€ã‚ªãƒ–ジェクトã®ç”Ÿæˆãªã—ã«ã‚¯ãƒ©ã‚¹åを使用ã—ã¦ç›´æŽ¥ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚
- インスタンス変数ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„:
staticメソッド内ã§ã¯ã€åŒã˜ã‚¯ãƒ©ã‚¹å†…ã®staticメソッドやstatic変数ã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ãŒã€é€šå¸¸ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚„メソッドã«ã¯ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。thisã‚ーワードを使用ã§ãã¾ã›ã‚“。
- éžstaticメンãƒã«ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„:
staticメソッド内ã§ã¯ã€thisを使ã£ã¦è‡ªåˆ†è‡ªèº«ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’å‚ç…§ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。thisã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§ã®ã¿æœ‰åйã§ã™ã€‚
- メモリ効率:
staticメソッドã¯ã‚ªãƒ–ジェクトã®ç”Ÿæˆãªã—ã«å‘¼ã³å‡ºã›ã‚‹ãŸã‚ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ä¾å˜ã—ãªã„処ç†ã‚„ã€å…±é€šã®å‡¦ç†ã‚’æä¾›ã™ã‚‹ã®ã«é©ã—ã¦ã„ã¾ã™ã€‚
- クラスãƒãƒ¼ãƒ‰æ™‚ã«åˆæœŸåŒ–:
staticメソッドやstatic変数ã¯ã‚¯ãƒ©ã‚¹ãŒãƒãƒ¼ãƒ‰ã•れる際ã«åˆæœŸåŒ–ã•れã¾ã™ã€‚- クラスãŒåˆã‚ã¦ä½¿ã‚れる瞬間ã«1回ã ã‘åˆæœŸåŒ–ã•れã€ãã®å¾Œã¯å†åˆæœŸåŒ–ã•れã¾ã›ã‚“。
- static import:
staticメソッドã¯import static文を使用ã—ã¦ã€ã‚¯ãƒ©ã‚¹åã‚’çœç•¥ã—ã¦ç›´æŽ¥ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
以下ã¯ã€staticメソッドã®ä¾‹ã§ã™ã€‚
public class ExampleClass {
// staticメソッド
public static void staticMethod() {
System.out.println("This is a static method.");
}
// クラスメソッドã‹ã‚‰staticメソッドã®å‘¼ã³å‡ºã—
public static void main(String[] args) {
staticMethod(); // 直接クラスåを使用ã—ã¦staticメソッドを呼ã³å‡ºã™
ExampleClass.staticMethod(); // åŒã˜çµæžœã‚’å¾—ã‚‹ãŸã‚ã«ã‚¯ãƒ©ã‚¹åを指定ã—ã¦ã‚‚å¯
}
}
staticメソッドã¯ã€ç‰¹å®šã®ã‚ªãƒ–ジェクトã®çŠ¶æ…‹ã«ä¾å˜ã›ãšã€å…±é€šã®å‡¦ç†ã‚’æä¾›ã™ã‚‹éš›ã«æœ‰ç”¨ã§ã™ã€‚
staticメソッドã®å¿œç”¨ï¼šãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹
staticメソッドã®å¿œç”¨ã®ä¸€ä¾‹ã¨ã—ã¦ã€ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹ãŒæŒ™ã’られã¾ã™ã€‚ユーティリティクラスã¯ã€å…±é€šã®æ©Ÿèƒ½ã‚„処ç†ã‚’æä¾›ã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã§ã‚りã€ãã®ä¸ã§staticメソッドãŒé »ç¹ã«ä½¿ç”¨ã•れã¾ã™ã€‚
以下ã¯ã€ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã®ä¾‹ã¨ã—ã¦ã€æ—¥ä»˜æ“作ã«é–¢ã™ã‚‹DateUtilsクラスを考ãˆã¦ã¿ã¾ã—ょã†ã€‚
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
// インスタンス化を防ããŸã‚ã«privateãªã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’æŒã¤ï¼ˆãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‚¯ãƒ©ã‚¹ã®æ…£ç¿’)
private DateUtils() {
// インスタンス生æˆã‚’防ã
}
// staticメソッド - ç¾åœ¨ã®æ—¥ä»˜ã‚’指定ã•れãŸãƒ•ォーマットã§å–å¾—ã™ã‚‹
public static String getCurrentDate(String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date());
}
// staticメソッド - 2ã¤ã®æ—¥ä»˜ã®å·®ã‚’æ—¥å˜ä½ã§å–å¾—ã™ã‚‹
public static long getDaysDifference(Date date1, Date date2) {
long difference = date2.getTime() - date1.getTime();
return difference / (1000 * 60 * 60 * 24);
}
}
ã“ã®DateUtilsクラスã¯ã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã›ãšã«åˆ©ç”¨ã§ãるよã†ã«staticメソッドをæä¾›ã—ã¦ã„ã¾ã™ã€‚具体的ãªä½¿ã„æ–¹ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚
public class Main {
public static void main(String[] args) {
// staticメソッドを使用ã—ã¦ç¾åœ¨ã®æ—¥ä»˜ã‚’å–å¾—
String currentDate = DateUtils.getCurrentDate("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Date: " + currentDate);
// staticメソッドを使用ã—ã¦2ã¤ã®æ—¥ä»˜ã®å·®ã‚’å–å¾—
Date date1 = new Date();
Date date2 = new Date(System.currentTimeMillis() + (1000 * 60 * 60 * 24 * 5)); // 5æ—¥å¾Œã®æ—¥ä»˜
long daysDifference = DateUtils.getDaysDifference(date1, date2);
System.out.println("Days Difference: " + daysDifference);
}
}
ã“ã®ä¾‹ã§ã¯ã€DateUtilsクラスãŒãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æä¾›ã—ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’利用ã™ã‚‹ã“ã¨ã§ã€æ—¥ä»˜ã«é–¢ã™ã‚‹ä¸€èˆ¬çš„ãªå‡¦ç†ã‚’実ç¾ã—ã¦ã„ã¾ã™ã€‚ユーティリティクラスã¯ä¸€èˆ¬çš„ã«staticメソッドを多ãå«ã‚€ãŸã‚ã€staticメソッドã®å¿œç”¨ã¨ã—ã¦éžå¸¸ã«ä¸€èˆ¬çš„ã§ã™ã€‚
「012 staticメンãƒã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント