31 Legal Array Element Assignments

Merhaba Arkadaslar ,
Bu yazimizda , array/diziler konusuna devam edecegiz ve diziler konusunu burada sonlandiracagi.Burada dizi elamanlarina deger atama ve dizilerin birine atanmasini konusuna biraz daha yakindan bakacagiz.

Bir dizinin farkli tipte elemanlari olsa bile, sadece tek bir tipte tanimlanabilir. ( int [] ,String[] , Animal[] )

int tipinde bir dizi elemani, byte, short veya char turunde olabilir , long , float ya da double turunde olamaz.

public class Test1 {

	public static void main(String[] args) {
		int[] coolArray = new int[6];

		byte b = 10;
		char c = 'c';
		short s = 20;
		long l = 50;
		float f = 10;
		double d = 100;

		coolArray[0] = b;
		coolArray[1] = c;
		coolArray[2] = s;
		// coolArray[3] = l; // compiler error
		// coolArray[4] =f //compiler error
		//coolArray[5] = d;  //compiler error

		for (int i : coolArray) {
			System.out.print(i + " ");
		}
	}
}

Continue reading 31 Legal Array Element Assignments

29 Array Construction

Merhaba Arkadaslar,
Bir onceki yazida Array Declaration konusunu incelemistik. Bu yazida Array Construction konusunu inceleyecegiz.

“Array Construction” ifadesinden kasit , bir array/dizi objesini Heap’te yaratmak/olusturmak/create anlamina gelmektedir. Bir array/dizi objesi yaratilmadan once Java, Heap’te bu obje icin ne kadar yer ayrilmasi gerektigini (allocate) bilmelidir. Bu nedenle dizinin boyutu, olusturulma zamaninda(creation time) belirli olmalidir.

Construction One-Dimensional Array ( Tek Boyutlu Dizi Olusturma)
Yeni bir dizi olusturmak icin new anahtar kelimesini kullaniriz.

int[] testScores; //declare bildiri/tanitim islemi
testScores = new int[4]; //construct array / dizi olusturma

ya da 

int [] testScores = new int[4];

Bu basit dizi olusturma islemini hemen hemen herkes bilmektedir.  Bu kodlarin anlamini biraz daha detaylica inceleyecek olursak ; Heap’te yeni bir dizi objesi olusturulur ve bu dizi objesi 4 tane elaman tutmaktadir. Onceki yazilarda inceledigimiz gibi bu elemanlar icin varsayilan deger 0 olacaktir. Hatirlayacagimiz gibi tum diziler objedir. Bu nedenle referans tipindeki testScores degiskeni Heap’teki bu objeyi gostermektedir.(refer)

one-dimentional-array-on-heap-example-tutorial

Continue reading 29 Array Construction

30 Array Initialization

Merhaba Arkadaslar,
Onceki iki yazida array declaration ve array construction konularindan bahsetmistik. Bu yazida array initialization ve hem construction hem initialization islemini beraber yaptigimiz durumlari inceleyecegiz.

Array Initialization ‘ dan kasit dizinin icerisine “bir seyler” eklemek, doldurmaktir.  Bu “bir seyler” hem primitive degerler olacagi gibi , objeleri tutan referans degiskenleri de olabilir.

Animal [] pets = new Animal[3];

3 tane Animal referans tipinde ve null degerli elemanimiz ve Heap’te 1 tane array objemiz olustu. Burada Animal objesi yok ! Burasi onemli bir nokta.

pets[0]= new Animal();
pets[1]= new Animal();
pets[2]= new Animal();

Continue reading 30 Array Initialization

28 Array Declaration

Merhaba Arkadaslar,
Bir kac yazi boyunca Java’da Array/Dizi konusundan bahsedecegim. Aslinda programlama ile biraz ugrasan herkes diziler konusunda az cok fikir sahibi olmustur. Zaten buraya kadar da dizileri ara ara kullandik. Burada biraz daha detaylica inceleyip ince noktalarini gorecegiz.
Genel olarak 3 nokta uzerinde duracagim;

  • Bir array/dizi referans degiskeni nasil tanimlariz (declare)
  • Bir array/dizi objesi nasil olustururuz (construct)
  • Bir array/diziye eleman eklemek, doldurmak (initialize)

