Merhaba Amigo! Size değişkenlerin iç yapısından bahsetmek istiyorum. Bildiğiniz gibi, her değişken, değerinin saklandığı bir bellek alanıyla ilişkilendirilir. "

"Evet. Geçen sefer bana bundan bahsetmiştin."

"Harika. Hatırlaman güzel. O zaman devam edeceğim."

"Bütün bileşik tipler daha basit olanlardan oluşur. Ve onlar da daha basit olanlardan oluşur. Sonunda, daha fazla basitleştirilemeyen ilkel tiplerle sonuçlanırız. Onlara böyle denir - ilkel tipler . Çünkü örneğin, int ilkel bir türdür, ancak String , verilerini bir karakter tablosu olarak depolayan bileşik bir türdür (burada her karakter, char ilkel bir türdür ).

"Çok ilginç. Devam et."

"Bileşik tipler, basit olanların gruplanmasıyla oluşturulur. Bu tiplere sınıf diyoruz. Bir programda yeni bir sınıf tanımladığımızda, yeni bir bileşik veri tipi bildiriyoruz . Verileri ya diğer bileşik tipler ya da primitif tipler olacaktır."

java kodu Tanım
public class Person
{
   String name;
   int age;
}
Yeni bir bileşik tür bildirildi – Person.
Verileri String(bileşik tip) değişkeninde nameve int(ilkel tip) değişkeninde saklanır.age
public class Rectangle
{
   int x, y, width, height;
}
Yeni bir bileşik tür bildirildi – Rectangle. Dört (ilkel tip) değişkenden
oluşur .int
public class Cat
{
   Person owner;
   Rectangle territory;
   int age;
   String name;
}
Yeni bir bileşik tür bildirildi – Cat. Aşağıdaki değişkenlere sahiptir:
owner, bileşik tip Person
territory, bileşik tip Rectangle
age, ilkel tip int
name, bileşik tipString

"Şimdilik, her şey açık, ne kadar tuhaf görünse de."

"Büyük (bileşik) türler birçok küçük (ilkel) tür içerir. Bu nedenle bu türdeki nesneler çok fazla bellek kaplar - ilkel türlerin değişkenlerinden daha fazla. Bazen çok daha fazla. Eskiden bu tür değişkenlerle atama işlemleri yapmak uzun sürerdi. zaman ve belleğin büyük bölümlerinin kopyalanmasını gerektirdi.Bu nedenle, bileşik türdeki değişkenler nesnenin kendisini değil, sadece ona bir referansı, yani dört baytlık adresini saklar.Bu, bu tür nesnelerdeki verileri adreslemek için yeterlidir. Java makinesi, ilişkili tüm karmaşıklıkları yönetir."

"Bunlardan hiçbir şey anlamadım."

"Değişkenin bir kutuya benzediğini daha önce söylemiştik. 13 sayısını içinde saklamak istiyorsanız bir kağıda 13 yazıp kutunun içine koyabilirsiniz."

"Fakat kutuda (değişken) daha büyük bir şey saklamanız gerektiğini hayal edin. Örneğin, bir köpek, bir araba veya komşunuz. İtilemez olanı kutunun içine itmeye çalışmak yerine daha kolay bir şey yapabilirsiniz: bir fotoğraf kullanın gerçek köpek yerine köpeğin, gerçek araba yerine plakanın veya komşunuz yerine komşunuzun telefon numarasının."

"Bir kağıt alıp komşunun telefon numarasını yazıyoruz. Bu bir nesneye referans gibi. Komşunun telefon numarasının olduğu kağıdı kopyalayıp birkaç kutuya koyarsak, artık daha fazla referans var. komşunuza. Ama daha önce olduğu gibi, hala tek bir komşunuz var. Bu mantıklı, değil mi?"

"Verileri bu şekilde depolamanın önemli bir özelliği, tek bir nesneye birçok referansınız olabilmesidir. "

