Javada Değişkenler,Veri Tipleri,Veri Tip Dönüşümleri

Değişkenler verileri tutan yapılardır. Sınıf değişkenleri(Class Variables),Anlık değişkenler(Instance Variables) ve Yerel Değişkenler(Local Variables) olmak üzere üç şekli vardır.

Tanımı:

Erişim Belirteci+Anahtar Sözcük(Varsa)+Veri Tipi+Değişken Ismi 

şeklindedir.

Erişim Belirteci: public,protected,friendly,private şeklinde 4 tanedir. İhtiyaca göre herhangi bir tanesi       kullanılır. Değişkene erişimin kısıtlarını belirler.

Anahtar Sözcük:final,static gibi anahtar sözcükler değişken tanımlanırken gerektiğinde kullanılabilir.Degişkene ek özellik katarlar.

Veri Tipi: Değişkenin tuttuğu verinin tipini belirtir. Temel Veri Tipi(primitif) ve Referans Veri Tipi(Wrapper) olarak ikiye ayrılır.

       1.Temel Veri Tipi(Primitif):

Primitif veri tipleri değişkenin kopyasını kullanırlar. Belleğin stack(yığın) bölgesinde bulunurlar.

Bit Aralık (varsayılan)İlk Değer
Byte 8 bit-1byte -128 ,127 0
Short 16 bit-2 byte -32768,+32767 0
Integer 32 bit-4 byte -231,+231-1 0
Long 64 bit-8 byte -263,263-1 0L
Float 32 bit-4 byte -3.4 1038,3.4 1038 0,0f
Double 64 bit-8 byte -1.7 10308,1.7 10308 0,0d
Char 16 bit-2 byte \u0000
String Null
Boolean false

şeklindedir.

Kod Örneği ve Bellek Durumu;

package JavaBlokYaziKodlarim;
public class PrimitifveReferansTipleri {
public static void main(String[] args) {
//Primitif değişkenler belleğin stack bölgesinde bulunurlar ve değişkenin kopyasını kullanırlar.
int prmtf1=15;
int prntf2=25;
prmtf1
System.out.println(“prmtf1:”+prmtf1);
System.out.println(“prmtf2:”+prntf2);

prmtf1=prntf2;

prmtf2
System.out.println(“prmtf1:”+prmtf1);
System.out.println(“prmtf2:”+prntf2);

prmtf1=20;

prmtf3
System.out.println(“prmtf1:”+prmtf1);
System.out.println(“prmtf2:”+prntf2);
}
}

        2.Referans Veri Tipi(Wrapper)

Referans veri tipleri primitif veri tiplerinin sınıf örnekleridir. Primitif veri tiplerini kapsarlar(wrapper). Belleğin heap bölgesinde tutulurlar. Stack bölgesinde değişkenin adresi,  heap bölgesinde degeri tutulur.

Sınıf örnekleri oldukları için sınıfın sahip olduğu metodları kullanabilirler.

Vektör ,koleksiyon içinde tutulabilirler.

Hashmap anahtar değeri olarak kullanılabilirler.

Serileştirme işlemi yapılabilirler.

Null değer alabilirler.

Kod Örneği ve Bellek Durumu

package JavaBlokYaziKodlarim;

/**
*
* @author Sezayi
*/
public class ReferansVeriTipi {

public int değer1;
public int deger2;

public ReferansVeriTipi() {
this.değer1 = 0;
this.deger2 = 0;
}

public ReferansVeriTipi(int değer1, int deger2) {
this.değer1 = değer1;
this.deger2 = deger2;
}

public void yaz() {
System.out.println(“deger1:” + this.değer1 + “\ndeger2:” + this.deger2 + “\n”);
}

}

package JavaBlokYaziKodlarim;

/**
*
* @author Sezayi
*/
public class ReferansVeriTipiMain {

public static void main(String[] args) {
ReferansVeriTipi ref1 = new ReferansVeriTipi(10, 20);
ref1.yaz();
ref1
ReferansVeriTipi ref2 = new ReferansVeriTipi(30, 40);
ref2.yaz();

ref2

ref1 = ref2;

ref3
ref1.yaz();
ref2.yaz();

ref1.değer1 = 4;
ref1.deger2 = 3;

ref4
ref1.yaz();
ref2.yaz();
}
}

Veri Tipi Dönüşümleri

Primitif veri tipleri ve Referans veri tipleri kendi içlerinde de birbirleri arasındada dönüşüm yapabilirler.

Primitif veri->Referans veri tipine dönüşüm :boxing

Referans veri->Primitif veri tipine dönüşüm: unboxing olarak adlandırılır.

Dönüşüm yapılırken ;

Küçük veri tipinden büyüğüne dönüşüm otomatik gerçekleşir . Büyük veri tipinden küçüğe dönüşümlerde veri kaybı yaşanacağından dikkat edilmesi gerekir ,cast işlemi gerekir.

