Hızlı Başlangıç: Android'de Sınıflar, Nesneler, Dizgeler ve Döngüler (Örneklerle)
Kısa cevap: Android'de Java sınıfı bir varlığı (Activity, View veya kendi modeliniz) tanımlar; nesne onun bir örneğidir; String değişmez bir dizgedir; döngüler (for, genişletilmiş for, while) ise verileri dolaşmak ve kullanıcı arayüzünü güncellemek için kullanılır. Aşağıda, doğrudan bir Activity'ye veya adaptöre ekleyebileceğiniz kompakt örnekler ve ipuçları yer almaktadır.
Sınıflar ve Nesneler: Basit Bir Model Şablonu
Sınıf, alanları ve yöntemleri saklar. Android'de bu tür sınıflar genellikle Activity'ler arasında veya RecyclerView adaptörlerine aktarılan veri modelleri için kullanılır.
UserProfile modeli örneği:
public class UserProfile {
private String name;
private int age;
public UserProfile(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public String format() {
return name + " (" + age + ")";
}
}
Bir Activity içinde oluşturma ve kullanma (onCreate veya onViewCreated içinde):
UserProfile u = new UserProfile("Aleksey", 28);
TextView tv = findViewById(R.id.profilesText);
tv.setText(u.format());
İpucu: NullPointerException hatalarından kaçınmak için nesneleri yaşam döngüsü sırasında (onCreate/onStart/onViewCreated) başlatın.
Değişmezleri (örneğin yaş >= 0) kontrol etmek için yapıcılar ve getter/setter yöntemlerini kullanın.
Dizge İşlemleri: String vs StringBuilder
Java'da String değişmezdir; her birleştirme işlemi yeni bir nesne oluşturur. Günlük kayıtları için veya döngüler içinde büyük metinler oluştururken StringBuilder kullanın.
Örnekler:
String greeting = "Merhaba, Android!";
String full = greeting + " " + "Geliştirici";
StringBuilder sb = new StringBuilder();
sb.append("Kullanıcılar:\n");
for (UserProfile p : profiles) {
sb.append(p.getName()).append(" - ").append(p.getAge()).append("\n");
}
textView.setText(sb.toString());
Büyük döngülerde "+" ile dizgeleri birleştirmeyin; bu, uygulamayı yavaşlatabilir ve çöp toplama işlemini artırabilir.
Döngüler: Hangisi Ne Zaman Kullanılır ve Pratik Örnek
- for (i) — indeks gerektiğinde ve dizi uzunluğu bilindiğinde kullanılır.
- genişletilmiş for — koleksiyonları (ArrayList, List) temiz bir şekilde dolaşmak için kullanılır.
- while / do-while — koşul önceden bilinmediğinde (yeniden denemeler, olay bekleme) kullanılır.
Örnek: Bir listeyi doldurma ve Activity içinde bir TextView'de görüntüleme:
public class MainActivity extends AppCompatActivity {
private List<UserProfile> profiles = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
profiles.add(new UserProfile("Anna", 24));
profiles.add(new UserProfile("Dmitriy", 30));
StringBuilder sb = new StringBuilder();
for (UserProfile p : profiles) {
sb.append(p.format()).append("\n");
}
TextView tv = findViewById(R.id.profilesText);
tv.setText(sb.toString());
}
}
Ölçeklenebilir bir liste için TextView yerine RecyclerView kullanın ve notifyItemRangeInserted/notifyDataSetChanged ile güncelleme yapan bir adaptör kullanın.
Sık Yapılan Hatalar
- Görünüm/nesnelerin onCreate/onViewCreated dışında başlatılması → NullPointerException.
- Büyük döngülerde String birleştirme → performans sızıntıları.
- Yineleyici kullanmadan yineleme sırasında koleksiyonu değiştirme → ConcurrentModificationException.
- Büyük nesnelerin statik alanlarda saklanması → bellek sızıntıları.
SSS
- String ve StringBuilder arasında nasıl seçim yapmalıyım?
- StringBuilder — sık değişiklik veya büyük dizgelerin oluşturulması için (döngülerde). String — kısa, değişmez değerler için.
- Modelleri Activity içinde en iyi nerede başlatmalıyım?
- onCreate veya onViewCreated (Fragment için) içinde — View'lara ve kullanıcı arayüzü mantığına erişmeden önce.
- Java kodunda Kotlin yaklaşımlarını kullanabilir miyim?
- Kullanabilirsiniz, ancak sözdizimi ve özellikler farklıdır; yeni projeler için Kotlin önerilir, ancak Java tamamen desteklenmeye devam etmektedir.
Bu şablonları öğrenin — ve Android'de adaptörler, veritabanı ve ağ çağrılarıyla çalışmaya hızla geçebilirsiniz. Pratik görevlerde başarılar!