Burada bir “declare” kismini inceleyecegiz Continue reading 28 Array Declaration

27 Passing Variables into Methods

Merhaba Arkadaslar,
Java da pass-by value ve pass-by-rerefence kavramlarini bol miktarda duymusuzdur. Bir metodun, taniminda aldigi degiskenler(parametreler) hem primitive/ilkel hem de referans tipte olabilir.

Primitive/ilkel tipte degiskenler icin bir degiskeni diger degiskene atamak ; icerigini/content yani bit pattern/bit yapisini bir degiskenden diger bir degiskene kopyalamak anlamina gelmektedir. Obje referans degiskenlerini icin de bu durum gecerlidir ! Referans degiskenin icerigi/content bir bit pattern/yapi/ornek dir. Yani a referans degiskenini b referans degiskenine atamak , a ‘nin bit pattern’ini , b’nin bit pattern’ine kopyalamak anlamina gelmektedir. Continue reading 27 Passing Variables into Methods

26 Initialize Local Variables

Merhaba Arkadaslar,
Bu yazimda Java da Local diger adlariyla Stack veya Automatic Variable olarak adlandirilan degiskenlere deger atanmasi/initialize islemi ile ilgili bilgiler aktaracagim.

Local Primitive
Test sinifimizda main metodumuzda 2 adet degisken tanimlayalim. Asagidaki kod herhangi bir derleme hatasi/compile error icermez.

public class Test {
	public static void main(String[] args) {
		int number1;
		int number2;
	}
}

Peki  bu degiskenlerin degerini ekrana yazdirmaya calisalim ;

public class Test {
	public static void main(String[] args) {
		int number1;
		int number2;

		System.out.println(number1);  //derleme hatasi
		System.out.println(number2);  //derleme hatasi
		System.out.println(number1+number2); //derleme hatasi
	}
}

Gordugunuz gibi derleme hatasi ile karsilastik. Peki neden ? Bir onceki yazidan hatirlayacagimiz gibi “int” turunde bir instance variable/degisken icin varsayilan deger 0 di, fakat number1 ve number2 instance variable degil, local/yerel degiskendir.

Local/yerel degiskenleri kullanmadan once MUTLAKA deger atamak/initialize gerekmektedir.

public class Test {
	public static void main(String[] args) {
		int number1=5;
		int number2=10;
		int number3;

		System.out.println(number1);
		System.out.println(number2);
		System.out.println(number1+number2);
	}
}

number1 ve number2 local/yerel degiskenlerini kullandik bu nedele deger atamasinda bulunduk. number3 degiskenini kullanmadik bu nedenle deger atamak zorunda degiliz. Tabi kullanmadigimiz degiskeni tanimlamak gereksiz bir hareket olacaktir  Continue reading 26 Initialize Local Variables

AWS Platformu ve Servisleri

Bir önceki yazımımda AWS Global Altyapısı yani Infrastructure anlatmıştık. Özetle bu kısımda Region, Availability Zone ve Edge’lerden bahsetmiştik. Bu yazıda Infrastucture üzerinde bulunan Compute, Storage, Network ve Administration&Security servislerden bahsedeceğim.

aws_platform

AWS’nin ana konsoluna girdiğimizde karşımıza birçok servis hizmeti çıkacak ben bunlardan en çok kullandığımız temel servislerden bahsediyor olacağım.

EC2 instance’ları AWS üzerindeki sanal sunuculardır. Değişik işlem gücü ve bellek alanındaki bu sunucuları alıp sistemimizi oluşturabiliriz. Buna istediğimiz büyüklükteki disk alanlarını ESB ekleyerek kullandıkları disk alanlarını büyütebiliriz. AWS’de kullandığımız kaynakların güvenliği ve monitor için IAM(Idendity And Access Management) ve CloudWatch servislerini kullanırız. Tekil bir network ağı oluşturmak için Amazon VPC kullanırız. Tüm bu servisler bizim sanal bir data center oluşturmamızı sağlar. Continue reading AWS Platformu ve Servisleri

25 Initialize Instance Variables

Merhaba Arkadaslar,  bu yazimiz Java’da instance variable ‘a initialize islemi/deger atamasi uzerine olacaktir.

