Java 101 :) NetBeans ve Java çalışma Mantığı, Değişken Tanımlama, Veri tipleri ve Operatörler.

Merhabalar,

İlk yazım javadan olsun. Java’nın en başından başlayacağız. Ancak aslında burada bahsedeceğim kavramlar tüm programlama dillerinin temelini oluşturmakta. Dolayısıyla hangi dili kullanırsanız kullanın bahsedilen kavramları kullanacaksınız demek oluyor. Kavramların dile göre ifade ediliş biçimleri farklı da olsa yüklendikleri görevler genellikle aynı oluyor. Peki nedir bu kavramlar? Başlıcaları; veri tipleri, değişkenler ve operatörler…

Başlamadan önce ilk olarak programlarımızı yazacağımız IDE’nin(Integrated Development Environment) kurulumunu ve javanın çalışma mekanizmasına değinelim. Nedir bu IDE diyenler için kısaca programı yazıp, derleyip, çalışır hale getirdiğimiz ortamlar diyebiliriz. En çok kullanılanlar: Android Studio, Eclipse, Microsoft Visual Studio, Code::Blocks, Dev-C++, Anjuta, KDevelop, NetBeans.

Java derslerinde kullanacağım IDE, Netbeans olacak. Dileyenler Android Studio ya da Eclipse de kullanabilirler. Amacınız android uygulama geliştirmekse Android Studio’da çalışmak yararınıza olacaktır. Ancak android uygulama geliştirmek için öncelikle java öğrenmelisiniz. Dolayısıyla şimdilik beraber Netbeans üzerinden gidelim.

Netbeans Oracle tarafından geliştirilen çok geniş bir kitleye sahip ücretsiz java geliştirme ortamıdır. Masaüstü uygulamalarından, büyük çaplı otomasyon sistemlerine, web uygulamalarından, mobil uygulamalara kadar çok çeşitli projeler geliştirebilirsiniz.  Öncelikle netbeans’i bilgisayarımıza kurmakla başlayalım. Netbeans’i kurmak tek başına yeterli değil, java diliyle programlar geliştirebilmek için bilgisayarımızda JDK’i(Java Development Kit) de yüklü olması gerekiyor. Buradan JDK  ile beraber indirebilirsiniz.

Java nasıl çalışır?

Yazdığımız java kodları “.java” uzantısıyla kaydedilir ve derleyiciyle derlendikten sonra “.class” uzantılı bytecode denen makina dili ortaya çıkar. Ancak bu kodun hala işlemci tarafından anlaşılması mümkün değildir. Programımızın çalışması için tekrardan derlenip işlemciye anlatılması gerekmektedir. İşte burada bu görevi JRE(Java Runtime Environment) yükleniyor. JRE dediğimiz yapı bünyesinde çeşitli java kütüphaneleri ve JVM(Java Virtual Machine)  barındırır. Java kodlarının çalıştırabilmesi için işletim sisteminin kendi sanal makinasının kurulu olması  gereklidir. JVM’nin kodları yorumlamanın yanında,  kod parçalarının belleğe yükleme ve çalıştırma sırasındaki güvenlik denetimlerinin yapılması, sınıf dosyalarının çalıştırılması sırasında bellekte oluşacak çöplerin toplanması ( garbage collection)  gibi temel görevleri vardır. Kod yazımından çalıştırmaya kadar olan adımları akış diyagramından görebilirsiniz.:

flow

Evet, Netbeans’i JDK ile birlikte indirip next next diyerek kolayca kurduk 🙂 Java’nın çalışma mantığına da genel hatlarıyla değindik. Artık kod yazabiliriz. Veri tipleri nelerdir bununla başlayalım. Veri tipleri;

İlkel (primitive) Veri Tipleri, Referans tipleri, Null veri tipi şeklinde 3’e ayrılırlar.

İlkel Veri Tipleri

  • Sayısal Veri Tipleri  =====>    Tamsayı Veri Tipleri (byte, short, int , long, char), Kesirli Sayı Veri Tipleri  (float, double)
  • Mantıksal(boolean) Veri Tipleri

Referans Veri Tipleri

class

interface

array

İlkel Veri Tipi Uzunluk Minimum Değeri Maximum Değeri Gömüldüğü Sınıf
char   16-bit   Unicode 0   Unicode 216-1   Character
byte   8-bit   -128   +127   Byte
short   16-bit   -215
(-32,768)
  +215-1