Kod Örneği

package JavaBlokYaziKodlarim;/**
*
* @author Sezayi
*/

/*
Java uygulamalarında kullanılan veri türleri arasında uyumsuzluk olduğunda boyutu küçük olan veri tipi otomatik olarak
boyutu büyük olan veri tipine dönüştürülür.

*/
public class TipDonusumleri {
public static void main(String[] args) {
//Sayısal tipler arası
int intSayi;
float floatSayi=3.23f;
double doubleSayi=12.12;

//Büyük veri tipinden küçüğe geçişte casting gerikir.
intSayi=(int) floatSayi;
System.out.println(intSayi);
System.out.println(floatSayi);

//Kücük veri tipinden büyük veri tipine geçişte otomatik casting yapılır
System.out.println(doubleSayi);
doubleSayi=intSayi;
System.out.println(intSayi);
System.out.println(doubleSayi);

//Primitif veri tipleri ve karakter katarları dönüşümleri

String s1=”12″;
String s2=”13″;

//String veri tipinden int e dönüşüm
int intDonusumValueOf=Integer.valueOf(s1);
int intDonusumParse=Integer.parseInt(s2);

System.out.println(intDonusumValueOf);
System.out.println(intDonusumParse);

//Float ve Double içinde aynı fonksiyonlar geçerlidir.

//Primitif Sayısal veri tiplerinin Stringe veri tipin çevrilmesi(3 yontem)

int donusumInt=14;

String stringDonusum1=””+donusumInt; //otomatik olarak stringe çevrilir
String stringDonusum2=String.valueOf(donusumInt);
String stringDonusum3=Integer.toString(donusumInt);

//Double ve float içinde bu yöntemler geçerlidir.
System.out.println(stringDonusum1);
System.out.println(stringDonusum2);
System.out.println(stringDonusum3);

}
}

Değişken Tanımlama Kuralları

  • Değer atanmadan bellekte yer tutmazlar.
  • Default erişim belirteci public tir.
  • Tüm sınıflar java.lang sınıfından türemiştir.
  • Degişken isimleri sayı ile başlamaz,boşluk ve Türkçe karakter içermez
  • Case sensitive ; büyük küçük harfe duyarlıdır
  • Aynı satırda aynı tip değişkenler tanımlanabilir
  • İsimlerin anlamlı olması okunabilirliği artırır.
  • Değişken tipi dogru seçilmelidir, gerekmedikçe büyük boyutlu seçilen veri tipi yer israfına neden olur.
  • (java 7) sayısal ilkel veri tiplerini binary olarak tanımlayabiliriz.
  • (java 7) sayısal ilkel veri tiplerini ‘_’ alt çizgi ile gruplayabiliriz.

Değişken Tipleri:

      1.Class Değişkeni: Sınıf bloğu içerisinde bulunan başka hiçbir blok içinde olmayan, static olarak tanımlanan değişkenlerdir.

Static değişkenin özellikleri;

  • Bir anda tek bir değeri olur
  • Sınıf içeresindeki her kod tarafından ulaşılabilir ve hepsi o anki static değişken değerini görür
  • Program boyunca adresini korur
  • Nesne yaratmaya gerek kalmadan kullanılır bu yüzden sınıf değişkeni denir.

       2.Instance( Anlık,dinamik) Değişken: Class değişkeninin static olmayan şekli. Yani sınıf bloğu içeresinde bulunan başka hiçbir blok içinde bulunmayan ,static olarak tanımlanmayan değişkendir. Her sınıf nesnesi için ayrı değer tutar bu yüzden instance değişken olarak adlandırılır.

Nesne yaratılmadan değer atanamaz ,erişilemez.

İnstance değişkenlere ancak ait olduğu nesne içindeki kodla erişilebilir.

Ait olduğu nesne bellekten silindiğinde anlık değişkende yok olur.

      3.Yerel Değişken: Tanımı bir blok içerisinde yapılan ve bu blok içerisinde geçerli olan değişkendir.

Java Nedir?

Java

İlk programlama dillerinin gelişimlerine bakarsak Java’nın faydalarını daha iyi anlarız.

  • Her makine için o makinenin makine dilinde

Bilgisayarlar ilk çıktıklarında programcılar uygulama yapacakları bilgisayarın marka ve modeline göre o makinenin dilinde program geliştirmek zorundaydılar. Makine dilinde program yazmanın oldukça zor olmasının yanında birde bilgisayarların marka çeşitleri artınca işler bir hayli zorlaştı.

  • Assembly

Makine diline nazaran daha kolay bir dil olsa bile üst düzey yazılım dillerine göre hayli zor bir dil.

  • Platform bağımlı ve prosedurel diller