Java , bir degisken(instance variable) tanimladigimizda 2 secenek sunar ya oldugu gibi birakiriz/unitialized ya da deger atamasinda bulunuruz.

Degisken kapsam alaninina gore (instance variable , local variable … ) farkli durumlar ortaya cikmaktadir. Bir onceki yazida Degisken kapsam alani ( Variable Scope) konusunu incelemistik.

Primitive && Object Type Instance Variable
Instance Variable(member variables) , hatirlayacagimiz gibi sinif seviyesindeki degiskenlerdi. Yani bu instance variable’lar bir metot, yapilandirici, kod blogu icerisinde tanimlanamaz.
Instance Variable’lara varsayilan olarak deger atamasi yapilir. Asagidaki tabloda varsayilan olarak atanan bu degerleri gorebiliriz.

default-var

Primitive Instance Variable
Yukarida primitive tiplerin listesi yer almaktadir. Daha oncesinde de primitive/ilkel tipler nelerde incelemistik.Burada ornek uzerinde deger atamayan primitive instance variable/degiskenleri gorelim. Continue reading 25 Initialize Instance Variables

24 Variable Scope

Merhaba Arkadaslar,
Bu yazimizda Java’da degiskenlerin kapsam alanlarindan(variable scope) yani bir degisken Java kodumuz icerisinde nerede biliniyor nerede gecerli ya da nerede bilinmiyor ve gecersiz(compile error/derleme hatasi) olur bunu inceleyecegiz. Bir onceki yazida Variable/degisken nedir sorusuna da cevap aramistik.

Ornek sinifimiz uzerinde inceleyelim ;

CoolClass.java

public class CoolClass {

	static int count = 20; // static variable
	String s; // instance variable
	int i; // instance variable

	{
		s = "Initialization block";
		int block = 250;
	}

	public CoolClass() { // constructor // yapilandirici
		i += 10;
		int j = 100;
	}

	void coolMethod() {
		int k = 25; // local variable

		for (int t = 0; t < 10; t++)
			k += k + t;

	}

}

Continue reading 24 Variable Scope

23 Assignment Operators

Merhaba Arkadaslar,
Bu yazimda Java da Assignment/atama operatorunu (= yani esittir) ve dogal olarak da degiskenler uzerinde incelemelerde bulunacagiz.

Oncelikle degisken nedir ? Degiskenler Java da birer bit tutuculardir/ bit holders.
int , double, String, Button, String[] turunde degisken yani bit tutucular tanimlayabiliriz.

primitive degiskenleri inceleyecek olursak. Ornegin ; byte bir degisken dusunelim ve degeri 6 olsun , Java da 1 byte 8 bittir. Bu durumda 6 degeri ,bit pattern/yapi 00000110 olarak temsil edilir.

Button b = new Button();

b hakkinda ne diyebiliriz peki ?
b bir reference variable / referans degiskendir ve Button objesine referansta bulunmaktadir. Bir referans degisken de bit holder/tutucudur.Yani tuttugu bu bitler ilgili objeye nasil ulasacaginin bilgisini tasir. Bit formatini bilememekteyiz

Button b = null;

b, hic bir objeye referansta bulunmuyor ,anlamina gelmektedir.

Incelemeye devam edelim ve bir kac ornek verelim, bunlara zaten yabanci degiliz.

int x=10;  //literal assignment
int y=x+2; //assignment with an expression
int z=x*y; //assignment with an expression

Burada dikkat cekmek istedigim konu tamsayi literallerinde varsayilan tur int tir. Bir onceki konuda literal konusuna deginmistik.

byte b = 10; //automatically narrows literal value to a byte
byte b = (byte) 10; // explicitly cast the int literal to a byte

Ilk satirdaki atama islemi gecerlidir. Burada Compiler/derleyici otomatik olarak literal int degeri byte degere cevirir. Ikinci satirda oldugu gibi explicity/acik bir sekilde byte degere  cast islemi yapilmaktadir. Bu ornegimiz short degisken icin de gecerlidir. Simdi de su ornegimizi inceleyelim;

byte a = 5;
byte b = 10;
byte c = b+c;  //compiler error

Continue reading 23 Assignment Operators