(32,767)
  Short
int   32-bit   -231
(-2,147,483,648)
  +231-1
(2,147,483,647)
  Integer
long   64-bit   -263
(-9,223,372,036,854,775,808)
  +263-1
(9,223,372,036,854,775,807)
  Long
float   32-bit   32-bit IEEE 754 floating-point numbers (kesirli sayı)   Float
double   64-bit   64-bit IEEE 754 floating-point numbers (kesirli sayı)   Double
boolean   1-bit true  ya da  false   Boolean
void   Void

Tabloda ilkel veri tiplerini, bellekte tutabilecekleri maksimum/minumum değerlerini ve gömülü oldukları sınıfları görüyoruz. Java dili OOP(Object Oriented Programming) konseptiyle yazılmış bir dil olduğu için ilkel veri tiplerinin hepsi aslında bir sınıftan türetilir. Ancak java nesnenin oluşturulması gerekmeksizin ilkel veri tiplerinin kullanımına olanak sağlar. Bu sayede kod yazmayı basitleştirir ve hız kazandırır.  İlkel veri tipleri sadece oluşturduğumuz değerleri tutar ve kodumuzun istediğimiz bölgesinde bu değeri çağırmaya yarar. Ancak değişkenlerimizi nesne olarak tanımladığımız zaman bu değişken üzerinde tanımlanan sınıfın methodlarını da kullanmamıza imkan tanır. Aşağıdaki kod bloğunu incelersek;

public class Application {


 public static void main(String[] args) 
 {
 // DEGISKEN TANITMA
 // Tur degiskenAdi = DegiskenDegeri;
 
 short s = 10;
 System.out.print("Short Icin : ");
 System.out.println(
 Short.MIN_VALUE+" - "+Short.MAX_VALUE); //short veri tipinin max-min //değerlerini bastırır.
 
 int in = 5;
 System.out.print("Integer Icin : ");
 System.out.println(
 Integer.MIN_VALUE+" - "+Integer.MAX_VALUE); 

 long l = 748565841485L;
 System.out.print("Long Icin : ");
 System.out.println(Long.MIN_VALUE+" - "+Long.MAX_VALUE);
 
 float f = 7.222f;
 System.out.print("Float Icin : ");
 System.out.println(Float.MIN_VALUE+" - "+Float.MAX_VALUE);
 
 double pi = 3.141;
 System.out.print("Double Icin : ");
 System.out.println(Double.MIN_VALUE+" - "+Double.MAX_VALUE);
 
 // Byte
 byte b = 12;
 System.out.println("Byte Icin : "
 +Byte.MIN_VALUE+" - "+Byte.MAX_VALUE);
 
 // CHAR VERI TIPI SADECE BIR KARAKTER ALIR
 
 char anliyorMuyuz = 'E'; 
 System.out.println(anliyorMuyuz);

 boolean yazilimZorMu = false; 
 boolean siteyiSevdikMi = true;
 
 //INTEGER NESNE VERİ TİPİ 
 Integer i = 18;
 System.out.print("Integer Icin : ");
 System.out.println(
 i.MIN_VALUE+" - "+i.MAX_VALUE);
 
 //STRING NESNE VERİ TİPİ
 String ad="ahmet";
 System.out.println(ad); //String veri tipinin alabileceği maksimum
 //karakter sayısı integer bir sayının 
 //max değeri kadardır. (2^31-1)
}
}

İlkel veri tipleri sadece değişken tanımlayıp kodumuzun istediğimiz yerinde değişkenin değerini çağırmaya yarar. İlkel veri tiplerinin gömülü oldukları sınıfların metodlarına ve değerlerine erişemediklerini söylemiştik.  Örneğin ilkel short veri tipi olarak tanımlanan “s” değişkeninin maksimum ve minimum değerlerini konsola bastırabilmek için Short sınıfını kullanmamız gerekir.

==>  Short.MIN_VALUE+" - "+Short.MAX_VALUE);  Ancak Integer bir nesne olarak tanımlanan “i” değişkeni için “i.” yazıp “ctrl+space” tuşlarına basarsak max-min değerlerine, diğer değerlere ve metodlara doğrudan erişebildiğimizi görürürüz. ==>  System.out.println(i.MIN_VALUE+" - "+i.MAX_VALUE);  

 

