İçeriğe geç
Educora
Başlangıç15 dk2 / 18

Değişkenler, türler ve operatörler

Değişken tanımlamayı öğren; Java'nın sekiz ilkel türünü, aritmetik operatörleri ve tür dönüşümünü tanı.

Kendini test et
Bu derste öğreneceklerin
  • Bir değişkeni türüyle tanımlamak ve ona değer atamak
  • Bir iş için uygun ilkel türü seçmek
  • Tam sayı bölmesi, kalan ve tür dönüşümüyle doğru hesap yapmak

Bir çevrim içi mağaza her ürünün adını, fiyatını, depoda kaç tane kaldığını ve indirimde olup olmadığını hatırlamak zorundadır. Programlar bu tür bilgileri değişkenlerde saklar. Java'da her değişkenin önceden bilinen bir türü vardır ve bu tür sonradan değişmez; böyle dillere statik tipli diller denir.

Değişken tanımlamak

Bir değişken oluşturmak için önce türünü, sonra adını yazarsın; istersen = ile hemen bir değer verirsin: int age = 14;. Daha sonra değişkene yeni bir değer atayabilirsin ama farklı türde bir değer atayamazsın: int türündeki bir değişkene metin yazamazsın.

Java
public class Main {
    public static void main(String[] args) {
        String name = "Leyla";
        int age = 14;
        double height = 1.62;
        boolean isStudent = true;
        char grade = 'A';
        System.out.println(name + " is " + age + " years old.");
        System.out.println("Height: " + height + " m");
        System.out.println("Student: " + isStudent + ", grade: " + grade);
        age = age + 1;
        System.out.println("Next year: " + age);
    }
}
Beklenen çıktı
Leyla is 14 years old.
Height: 1.62 m
Student: true, grade: A
Next year: 15

İlkel türler

Java'da sekiz ilkel tür (primitive type) vardır; bunlar dilin en basit yapı taşlarıdır. Bellekte ne kadar yer kapladıkları ve hangi değerleri tutabildikleri bakımından birbirinden ayrılırlar. Tam sayılar için genellikle int, ondalıklı sayılar için double seçilir.

TürBoyutNe tutarÖrnek
byte8 bit−128 ile 127 arasındaki tam sayılarbyte level = 5;
short16 bit−32.768 ile 32.767 arasındaki tam sayılarshort year = 2026;
int32 bityaklaşık ±2,1 milyarint people = 10_000_000;
long64 bityaklaşık ±9,2 · 10¹⁸long stars = 3_000_000_000L;
float32 bitondalıklı sayı, ~7 basamak hassasiyetfloat t = 36.6f;
double64 bitondalıklı sayı, ~15–16 basamak hassasiyetdouble price = 9.99;
char16 bittek bir karakter (Unicode)char grade = 'A';
boolean–true ya da falseboolean ok = true;
long değerinin sonuna L, float değerinin sonuna f yazılır. Alt çizgiler _ büyük sayıların okunmasını kolaylaştırır.

String bu listede yok: ilkel bir tür değil, bir sınıftır; bu yüzden büyük harfle başlar. Karakter dizilerini bir sonraki derste ayrıntılı olarak tanıyacaksın. Dikkat: char değeri tek tırnakla ('A'), String ise çift tırnakla yazılır.

Etkileşimli
Simülasyon yükleniyor…
Bir byte 8 bitten oluşur. Bitleri açıp kapat: 8 bit 256 farklı birleşim verir; Java bunları −128 ile 127 arasındaki sayılar için kullanır.

Aritmetik operatörler

Java'da +, -, *, / ve % (bölümden kalan) operatörleri vardır. En önemli ayrıntı şudur: iki tam sayıyı böldüğünde sonuç da tam sayı olur, ondalık kısım basitçe atılır. Yani 17 / 5 işleminin sonucu 3.4 değil, 3'tür.

Java
public class Main {
    public static void main(String[] args) {
        int a = 17;
        int b = 5;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(a % b);
        System.out.println(17.0 / 5);
        int count = 10;
        count += 5;
        count++;
        System.out.println(count);
    }
}
Beklenen çıktı
22
12
85
3
2
3.4
16

Sayılardan biri ondalıklı olduğu anda (17.0) sonuç da ondalıklı olur. count += 5, count = count + 5 ifadesinin kısa yazılışıdır; -=, *= ve /= de aynı şekilde çalışır. count++ değişkeni 1 artırır, count-- ise 1 azaltır.

Örnek: dakikayı saate çevirmek

Bir film 135 dakika sürüyor. Bu süre saat ve dakika olarak nasıl gösterilir?

Çözümü göster
Saatler — tam sayı bölmesi: 135 / 60 = 2.
Kalan dakikalar — kalan: 135 % 60 = 15.
System.out.println(135 / 60 + " h " + 135 % 60 + " min"); satırı 2 h 15 min yazar.

Tür dönüşümü

Bazen bir değeri bir türden başka bir türe dönüştürmek gerekir. Küçük türden büyük türe (genişletme, örneğin int → double) Java bunu kendiliğinden ve kayıpsız yapar. Büyük türden küçük türe (daraltma, örneğin double → int) geçerken ise bilgi kaybolabilir; bu yüzden türü parantez içinde yazarak dönüşümü açıkça istemelisin: (int) price.

Java
public class Main {
    public static void main(String[] args) {
        int apples = 7;
        double d = apples;
        System.out.println(d);
        double price = 9.99;
        int whole = (int) price;
        System.out.println(whole);
        int sum = 7, people = 2;
        System.out.println(sum / people);
        System.out.println((double) sum / people);
        System.out.println((int) 'A');
        System.out.println((char) 66);
        int max = Integer.MAX_VALUE;
        System.out.println(max + 1);
    }
}
Beklenen çıktı
7.0
9
3
3.5
65
B
-2147483648
  • (int) 9.99 sonucu 9'dur: ondalık kısım yuvarlanmaz, atılır.
  • (double) sum / people ifadesinde önce sum double türüne çevrilir; bu yüzden bölme ondalıklı yapılır: 3.5.
  • char aslında bir sayıdır: 'A' karakterinin kodu 65'tir, 66 ise 'B' karakteridir.
  • En büyük int değerine 1 eklemek taşmaya (overflow) yol açar: değer en küçük negatif sayıya “döner”.

Önemli noktalar

  • Java statik tiplidir: değişken tür ad = değer; şeklinde tanımlanır ve türü değişmez.
  • Sekiz ilkel tür vardır: byte, short, int, long, float, double, char, boolean; String ise bir sınıftır.
  • İki tam sayının bölümü tam sayıdır: 17 / 5 = 3, 17 % 5 = 2.
  • Genişletme otomatiktir; daraltma için açık dönüşüm gerekir: (int) 9.99 = 9.
  • final bir sabit oluşturur, var ise türü derleyicinin kendisinin belirlemesini sağlar.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
System.out.println(17 / 5); ekrana ne yazar?