המחלקה System

מהי המחלקה System?

System היא מחלקה מובנית ב-Java שמספקת גישה לרכיבי המערכת: פלט למסך, קלט מהמשתמש, שעון מערכת, ועוד. היא נמצאת בחבילה java.lang ולכן אין צורך לייבא אותה.

System.out - פלט למסך

System.out.println("טקסט עם ירידת שורה");
System.out.print("טקסט בלי ירידת שורה");
System.out.printf("טקסט מעוצב: %d\n", 42);

println - הדפסה עם ירידת שורה

System.out.println("שורה ראשונה");
System.out.println("שורה שנייה");

פלט:

שורה ראשונה
שורה שנייה
System.out.print("a");
System.out.print("b");
System.out.print("c");

פלט:

abc

printf - הדפסה מעוצבת

int age = 25;
String name = "נפתלי";
double price = 19.99;

System.out.printf("שם: %s, גיל: %d, מחיר: %.2f%n", name, age, price);

מציינים נפוצים: - %d - מספר שלם - %f - מספר עשרוני (%.2f = 2 ספרות אחרי הנקודה) - %s - מחרוזת - %c - תו - %b - בוליאני - %n - ירידת שורה (עדיף על \n כי מותאם למערכת ההפעלה)

System.err - פלט שגיאות

ערוץ פלט נפרד לשגיאות:

System.err.println("שגיאה: הקובץ לא נמצא");

לעיתים הטרמינל צובע את הפלט הזה באדום.

System.in - קלט מהמשתמש

System.in הוא זרם הקלט הסטנדרטי, אבל משתמשים בו בדרך כלל דרך Scanner (השיעור הבא):

Scanner scanner = new Scanner(System.in);

System.currentTimeMillis - זמן נוכחי

מחזיר את מספר האלפיות-שנייה שעברו מאז 1.1.1970 (Unix epoch):

long start = System.currentTimeMillis();

// משהו שאורך זמן
for (int i = 0; i < 1000000; i++) { }

long end = System.currentTimeMillis();
System.out.println("זמן ריצה: " + (end - start) + " ms");

System.nanoTime - זמן בדיוק גבוה

long start = System.nanoTime();
// ...
long end = System.nanoTime();
System.out.println("זמן: " + (end - start) + " ננו-שניות");

System.exit - יציאה מהתוכנית

System.exit(0);   // יציאה תקינה
System.exit(1);   // יציאה עם שגיאה

System.getProperty - מידע על המערכת

System.out.println(System.getProperty("os.name"));        // Windows 11
System.out.println(System.getProperty("user.name"));      // שם המשתמש
System.out.println(System.getProperty("java.version"));   // גרסת Java

שרשור מחרוזות בפלט

String name = "דוד";
int age = 30;

System.out.println("שם: " + name + ", גיל: " + age);

אפשר גם printf:

System.out.printf("שם: %s, גיל: %d%n", name, age);

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. לאן כותב System.err.println?

    1. לקובץ לוג אוטומטי
    2. לשום מקום
    3. לזרם השגיאות הסטנדרטי
    4. לזרם הקלט
    הצגת התשובה

    תשובה ג. System.err הוא זרם נפרד לשגיאות, שהטרמינל לעיתים מציג באדום.

  2. מה עושה System.currentTimeMillis()?

    1. עוצרת את התוכנית
    2. מחזירה את זמן הריצה של התוכנית
    3. מחזירה את התאריך כמחרוזת
    4. מחזירה את מספר האלפיות שעברו מ-1970, שימושי למדידת זמן
    הצגת התשובה

    תשובה ד. מודדים זמן ריצה של קטע קוד כהפרש בין שתי קריאות.