Ufak bir dipnot olarak netbeans’i açıp proje açarak kodlama yapmaktan da resimlerle bahsedeyim. Yukarıdaki kodların çıktılarını sizler de kontrol edebilir ve farlı kodlar denemeye başlayabilirsiniz. Bu arada netbeans kullanımıyla ilgili daha kapsamlı bir yazı yazmayı planlıyorum.

Netbeans’i çalıştırdığımızda ilk olarak start page ile karşılaşacaksınız. Dilerseniz netbeas’in tutorial ve dökümanlarına da buradan ulaşabilirsiniz. Yeni projemizi açmak için yapmamız gereken File > New Project sekmesine tıkladıktan sonra karşımıza gelecek ikinci pencerede java apllication seçiliyken next ile ilerlemek;

 

(Resim 1)

Start Page

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Resim 2)

Proje

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sonrasında yapmamız gereken Projemizin ismini ve kaydedileceği lokasyonu belirlemek olacak. Ayrıca Resim 3’teki gibi Create main class bölümündeki checkbox’u işaretli olarak bırakırsak, projemiz oluşturulduğunda otomatik olarak projemizin adıyla aynı ada sahip paket ve bir java sınıfı, main metoduyla beraber oluşturulmuş olur. Main metodu sınıfımızın executeable(çalıştırılabilir) olmasını sağlar ve çalışmasını istediğimiz sınıfları, metodları ve diğer kodları main içerisinde yazarız. Dolayısıyla her java programında bir main metodu bulunur diyebiliriz.

 

(Resim 3)

Proje oluşturma

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Application adıyla bir proje oluşturduk.

(Resim 4)

Proje Sayfası

 

Son olarak Resim 4’teki gibi projemiz kod yazımına hazır bir şekilde açılmış olur. Kodu yazacağımız alan ortadaki en büyük editör alanıdır. Onun altındaki alanda ise kodu çalıştırdığımızda olaşan çıktılar, meydana gelebilecek hataların vs. düştüğü konsol alanıdır.(output) Sol tarafta bulunan bölümlerden üstteki kısımda oluşturulan proje klasörünün hiyerarşik yapısı gösterilir.Java sınıfları, frameler, paneller, interfaceler, görseller, text dosyaları, database dosyaları, kütüphalener vs hepsi bu alandan eklenebilir ve hepsine yine bu alandan ulaşabiliriz. Java sınıfları, interfaceler, paneller vs. gibi kod dosyalarının hepsi Source Packages altında tutulur. Projeyi açarken ilk sınıfımız olan Application sınıfının da application paketinin içerisinde, Source packages altında tutulduğunu görmekteyiz. Bu alanın altında ise navigator bölümü bulunmakta. Navigator alanında ise o anda içinde bulunduğumuz sınıfta tanımlanan değişkenler, sınıflar, metodlar vs. gösterilir. 

 

