Birinci soru için, bir sınıf hangi paket altında tanımlanmışsa, o paket yapısına göre klasörün altına koyulmalıdır. Dizin yapımız şöyle olsun
Program
|_ogrenim
|_alistirmalar
|__ornek_toplama
|__Test.java
Kodu çalıştırırken, en üstteki “Program” klasöründen şu şekilde çalıştırabilirsiniz
java ogrenim.alistirmalar.ornek_toplama.Test
Katılıyorum eğer android üzerinde çalışmak isterseniz şu uygulamayı kullanabilirsiniz. Oldukça iyi
Son soru için, bir sınıfta en fazla bir tane public sınıf olabilir. Diğerlerinin başına public koyamazsınız. başına public koyduğunuz sınıf ile dosya adı aynı olmalı. Şu şekilde
Test.java
class BaskaSinif{
//falan filan
}
public class Test{
// Asıl sınıf. Dosya adı ile aynı olmalı
}
Java kodları yazmanızı ve bunları çalıştırmanızı sağlıyor. Konsol uygulaması da geliştirebilirsiniz. Programı kullanırsanız daha iyi anlarsınız. Sıkıntı olursa yardimci olmaya çalışırız
Şurada, == ifadesinin aslında içerik kontrolünü değil de referans kontrolünü yaptığını yazmışlar. Ancak bu sadece nesneler için geçerlidir. Yani Bir sınıftan iki nesne oluşturup birbiriyle == operatoru kullanarak karşılaştırırsanız aslında içerikleri değil referanslarını karşılaştırmış olursunuz. Aşağıdaki örnekleri inceleyin isterseniz.
package deneme;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
String a = "merhaba";
String b = "merhaba";
if(a == b){ // eşit yazacaktır
System.out.println("Eşit: a == b");
}
String c = new String("hello");
String d = new String("hello");
if(c == d){ // çalışmaz çünkü bunlar bir nesne
System.out.println("Eşit: c == d");
}
int e = 5;
int f = 5;
if(e == f){ // eşit yazacaktır
System.out.println("Eşit: e == f");
}
Integer k = new Integer(10);
Integer l = new Integer(10);
if(k == l){ // çalışmaz çünkü bunlar bir nesne
System.out.println("Eşit: k == l");
}
}
}
Siz iki String’i karşılaştırırken, yine de equals() ifadesini kullanın
@coderistan’ın dediği gibi Java’da == işleci referansların aynı olup olmadığını kontrol eder. Tabii primitive tiplerde bu durum farklıdır; onlarda değer kontrolü yapılır. Mesela sayılar, boolean değerler, vb. sizin istediğiniz gibi çalışır. Tabii bunların Integer, Boolean sınıflardan örneklenen nesne karşılıkları da vardır ve bunlarda yine equals metodunu kullanmanız gerekir.
Hayır, şu anlama geliyor. Eğer == operatörünü iki nesne ile kullanırsanız, bu iki nesnenin aynı hafıza alanını işaret edip etmediğini kontrol edecektir. Normal tiplerle kullanırsanız(int,boolean gibi) bunların içeriklerinin eşit olup olmadığını kontrol edecektir. Şu örneği inceleyin isterseniz.
Ayrıca her dilin kendine has güzellikleri vardır. Bir dilin eksikliği, diğer dilin üstünlüğü anlamına gelmiyor. Örneğin Java’da switch-case olduğu halde, Python’da böyle bir yapı yok…
Python zaten oldukça hızlı gelişiyor. Java’dan daha hızlı geliştiğini bile söyleyebiliriz. Java enterprise dili olduğu için pek değişiklik yapılmıyor. Sürüm numaralarına pek takılmayın. Bir dilin sürüm numaralarının çok fazla değişmemesi o dilin kararlı olduğunu gösterir aslında.
Şuradaki programlama dili popülerlik dizinini sürekli takip ederim: TIOBE Index - TIOBE
Bir aralar Python 4. sıradaydı, sonra biraz düştü, ancak son zamanlarda C++'ı bile sollayarak 3. sıraya yerleşti. Yani aslında Python oldukça popüler. Tabii Java ve C’yi geçmesi kısa vadede pek mümkün değil. Daha güvenli oluşlarından dolayı derlenen diller her zaman üst sıralarda olacaktır. Ancak aslında derlenen diller ile yorumlanan dilleri birbirinden ayırmak lazım; ikisinin kullanım amaçları farklı. Derlenen dil diyince akla ilk gelen diller Java ve C ise, yorumlanan dil diyince akla ilk gelen dil de Python’dır. Son zamanlarda popülerleşen makine öğrenmesi, yapay zeka, sinyal işleme, veri bilimi, matematiksel hesaplamalar, vb. alanlarda çokça kullanılmasının Python’ın bu artan popülerleşmesine katkısı olduğu da oldukça açık.
Şimdi hatırladım da, 2 yıl önce 5. sınıfta bilişim teknolojileri öğretmenim ileri düzeyde java biliyordu, sağolsun bana algoritma mantığını öğretmişti ve bilgisayarlarla beni tanıştırmıştı. Ama python dilini hiç duymamıştı bile işte o gün çok üzülmüştüm, hatta “Python’ı kimse bilmiyor kimse kullanmıyor asıl iş C’de java’da ben kesinlikle onları öğrenmeliyim” demiştim. Bu forum sayesinde gördüm ben python’un gücünü. Ben python’u ilk başta bir blogda “Yemişim C++'ını python ne kolaymış!” diyen adamdan duydum zaten.
Merhaba;
Hata aldığımı tahmin etmişsinizdir. Kodların açıklama satırlarına bakın:
package myjavaproject;
public class MyJavaProject {
public static void main(String arg[]) {
long a=66666;
char m='a';
float k=1.1; // Hata alıyorum. double k=1.1 şeklinde kullanmam gerektiğini söylüyor
MyJavaProject.print("deneme") //Ve bunda da hata alıyorum. Hata aşağıdaki ikinci hatadır
}
void print(String arg) {
System.out.println(arg);
}
}
İlk aldığım hata:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: possible lossy conversion from double to float
at myjavaproject.MyJavaProject.main(MyJavaProject.java:7)
C:\Users\acer\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
İkinci hatam:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - non-static method print(java.lang.String) cannot be referenced from a static context
at myjavaproject.MyJavaProject.main(MyJavaProject.java:8)
C:\Users\acer\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
Python ile uğraşınca insan başka programlama dillerinde de işini kolaya getirmek istiyor.
Şimdiden teşekkürler
Java’da float bir tip belirtmek isterseniz, sayınızın sonuna “f” eki koymalısınız.
float sayi = 1.1f;
Eğer sonuna “f” eki koymadan tanımlamak isterseniz double veri tipini kullanın.
double sayi = 1.1;
İkinci sorununuz şu. Bir sınıfın adı üzerinden ona ait bir metoda ulaşmaya çalışmak. Yani nesne oluşturmadan. Python’daki sınıf yapılarını biliyorsunuzdur. Ve @staticmethod bezeyicisini de biliyorsunuz. Bu sayede bir sınıftan nesne oluşturmadan o sınıfta yer alan metotlara ulaşabiliyorduk.
İşte Java’da da bunu yapmak isterseniz, metodun başına “static” anahtarını eklemelisiniz. Yani şu şekilde olmalı
Rica ederim. Python’da static olmayan bir sınıf metoduna nesne oluşturmadan nasıl erişiyorsunuz? Mesela ben şöyle bir sınıf yazdım. Erişemiyorum neden peki? Yani self ile demek istiyorum.
#coding:utf-8
class Test(object):
def yaz(self,kelime):
print("Yaz metodu")
Test.yaz("merhaba") # hatalı