|
|
tekzaf@yahoo.com |
Bir program yazarken hata yapmamanız mümkün değil. Sürekli hata yapacaksınız. Önemli olan bu hatayı çabuk görüp düzeltebilmek. Java'da kodu derlediğinizde size hata mesajlarını gösterecektir. Eğer java bilginiz iyi ise bu hataları hemen çözersiniz. Ancak javayı yeni öğreniyorsanız bu hataları bulmanız ve çözmeniz zor olabilir. BT dershanesinde java öğretmeni olduğum için öğrencilerin hangi hataları sık yaptığı konusunda bilgi sahibi oldum. Bu yazıda bu sık yapılan hatalardan bahsedeceğim.
En çok yapılan hatalardan biri bir paketteki class'ı kullanıp o paketin import edilmemesidir. Bu nedenle derleyici böyle bir class'ın olmadığı gibi bir hata mesajı verir. Bu konuda diğer yapılan hata ise bir paket * ile import edildiğinde alt paketlerinde import edileceğini zannetmektir. Örneğin java.awt.* import etmeniz java.awt.event paketinin import edildiği anlamına gelmez. java.awt.event paketini ayrı olarak import etmelisiniz.
En çok hata bu konuda yapılıyor. Scope bir değişkenin yaşama alanı olarak düşünülebilir. Java'da yarattığınız bir değişkene her yerden erişemezsiniz. Değişkeni yarattığınız yere göre bu işlem değişir. Örneğin bir fonksiyon içinde bir değişken yarattıysanız bu değişkeni bu fonksiyonun dışında herhangi bir yerde kullanamazsınız. Örneğin aşağıdaki kodda bu tür bir hata bulunmakta.
class A{ void set(){ int a=4; ... } void get(){ int b=a*2; //burada a kullanılamaz. } }
set fonksiyonu içinde tanımlanmış bir a değişkeni get fonksiyonu içinden kullanılmaya çalışılıyor. Bu kod derlendiğinde hata oluşur. {} içinde yaratılan değişken ancak içerde kullanılabilir. Class'larda kullanılan değişkenler içinde aynı şey geçerli. Aşağıda A class'ı içinde yaratılan bir değişkene B class'ından erişilmeye çalışılıyor. Bu kod hata oluşturur.
class A{ int a=5; ... } class B{ int c=a*2; }
Ancak bir class değişkeni private değilse ClassAdı.değişkenAdı (örnekte A.a şeklinde) şeklinde erişilebilir.
Bir class içinde kurucular,değişkenler ve method'lar bulunur. Yazılan bir kod, kurucu veya method'ların içinde olmalı veya bir değişken ataması veya deklerasyonu olmalıdır. Örneğin aşağıdaki gibi bir ifade yanlıştır.
class A{ boolean b=true; if(b){ .. }else{ .. } }
yukarıdaki if-else bloğu yanlış yerdedir. Class'ın hemen içinde olamaz. Ya bir method'un ya da bir kurucunun içine koymanız gerekir.
Java'da kod dosyaları ClassAdı.java şeklindedir. ClassAdı.java dosyasının adı ile içindeki public class'ın adı aynı olmalıdır. Örneğin Test.java dosyası aşağıdaki gibi olursa bir hata oluşur.
class Test1{ ... }
Düzeltmeniz için ya class adını Test yapacaksınız ya da dosyanın adını Test1.java yapacaksınız.
Java'da her class istenilen pakete koyulabilir. Örneğin aşağıdaki class'ı com.godoro.tools paketine koyuyoruz.
package com.godoro.tools class A{ ... }
Bu class'ı yarattıktan sonra package ile başlayan satırı silerseniz derlediğinizde derleyici hata verir. Çünkü A.java dosyası com\godoro\tools klasöründedir. Siz package ifadesini silerseniz paketi olamayan bir class yaratmış olursunuz. A.java dosyasını com\godoro\tools klasörü içinden kaldırmanız gerekir.
Vector class'ı java.util paketindedir. Eğer sizde Vector ismiyle bir class yaratırsanız iki class ismi aynı olacaktır. Örneğin aşağıdaki gibi kod olamaz.
import java.util.*; class Vector{ Vector(){ Vector v=new Vector(); v.add("A"); } }
Burada derleyici Vector'un add method'un olmadığını söyleyecek. Vector sizin yarattığınız class'tır ve sizin yarattığınız class'ta add method'u yok. Bu yüzden kendi yarattığınız class'a başka bir isim vermelisiniz. ancak aynı ismi vermekte israr ediyorsanız java.util paketindeki vectoru kullanmak için
java.util.Vector v=new java.util.Vector();
şeklinde Vector class'ının tam adını yazarsınız. Böylece sizin yaptığınız Vector ile util paketindeki Vector çakışmamış olur.
|
|