Java öğrenmek için hazırladığım örnekleri ve kaynakları bilgisayar ortamında saklayamıyorum. Not Defteri ile de denemeye çalıştım fakat beceremedim :)
Hazırladığım Çalışmaları internet ortamında saklamak hem benim hemde java öğrenmek isteyenler için fayda sağlayacağını düşünüyorum. Umarım java öğrenmek isteyenler için de faydalı bir konu olur.
Küçük bir uygulama için sade ve anlaşılır olması avantajı gözükse'de büyük projelerde nasıl bir sonuç çıkar hiç fikrim yok.
Buyuk uygulamalarda if icerisine eklenti oldugunda bunu ekleyen kisi parantez eklemezse sorun olusur. Bu sebeple if'ten sonraki statement tek satir dahi olsa parantez kullanilmasi daha dogru.
Bir de programmerlar arasinda iki farkli if acilimi gorulur Java icin
if(condition){ statement }
ya da
if(condition) { statement }
Ben ilkini tercih etsem de, C temelli kimselerin genelde ikinciye yoneldiklerini gozlemliyorum.
MephalayM
kullanıcısına yanıt
Başlangıç seviyesinde olduğumdan proje ve basit uygulama yazacak arkadaşların aklında bulunsun diye yazmıştım :)
Ben genellikle köşeli parantezlerin hangisinin açıp hangisinin kapattığını anlamak için 2. şekilde yapıyorum.
quote:
double s1= 123.44; int s2; s2=(int)s1; System.out.println(s1); System.out.println(s2);
2 Farklı değişken tipini değiştirme ve yeni değerini ekrana yazdırdım.
Burada dikkat edilmesi gereken kural iki tipinde birbiriyle uyumlu olmasıdır. Örnek olarak bir int değeri her zaman long değişkeni atayabilirsiniz. Fakat String ve boolean tipine atama yapamazsınız.
Tek Boyutlu diziler
Dizi oluşturmak için kullanılan komut :
tip degisken_adi[] = new tip[dizi_sayısı];
şeklindedir. Dizi oluşturmak için önce dizinin tipini bir değişkene tanımlandırılmalı sonra new kullanarak dizinin belleğini oluşturmalıyız.
Tek boyutlu dizi örnekler için;
quote:
String gun[] = new String[7]; gun[0] = "Pazartesi"; gun[1] = "Salı"; gun[2] = "Çarşamba"; gun[3] = "Perşembe"; gun[4] = "Cuma"; gun[5] = "Cumartesi"; gun[6] = "Pazar"; for (int i = 0; i < gun.length; i++) { System.out.println(gun); }
veya
quote:
String gun[] = {"pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar"}; for (int i = 0; i < gun.length; i++) { System.out.println(gun); }
şeklinde kullanabiliriz.
Heveslendirdin beni bu ay biraz yoğunum ama önümüzdek ay bende java ya başlıyacağım :D
başlığı okuyunca düşündüklerim doğru çıktı :D iyi fikir herkes açısından faydalı bir kaynak olur herhalde burası. daha sonra da başlık başlık belirtirseniz konular birikince yardımcı olur. kolay gelsin.
Zamanla konu oturduğunda bahsettiğinizi yapacağım.
@converttoint32
Hocam C++ biliyorsanız rahatlıkla öğrenebilirsiniz.
Atama Operatörleri
Atama Operatörleri genellikle bir değişkene yeni değer atılmak için kullanılır. Basit bir kod dizimi ile açıklamak gerekirse;
a= a+1; // a değerini 1 arttır anlamına gelir. buna alternatif olarak a += 1; 'de uygulanabilir.
Tabi bu işlem sadece arttırma için uygulanmıyor.
a -= 1; // Azaltma a *=5; // Çarpma a /=3; // Bölme a %= 3; // Kalan
işlemi de yapılmaktadır.
Bit Tabanlı Mantıksal operatörler
Bu konu her zaman canımı sıkmıştır :) Fakat bugün bu konu hakkında sorunlarımı bitireceğim. Alttaki örnekte a ve b değişkenlerine 1(true) ve 0(false) değerlerini atayıp operatörler ile bunları karşılaştırdık, peki bu operatörler hangi koşullarda 1(true) hangi koşullarda 0(false) değeri taşır.
a ---- b ---- a | b ---- a & b ---- a ^ b ---- ~a 0 ---- 0 ---- --0-- ---- --0-- ---- --0-- ---- --1 1 ---- 0 ---- --1-- ---- --0-- ---- --1-- ---- --0 0 ---- 1 ---- --1-- ---- --0-- ---- --1-- ---- --1 1 ---- 1 ---- --1-- ---- --1-- ---- --0-- ---- --0
OR(Veya) | Operatörü, 1 değeri taşırsa sonuç 1'dir. (yani iki sorgudan birisi true değeri taşırsa koşul true değeri dönecektir.) AND(Ve) & Operatörü, iki sorgu 1 değeri taşırsa sonuç 1'dir. (iki sorguda true değeri taşırsa sonuç true olacaktır.) XOR ^ Operatörü iki sorguda tek 1 değeri taşırsa sonuç 1 taşır, diğer koşullarda sonuç 0'dır. Not(Değil) operatörü ise sorgunun tersini alır. (True değer false, false ise true)
Bir konuyu açıklamak için yazdıklarım kafanızı karıştırdıysa aşağıdaki örnek ile devam edelim.
quote:
String binary[] = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"}; int a =2; //0010 int b =6; //0110 int c = a&b; System.out.println(binary[c]);
integer tipinde 3 değişkenimiz var. Bunların ikili sistemdeki değerlerini sağ tarafına yazdım. c adındaki int değişkenimizi binary dizisindeki hangi değere eşit olduğunu öğrenerek ekrana yazılmasını sağlıyoruz.
Üstteki örneğimizde Ve operatörünü kullandığımızdan iki değişkende 1 değeri var ise sonuç 1, diğerleri için 0 yazacaktır.
Ekran çıktısı olarak 0010 alacağız.
Bit operatörleri mantıksal değildir kardeşim, true false döndürmezler. C# konusunda da aynı şeyi gördüm geçen. Bazı arkadaşlar | ve & operatörünü || ve && ile aynı şey zannediyor. Hadi java falan böyle durumlarda hataya izin vermez ama birgün c++ kodu falan yazarsanız fena yamulursunuz.
quote:
Orijinalden alıntı: elektro_gadget
Bit operatörleri mantıksal değildir kardeşim, true false döndürmezler. C# konusunda da aynı şeyi gördüm geçen. Bazı arkadaşlar | ve & operatörünü || ve && ile aynı şey zannediyor. Hadi java falan böyle durumlarda hataya izin vermez ama birgün c++ kodu falan yazarsanız fena yamulursunuz.
True ya da false dondurmemeleri mantiksal olmadiklari anlamina gelmez. AND ya da OR yapiyor olmalari bunu mantiksal yapiyor zaten. Sadece bitwise calistiklari icin true yerine 1 false yerine de 0 sonucu uretiyorlar her bit icin.
Hocam Alttaki örnek ile kısaca açıklayım. Bazı terimleri yanlış kullanmış olabilirim fakat temeli anlaşılır olduğunu düşünüyorum.
Ve operatörü'de koşulların true olması sonucunda true dönecektir. Fakat yaptığımız örnekte bir koşul true değerini döndürmediği için ekran çıktısı olarak
Örnekte ikili sistem ile açıklamak istedim çünkü basit
quote:
Orijinalden alıntı: Mephalay
True ya da false dondurmemeleri mantiksal olmadiklari anlamina gelmez. AND ya da OR yapiyor olmalari bunu mantiksal yapiyor zaten. Sadece bitwise calistiklari icin true yerine 1 false yerine de 0 sonucu uretiyorlar her bit icin.
Oradaki 1 0 lar boolean değil integer dir. Mantıksal bir işlem sadece doğru ve yanlış döndürür. Aksi halde mantıksal değildir. Milletin kafası bu yüzden karışıyor. Anlattıkları konuya hakim olmayan acemi yazarlar da bunu körüklüyor. Aşağıdaki kod C' de çalışır ve "true BITWISE AND true" işleminden false üretir.
int a = 1, b = 2; if(a & b) printf("Bunu yazmaz");
Bit operatörleri mantıksal olsaydı sonuç böyle olmazdı.
quote:
Orijinalden alıntı: elektro_gadget
quote:
Orijinalden alıntı: Mephalay
True ya da false dondurmemeleri mantiksal olmadiklari anlamina gelmez. AND ya da OR yapiyor olmalari bunu mantiksal yapiyor zaten. Sadece bitwise calistiklari icin true yerine 1 false yerine de 0 sonucu uretiyorlar her bit icin.
Oradaki 1 0 lar boolean değil integer dir. Mantıksal bir işlem sadece doğru ve yanlış döndürür. Aksi halde mantıksal değildir. Milletin kafası bu yüzden karışıyor. Anlattıkları konuya hakim olmayan acemi yazarlar da bunu körüklüyor. Aşağıdaki kod C' de çalışır ve "true BITWISE AND true" işleminden false üretir.
int a = 1, b = 2; if(a & b) printf("Bunu yazmaz");
Bit operatörleri mantıksal olsaydı sonuç böyle olmazdı.
Dostum, senin anlatmak istedigini anliyorum. Ama mantiksal dedigimiz olay bildigimiz "and" ya da "or" operasyonlarina deniliyor. Yani sonucu ben istersem Hashmap donderirim istersem Integer donderirim; bu, islemin mantiksal olmadigi anlamina gelmez ben onu demek istiyorum. Or ya da AND islemleri "mantiksal" islemler, biz & ya da | kullandigimiz her durumda mantiksal bir islem yapmis oluyoruz.
Dedigini anliyorum, katiliyorum da diger noktalara. Sadece "&" ve "|" operatorleri mantiksal operatorler degildir demene karsi cikiyorum. Cunku onlar da mantiksal operatorlerdir , sadece bunu bitwise yaparlar.
Son mesajımı yazıp kendi adıma konuyu kapatıyorum. Bence siz mantığın ne olduğu konusunda biraz çalışın. Kesin veri var önümüzde, bir işlemin sonucu 2 seçenekten fazla ise mantıksal olamaz. Matematiksel mantık neyse bu da aynısı.
Aşağıda XOR ve AND kullanılan çok basit bir devre var. Bu devre 2 adet mantık kapısından oluşur fakat kendisi aritmetik sonuç üretir. 1 bit eldeli toplayıcı.
quote:
Orijinalden alıntı: elektro_gadget
Son mesajımı yazıp kendi adıma konuyu kapatıyorum. Bence siz mantığın ne olduğu konusunda biraz çalışın. Kesin veri var önümüzde, bir işlemin sonucu 2 seçenekten fazla ise mantıksal olamaz. Matematiksel mantık neyse bu da aynısı.
Aşağıda XOR ve AND kullanılan çok basit bir devre var. Bu devre 2 adet mantık kapısından oluşur fakat kendisi aritmetik sonuç üretir. 1 bit eldeli toplayıcı.
Bu dediginize katiliyorum.
Ama bu dediginiz ile, su dediginiz celisiyor.
quote:
Oradaki 1 0 lar boolean değil integer dir. Mantıksal bir işlem sadece doğru ve yanlış döndürür.
Bu yanlis bir bilgi. Logic operation iki den fazla deger donme ihtimaline sahip olamaz. Ama bu istersen true-false olur, ister 49-50. Istersen transistordeki gibi high voltage - low voltage . Ben buna itiraz ediyorum.
Verdiginiz Half-Adder ornegi ile de zaten ilk soylediginizi yanlislamis oldunuz.
Hazır operatörler ile ilgili bu kadar konuşmuşken ilişkisel operatörden de bahsedelim.
İlişkisel operatörler bir koşulun diğer koşula olan ilişkisini belirler.
Operatörler ---- Sonuç ---- == ---------- Eşittir ---- != ---------- Eşit Değildir ---- > ----------- Büyüktür ---- < ----------- Küçüktür ---- >= --------- Büyük veya eşittir. ---- <= --------- Küçük veya eşittir.
Operatörlerimiz kısaca bunlar, Farklı bir if yapısı ile bir örnek yapalım.
quote:
int s1 = 15; int s2 = 55; boolean sonuc = (s1>s2);
if (sonuc) System.out.println(sonuc); else { System.out.println(sonuc ); }
2 tane integer değişkenimizi boolean tipi değişkene atıyoruz. (sonuc = (s1>s2)) Attığımız değerde bir karşılaştırma olduğu için if içerisine sadece değişken adını yazarak sonucu alıyoruz.
Java dilinde tüm uygulamarımızda sınıfları kullanacağız. Sınıf örneğimiz için dikdörtgenin alanı hesaplayan bir uygulama yazdım.
quote:
class dikdortgen{ double buyuk_kenar; double kucuk_kenar; }
dikdorgen adında bir sınıf oluşturdum. içerisine buyuk_kenar ve kucuk_kenar adlı değişken tanımladım.
quote:
public class DH_Shu{ public static void main(String args[]) { dikdortgen alan = new dikdortgen(); double hesapla; alan.buyuk_kenar=3; alan.kucuk_kenar=2; hesapla = alan.buyuk_kenar*alan.kucuk_kenar; System.out.println("Dikdörtgenin alanı: " + hesapla); } }
Sınıfımızı nesneye çevirmek için dikdorgen alan = new dikdortgen(); ifadesini kullandık. oluşturduğumuz nesne ile dikdorgen sınıfımızdaki nesnelere değer atayıp hesapla değişkeni ile alanımızın sonucunu saklayıp println ile ekrana yazdırıyoruz.
Sınıfları java her uygulamasında kullanacağımızdan bir kaç örnek daha yapmayı planlıyorum.
Oluşturduğumuz sınıfı birden fazla değer taşımasını sağlamak mümkündür. Bunun için
quote:
kare alan1 = new kare(); kare alan2 = new kare();
şeklinde uygulayabiliriz.
quote:
class ogrenci{ String ad; String soyad; String sinif;
ogrenci adı sınıfımız içerisinde 3 tane string değeri taşıyan değişkenlerimiz var. Bunları yazdir metodu yardımı ile ekrana yazdırmasını sağlayacağız. Tabi bunun için de değişkenlerimiz için değer olması lazım, public static void main kısmında sınıflarımızı tanımlayıp değerlerini yazdırıyoruz.
ekran çıktımız;
quote:
Öğrencinin adı: Emre Soyadı: Kocaahmet Sınıfı: A-10C ------------- Öğrencinin adı: Ali Soyadı: Kemal Sınıfı: T-11A