"Ne kadar ilginç! Neredeyse anladım. Bir kez daha söyleyin lütfen - aynı bileşik türden başka bir değişkene bileşik türde bir değişken atarsam ne olur?"

"O zaman iki değişken aynı adresi depolar. Bu , bir değişkenin başvurduğu nesnenin verilerini değiştirirseniz, diğerinin başvurduğu verileri değiştirdiğiniz anlamına gelir . Her iki değişken de aynı nesneye başvurur . Elbette, birçok olabilir. referansları da depolayan diğer değişkenler."

"Bileşik (referans/sınıf) türdeki değişkenler, bir nesneye referans tutmuyorlarsa ne yapar? Bu mümkün mü?"

"Evet, Amigo. Sorunda benden önde gidiyorsun. Bu mümkün. Referans (kompozit) tipindeki bir değişken, bir nesneye referans saklamıyorsa, o zaman "null" olarak bilinen değeri saklar. referans'. Temel olarak, bu, adresi 0 olan bir nesneye referansta bulunduğu anlamına gelir. Ancak, Java makinesi hiçbir zaman bu adrese sahip nesneler oluşturmaz, bu nedenle, bir referans değişkeni 0 içeriyorsa, o zaman herhangi bir nesneyi işaret etmediğini her zaman bilir. ."

java kodu Tanım
String s;
String s = null;
Eşdeğer ifadeler.
Person person;
person = new Person();
person = null;
Değeri null olan bir kişi değişkeni yaratıyoruz.
Ona yeni oluşturulan bir Person nesnesinin adresini atarız.
Değişkene null atarız.
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name = "God";
Bir Cat nesnesi yaratıyoruz ve adresini cat değişkeninde saklıyoruz; cat.owner null'a eşittir.
cat.owner'ı yeni oluşturulan bir Person nesnesinin adresine eşitliyoruz.
cat.owner.name hala null değerine eşittir.
cat.owner.name değerini "God" olarak ayarladık

"Sizi doğru anladım mı? Değişkenler iki türe ayrılır: ilkel türler ve referans türleri. İlkel türler doğrudan değerleri depolarken, referans türleri bir nesneye yapılan başvuruyu saklar. İlkel türler arasında int, char, boolean ve diğerleri bulunur. Referans türler diğer her şeyi içerir. Onları oluşturmak için sınıfları kullanırız."

"Kesinlikle haklısın oğlum."

"Demek her şeyi anladığını söylüyorsun. İşte bilgini pekiştirmene yardımcı olacak bazı görevler."

3
Görev
Java Syntax,  seviyeders
Kilitli
Where does a Person come from?
In Java, people come from the same place that other classes come from: from the programmer's head. It is important for the creator of a class to think through what is important for the class and what is not. If he or she does, then the class will make sense and be useful. Let's begin. Let's create a Person class that allows our Person to have a name, age, weight, and... money. And then we'll create an object.
3
Görev
Java Syntax,  seviyeders
Kilitli
Family relations
A programmer can create a man and a woman with a couple of deft movements of his or her fingers. Easy-peasy: we'll write the appropriate classes and create objects. Let's work on a married couple: we'll create Man and Woman objects, and then save a reference to the Woman in man.wife, and a reference to the Man in woman.husband. You see? You don't even need a marriage license.
3
Görev
Java Syntax,  seviyeders
Kilitli
Pay raise
It's good to be a programmer: your salary will grow rapidly. And if this doesn't happen, you can influence the situation with a little help from your hacker friends. Imagine that you have access to the automated payroll system. You need to write an interceptor method that will add $1000 to each salary payment.
1
Görev
Java Syntax,  seviyeders
Kilitli
Part of a calculator
Let's make the computer count for us! Ultimately, that's what they were created for. In this task, we ask the computer to calculate the sum and product of two numbers. Everything is super simple: we declare int variables, assign them a value, add and multiply them, and then display the result.