הביטויים הפשוטים ביותר בשפת ג'אווה הם קבועים (literals) שמופיעים בגוף התוכנית. כבר ראינו שמחרוזות קבועות מופיעות בתוך גרשיים. כעת נראה כיצד מציינים קבועים מטיפוסים פרימיטיביים.
יש שני קבועים עבור ערכים בוליאניים (כן ולא), שמצויינים על ידי
המילים השמורות true
ו-false
.
תוים קבועים מצויינים בין גרשיים בודדים, כמו למשל 'A'
,
או כמספר בין 0 ל-65535. המספר מציין את קידוד של תו מסויים בסטנדרט
בינלאומי בשם Unicode לציון תוים. תוים ומחרוזות בג'אווה תמיד מקודדים
בקידוד Unicode.
קבועים מטיפוס double
מציינים על ידי
מספר עשרוני עם נקודה (גם אם יש רק אפס אחרי הנקודה, אחרת הקומפיילר מבין
את הקבוע כקבוע מטיפוס שלם; זה לא נורא בדרך כלל, אבל זה עשוי לדרוש המרה
בזמן ריצה של השלם ל-double
). אפשר להשתמש גם
בסימון מדעי, למשל -30e-4
לציון המספר −30×10−4. אפשר להשתמש ב-e
קטן או ב-E
גדול; אין הבדל. קבועים מטיפוס float
מציינים באותה דרך, אבל עם סיומת f
, כמו למשל 3.14f
או 5E7f
.
קבועים מטיפוסים מספריים שלמים הם קצת יותר עשירים וקצת יותר מבלבלים. העושר נובע מהיכולת להשתמש בייצוג לא עשרוני, והבלבול נובע גם מייצוג לא עשרוני וגם מחוסר אחידות ביחס לשימוש בטיפוסים שונים.
בדרך כלל, הקומפיילר מבין קבועים שלמים מספריים כקבועים בבסיס 10. למשל, הקבוע 12
מייצג את המספר שתים עשרה. אם הקבוע מתחיל באפס מוביל, הקומפיילר מבין אותו כקבוע אוקטאלי (octal, בבסיס 8). כך שהקבוע 012
מייצג את המספר עשר (שמונה ועוד שתי יחידות). זה סימון מבלבל שעדיף להימנע
ממנו, כי אנשים יודעים שבדרך כלל צריך להתעלם מאפסים מובילים (זה מה
שלומדים בכיתות הנמוכות בבית הספר כאשר לומדים את השיטה העשרונית).
תוכניתן שקורא תוכנית שמופיע בה קבוע אוקטאלי ושאינו זוכר שלאפסים מובילים
יש משמעות מיוחדת בתוכניות ג'אווה יפרש לא נכון את הקבועים בתוכנית.
קבועים שמתחילים ב-0x
הם קבועים הקסה-דצימליים (hexadecimal, ומכאן ה-x שמופיע בסימון), קבועים בבסיס 16. הקבוע 0x12
מייצג את המספר שמונה עשרה (שש עשרה ועוד שתיים). זה סימון חד משמעי ונפוץ
מאוד בתוכניות, וצריך לזכור אותו. הספרות ההקסה דצימליות בג'אווה הן
הספרות 0
עד 9
והאותיות a
עד f
(או A
עד F, אין הבדל) שמייצגות את הערכים 10 עד 15.
קבוע שלם הוא בדרך כלל מטיפוס int
, אבל כאשר הקומפיילר מצפה לקבוע מטיפוס מוגבל יותר (byte
או short
), הוא ממיר באופן אוטומטי קבועים שהם בטווח המתאים. כלומר, אם ננסה לשים את הערך 100
בקבוע מטיפוס byte, למשל, הקומפיילר ימיר אוטומטית את הקבוע 100
לטיפוס המתאים, byte
, ויבצע את ההשמה. אם ננסה לשים את הערך 300
בקבוע מטיפוס byte
, הקומפיילר ידווח על שגיאה, כי המספר 300 הוא מחוץ לטווח שניתן לייצג ב-byte.
מסיבה לא ברורה, הטיפול בקבועים מטיפוס long
מתבצע בצורה שונה לגמרי. לקבועים כאלה חובה להצמיד את הסיומת L
, אחרת הקומפיילר מבין אותם כקבועים מטיפוס int
גם אם הוא מצפה ל-long
וגם אם הם גדולים מהטווח של int
. אם רוצים לציין את המספר שישים מיליארד למשל (שהוא מחוץ לטווח של int
אבל בתוך הטווח של long
), חייבים להשתמש בקבוע 60000000000L
. אין סיבה טובה להתנהגות המוזרה הזו ולחוסר האחידות לעומת הטיפול בשאר הטיפוסים השלמים, אבל צריך לזכור אותה.