Şimdi gelelim bu yazıda değineceğimiz son konu olan operatörlere. Aşağıdaki kod parçasında öperatörler hakkında örnekler ve  gerekli bilgileri bulabilirsiniz;

 // "=" (Atama Operatörü) Bu operatör degişkenlere deger atamamızı sağlar.
 int sayi1 = 32 ;
 int sayi2 = sayi1 ;
 String isim = "Ahmet"; //String veri tipi nesne tabanlı bir veri tipi
 //olup, çokca kullanılır. Değişkenlere yazı formatında 
 //değerler atar. char veri tipinde 1 karakter 
 //kullanabiliyorken, String'de karakter sınırı integer 
 //sayıların maximum değeri kadardır(2^31 - 1).
 
 //ARİTMETİK OPERATÖRLER
 int a = 5; 
 int b = 12;
 
 System.out.println(a+b); // a ile b değişkenlerini toplar, sonucu konsola bastırır.
 System.out.println(a-b); // a ile b değişkenlerini çıkarır, sonucu konsola bastırır.
 System.out.println(a*b); // a ile b değişkenlerinin çarpımının sonucunu bastırır.
 
 System.out.println(b/a); // b değişkeninin a'ya bölümünün sonucunu gösterir.
 // burada b değişkeni integer olarak tanımlandığı için 
 // bölme işleminin sonucunun 2.4'e en yakın değer olan "2"
 // integer değerine yuvarlandığını görürüz. Eğer değişken
 // double ya da float olarak tanımlansaydı, o zaman sonucu
 // 2.4 şeklinde görebilirdik.
 
 System.out.println((double)b/a); // ya da yuvarlamayı önlemek için sonucu double'a 
 // cast ederiz. Casting konusuna bir sonraki yazımda değineceğim.
 
 
 //"+" operatörü aynı zamanda sayısal veri tiplerini, karakter yapılı veri 
 //tiplerine çevirir.
 System.out.println(isim+" "+b+" yaşında.");
 
 
 System.out.println(b%a); // "%"(mod) operatörü b'nin a'ya bölümünden kalan değeri verir.
 
 
 
 //ARİTMETİK ARTIRMA EKSİLTME OPERATORLERİ
 
 //"++" operatörü uygulandığı değişkenin değerini 1 artırır.
 a++;
 System.out.println(a);
 ++a;
 System.out.println(a);
 
 //"--" operatörü uygulandığı değişkenin değerini 1 azaltır.
 b--;
 System.out.println(b);
 --b;
 System.out.println(b);
 
 
 //"++" ya da "--" operatorunun değişkenden önce ya da sonra kullanılmasının arasındaki
 // temel farkı aşağıdaki kod parçalarında görebiliriz. Önce kullanıldığı zaman c'yi
 // bir artırdıktan sonra s'ye atarken, sonra kullandığımız örnekte k'nın ilk halini t
 // değişkenine atar ve sonra bir artırır.
 int c = 3;
 int s = ++c; 
 System.out.println(s); //konsola 4 sonucunu bastırır.
 int k = 3;
 int t = k++;
 System.out.println(t); //konsola 3 sonucunu bastırır.
 
 //ARİTMETİK ATAMA OPERATÖRLERİ
 int x = 20;
 int y = 4;
 
 x+=y; //sağdaki değişkeni soldakine ekler ve sonucunu atar.
 System.out.println(x); 
 
 x-=y; //sağdaki değişkeni soldakinden çıkarır ve sonucunu atar.
 System.out.println(x); 
 
 x*=y; //sağdaki değişkeni soldakiyle çarpar ve sonucunu atar.
 System.out.println(x);
 
 x/=y; //sağdaki değişkeni soldakiyle böler ve sonucunu atar.
 System.out.println(x);
 
 x%=y; //sağdaki değişkenin soldakine bölümünden kalanı bulur 
 System.out.println(x); //ve sonucunu atar.
 
 
 //ILISKISEL OPERATORLER
 
 System.out.println(16 > 14); //Sonuç = true
 System.out.println(16 < 14); //Sonuç = false
 System.out.println(16 >= 14); //Sonuç = true
 System.out.println(16 <= 14); //Sonuç = false
 System.out.println(16 == 14); //Sonuç = false
 System.out.println(16 != 14); //Sonuç = true
 
 
 
 //MANTIKSAL OPERATORLER
 
 /*
 AND Operatörü : Bu operatör &&
 veya & ifadeleri ile kullanılabilir.Bu operatörü kullanırsak
 sagında ki ve solunda ki iki koşulda dogru olmalıdır.

 OR Operatörü : Bu operatör | | veya |
 ifadeleri ile kullanılabilir.Bu operatörü kullanırsak sagında ki ve
 solunda ki iki koşuldan birisinin dogru olması yeterlidir.

 NOT Operatörü : Bu operatör ! ifadesi ile kullanılabilir.Bu operatörkendisinden
 sonra gelen mantıksal ifadenin degilini alır.

 XOR Operatörü :Her iki ifade dogru veya yanlış ise false birisi dogru birisi yanlış ise true döner
 */
 
 int f=10;
 int h=5;
 boolean o=true;
 System.out.println(f > h && h > 2); //Sonuç = true
 System.out.println(f > h & h > 2); //Sonuç = true
 System.out.println(f > h && h > 7); //Sonuç = false
 System.out.println(f > h || h > 7); //Sonuç = true
 System.out.println(h > f || h > 2); //Sonuç = true
 System.out.println(f > h ^ h > 2); //Sonuç = false
 System.out.println(f > h ^ h > 7); //Sonuç = true
 System.out.println(h > f ^ h > 2); //Sonuç = true
 System.out.println(h > f ^ h > 7); //Sonuç = false
 System.out.println(!o); //Sonuç = false
 
 
 /*
 
 Islemsel operatorlerin çalışma mantığı
 
 X Y Not X(!X) Not Y(!Y) X AND Y X OR Y X XOR Y
 false false true true false false false
 false true true false false true true
 true false true true false true true
 true true true false true true false
 */
 
 
 
 //BIT TABANLI(BITWISE) OPERATORLER
 
 /*
 Bitwise operaörler değişkenleri ikilik tabana çevirir ve çevirdikleri değerler
 üzerinde işlem yapar.
 
 AND Operatörü( & ) : Sagında ki ve solunda ki degerleri 2’lik sayı 
 sistemine çevirir ve AND işlemini yapar.
 
 OR Operatörü ( | ) : Sagında ki ve solunda ki degerleri 2’lik sayı 
 sistemine çevirir ve OR işlemini yapar.
 
 XOR Operatörü ( ^ ) : Sagında ki ve solunda ki degerleri 2’lik sayı
 sistemine çevirir ve XOR işlemini yapar.
 
 Tamamlama Operatoru ( ~ ) : Sagında ki ve solunda ki degerleri 2’lik sayı 
 sistemine çevirir ve biti 0 olanı 1 yapar,1 olanı da 0 yapar.
 
 Kaydırma Operatorleri (<< , >>) : Sagında ki ve solunda ki degerleri 2’lik sayı 
 sistemine çevirir ve istenildigi kadarıyla saga veya sola kaydırılır.
 */
 
 int m = 4; //0000 0100 
 int n = 7; //0000 0111
 int result = m & n; //0000 0100 sonuc = 4
 System.out.println(result);
 
 result = m | n ; //0000 0111 sonuc = 7
 System.out.println(result);
 
 result = m ^ n ; //0000 0011 sonuc = 3
 System.out.println(result);
 
 System.out.println(~m); //1111 1011 sonuc = -5
 //negatif tam sayıların binary ifadesi
 //pozitif halinin 2'ye tümleyeninin 1 eklenmesiyle
 //elde edilir. Java tamamlama işlemiyle ortaya çıkan 
 //binary sayıyı bu şekilde yorumlar.
 
 System.out.println(m >> 1); //0000 0010 sonuc = 2 
 System.out.println(m << 4); //0100 0000 sonuc = 64
 
 
 // ? OPERATORU
 
 //Java programlam dilinde 3 argüman alan tek operatördür,
 //bir degişkene şartlı atama yapılamsını saglar.
 
 int sayi3 = 15;
 int sayi4 = 10; 
 int sayi5 = 30;
 System.out.println(5 > sayi3 ? sayi4 : sayi5); //5, sayi3'ten büyükse sayi4'ü değilse
 // sayı5'i bastıracaktır. Sonuc = sayi5(30)
 
 System.out.println(16 > sayi3 ? sayi4 : sayi5);//Burada ise 16 sayi3'ten büyük olduğu için
 //sayi4 bastirilir. Yani sonuc = sayi4(10)

 