Assembly den sonra çıkan üst düzey diller ; makine ve işletim sisteminden bağımsız, prosedurel olarak program geliştirilmesine,  uygulamanın çalıştırılacağı sistemlerde o sisteme uygun bir derleyici ile tekrar derlenmesi şartıyla imkan sağlamıştır.

  • Platform bağımsız ve nesneye dayalı diller

Farklı işletim sistemleri ve bilgisayar üretici firmaların çıkması, ağ üzerinde farklı bilgisayarların birbirleriyle iletişim kurmalarının gerekliliği ve prosedurel programlama dil yapısının büyük problemleri çözerken zayıf kalması ; nesneye dayalı  ve platform bağımız programlama dillerinin geliştirilmesini gerektirdi.

Java’nın Gelişimi

James Gosling  tarafından sun firmasında küçük boyutlu ,güvenilir,taşınabilir ve dağıtık bir işletim sistemi oluşturmak için çalıştıkları bir projede c++ ın yetersiz kalması, James Gosling ‘i yeni bir dil geliştirmeye yitmiştir.  Java ilk olarak OAK ismiyle çıkmış daha sonra ismi JAVA olarak değiştirilmiştir.

Java Nedir?

Java programlama dili olmasının yanı sıra aslında bir teknoloji topluluğur. Çünkü java bir çok ortam ve cihaz için uygulama geliştirebileceğimiz bir dildir.

Java’nın geliştiricisi James Gosling e göre JAVA;

  • Basit

Standartlara bağlı olması, bellek yönetiminin programcıdan bağımsız otomatik yapılması, çöp toplayıcı sayesinde işi biten nesnelerin bellekten atılması ve hazır kütüphanelere sahip olması basit ve kolay yazılım geliştirilmesini sağlar.

  • Nesne Merkezli

Java nesne yönelimli bir programlama dilidir eğer Java dilinde program geliştirip nesne dayalı programlama kullanmıyorsak Java nın avantajlarından faydalanamayız.

  • Ağlarda yetenekli

Platform bağımsız olması, farklı bilgisayarlardaki uygulamalarla kuracağı iletişimlerde kullanılan nesnelerin güvenli iletişimi ,çok kanallı programlamaya imkan sağlaması ve ağ için tasarlandığından ağ ve güvenliği konusunda sahip olduğu kütüphaneler sayesinde ağlarda yetenekli bir programlama dilidir.

  • Yorumlanan ve Platform Bağımsızdır

Java hem  derlenen hem de yorumlanan bir dildir. Java diliyle geliştirilen uygulamalar ilk önce .java  isimli dosyalar olarak oluşturulur. Daha sonra bu dosyalar .javac ile derlenerek java sanal makinesinin anlayacağı .class uzantılı bytecode diye adlandırılan dosyalara dönüştürülür.Daha sonra bu byte kodlar java sanal makinesi üzerinde çalışma zamanında yorumlanarak makine diline çevrilir böylece uygulama makine üzerinde koşturulmuş olur.

Java sanal makinesi yorumlama işlemini yaparken Java çalışma ortamındaki kütüphaneleri kullanır. Java sanal makinesi işini bitirdikten sonra bellekten atılır.

Her işletim sistemi  için bir Java sanal makinesi sürümü mevcuttur. Java sanal makinesi java uygulamaları yapmak için bilgisayarımıza indirmek zorunda  olduğumuz java geliştirme kit içinde mevcuttur.

Java sanal makinesi  ara bir katmandır.Yukardaki anlatılan yapı Javanın platform bağımsız olması sağlar. Oluşan byte code ları herhangi bir işletim sistemindeki java sanal makinesinde yorumlayıp uygulamanın makine de koşturulmasını sağlanalabilir.

  • Sağlam

Java dayanıklı,sağlam yazılımlar üretmek için geliştirilmiştir. Java derleme ve yorumlama zamanlarında kontrol mekanızmalarına sahiptir.Derleme anında kontrol edilebilen hataları yakalar ,kodun derleme işlemini başarız kılar, hatanın ne olduğunu söyler ve düzeltilmesini ister. Uygulamanın çalışma anında yapılan yorumlama işleminde ise hata işleme mekanızmalarıyla hataların ve istisnaların try /catch yapılarıyla yakalanıp uygulamanın çalışmasına zarar vermeden bildirilmesi sağlanır.

Bellek yönetimini otamatik yaparak  bu yüzden oluşabilecek hataları önler.

Güçlü bir tip sistemine sahiptir çalışma zamanında tip uyumu ve çevrimi kontrol edilir.

  • Güvenli

Ağ ortamları için geliştirildiğinden ağ üzerinde gelebilecek tehlikelere karşı koyabilecek yapıdadır.  Nesne erişimlerini kontrol altında tutar.

  • Taşınabilir

Platform bağımsız olması sayesinde taşınabilir bir dildir.

  • Yüksek performanslı