İşlemcimizin kodlarımızı okurken operatörlerde belirli bir sıraya göre işlem yaptığını unutmamak gerekir. Matematikteki işlem sırası gibi düşünebiliriz. Operatörlerle işlem yapılırken sıralama aşağıdaki tablodaki gibi olur, önceliği yüksek olan ilk çalışacak operatördür;

Operatör Öncelik Okunuş
 Parantez  ( )  11  Soldan Saga
Sonra artır, Sonra eksilt, Nokta ++

.

 10   Sagdan Sola
Önce Artır, Önce Eksilt,Tekil Operatörler ++

!

 9  Soldan Saga
Tip Atama, Nesne Oluşturma  (type)new  8  Soldan Saga
Çarpma-Bölme   */%  7  Soldan Saga
Toplama-ÇıkarmaString Toplama  +

+

 6  Soldan Saga
İlişkisel Operatörler  <

<=

>

=>

 5  Soldan Saga
Eşitlik İnceleme  ==

!=

 4  Soldan Saga
Mantıksal XOR  ^  3  Soldan Saga
 Mantıksal AND  &&  2  Soldan Saga
 Mantıksal OR  ||  1  Soldan Saga
 Atama Operatörleri  =  0  Sagdan Sola

 

İlk yazımızın sonuna geldik. Bir sonraki yazıda görüşmek üzere..

0

1 comment for “Java 101 :) NetBeans ve Java çalışma Mantığı, Değişken Tanımlama, Veri tipleri ve Operatörler.

Leave a Reply

Your email address will not be published. Required fields are marked *