Java dili tip hiyerarşileri ve hazır kütüphaneleri  ile nesne merkezli programlama modeli yüksek performanslı uygulamalar çıkarmak için biçilmiş kaftandır.

  • Çok kanallı

Java ağ konusunda yetenekli olduğundan çok kanallı programlamaya olanak sağlar.

  • Dinamik

Java Teknolojileri

Java , Java SE,Java EE ve Java ME olmak üzere 3 farklı sürüme sahiptir.  Java SE java programlama dilidir. Java temellerini, javanın özelliklerini kapsar. Java EE javanın büyük kurumsal projeleri kolayca gerçekleyebilmesi için belirli standartlar eşliğinde geliştirilmiş bir sürümdür. Java EE ve farklı frameworkler ile birlikte kullanılarak kolay ,hızlı, esnek uygulamalar geliştirilir. Java ME ise javanın gömülü sistemlerdeki kullanılan sürümüdür.

Apache Tomcat Kurulumu

Apache Tomcat Kurulumu

1-indir ve yükle (http://tomcat.apache.org/download-70.cgi)
Not: 32-bit/64-bit Windows Service Installer i indirip yükleyebilirsin.

2-CATALINA_HOME, CATALINA_BASE ve CATALINA_OPTS u ortam degişkenlerine ekliyoruz.

Bilgisayarıma sag tıklayıp properties sekmesine tıklıyoruz.
Screenshot_1

Soldaki gelişmiş sistem ayarları sekmesine tıklıyoruz.
Screenshot_2

Gelen pencerede Advanced bölümüne geçip alttaki ortam degişkenleri butonuna tıklıyoruz.
Screenshot_3

Sistem Degişkenleri bölümünde yeni butonuna tıklıyarak yeni bir sistem degişkeni oluşturuyoruz.
Screenshot_4

Yeni butonuna tıkladıgımızda gelen pencerede ;
Degişken Adı:CATALINA_HOME yazıyoruz.
Degişken Degeri: Apache Tomcat in kurulduğu dizini yazıyoruz.
Screenshot_1

Sistem Degişkenleri bölümünde yeni butonuna tıklıyarak yeni bir sistem degişkeni oluşturuyoruz.
Yeni butonuna tıkladıgımızda gelen pencerede ;
Degişken Adı:CATALINA_BASE yazıyoruz.
Degişken Degeri: %CATALINA_HOME%
Screenshot_2

Sistem Degişkenleri bölümünde yeni butonuna tıklıyarak yeni bir sistem degişkeni oluşturuyoruz.
Yeni butonuna tıkladıgımızda gelen pencerede ;
Degişken Adı:CATALINA_OPTS yazıyoruz.
Degişken Degeri: -server -Djava.awt.headless=true -Xms384M -Xmx1024M
Screenshot_3

3-Tomcat servis yönetici uygulamasın konfigurasyon ayarlarını yapıyoruz.
Uygulamada açılan pencerede Java sekmesine geçip Java options en sonuna -server -Djava.awt.headless=true ekliyoruz.
Başlangıç bellek ihtiyacı olarak 384 MB
Maksimum bellek ihtiyacı olarak ta 1024 MB olarak degişiklik yapıyoruz.
Bu ayarla CATALINA_OPTS ile uyumlu olmalı.
Screenshot_5

Screenshot_4
4-Başarılı bir şekilde yüklendigini test için;
http://localhost:8080 veya http://server adress:8080 tıkladıgınızda apachenin sayfası açılması gerekir.
Screenshot_6

JDK Kurulumu(Windows)

1-indir ve yükle (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
2-Ortam degişkenlerine JAVA_HOME ekle.
Bilgisayarıma sag tıklayıp properties sekmesine tıklıyoruz.
Screenshot_1
Soldaki gelişmiş sistem ayarları sekmesine tıklıyoruz.
Screenshot_2
Gelen pencerede Advanced bölümüne geçip alttaki ortam degişkenleri butonuna tıklıyoruz.
Screenshot_3
Sistem Degişkenleri bölümünde yeni butonuna tıklıyarak yeni bir sistem degişkeni oluşturuyoruz.
Screenshot_4
Yeni butonuna tıkladıgımızda gelen pencerede ;
Degişken Adı:JAVA_HOME yazıyoruz.
Degişken Degeri: Jdk nın kurulduğu dizini yazıyoruz.
Screenshot_5

Sistem degişkenleri kısmındaki Path isimli degişkeni seçip sonuna %JAVA_HOME%\bin ekliyoz.
Screenshot_6
Screenshot_7
3-Kurulumun başarılı bir şekilde yüklendiğini test etmek için;
Komut satırını açıyoruz(cmd.exe)
java -version
javac -version
echo %JAVA_HOME%
komutlarını yazıp ,sonuçlara bakıyoruz.
Screenshot_8