CodeGym /Курсове /Синтаксис на Java /Примитивни типове данни

Примитивни типове данни

Синтаксис на Java
Ниво, Урок
На разположение

Здравей, Амиго! Бих искал да ви разкажа за вътрешната структура на променливите. Както вече знаете, всяка променлива е свързана с област от паметта, където се съхранява нейната стойност. "

— Да. Ти ми каза за това последния път.

"Чудесно. Хубаво е, че си спомняте. Тогава ще продължа."

„Всички съставни типове се състоят от по-прости. А те на свой ред се състоят от още по-прости. Докато накрая стигнем до примитивни типове , които не могат да бъдат допълнително опростени. Така се наричат ​​– примитивни типове . например int е примитивен тип, но String е съставен тип, който съхранява своите данни като table със знаци (където всеки знак е примитивен тип char )."

— Много интересно. Продължавай.

„Съставните типове се формират чрез групиране на прости. Ние наричаме такива типове класове . Когато дефинираме нов клас в програма, ние декларираме нов съставен тип данни . Неговите данни ще бъдат or други съставни типове, or примитивни типове.“

Java code Описание
public class Person
{
   String name;
   int age;
}
Декларира се нов съставен тип – Person.
Неговите данни се съхраняват в Stringпроменлива (композитен тип) nameи intпроменлива (примитивен тип).age
public class Rectangle
{
   int x, y, width, height;
}
Декларира се нов съставен тип – Rectangle.
Състои се от четири int(примитивен тип) променливи.
public class Cat
{
   Person owner;
   Rectangle territory;
   int age;
   String name;
}
Декларира се нов съставен тип – Cat. Той има следните променливи:
— owner, съставен тип Person
— territory, съставен тип Rectangle
— age, примитивен тип int
— name, съставен типString

„Засега всичко е ясно, колкото и странно да изглежда.

"Големите (съставни) типове съдържат много малки (примитивни) типове. Ето защо обектите от тези типове заемат много памет - повече от променливите на примитивните типове. Понякога много повече. Извършването на операции за присвояване с такива променливи отнема много време време и изискваше копиране на големи участъци от паметта.Ето защо променливите от съставни типове не съхраняват самия обект, а по-скоро само препратка към него, т.е неговия четириbyteов address.Това е достатъчно за addressиране на данните в такива обекти. Java машината се справя с всички свързани сложности."

— Нищо от това не разбрах.

„По-рано казахме, че променливата е като кутия. Ако искате да съхраните числото 13 в нея, можете да напишете 13 на лист хартия и да го поставите в кутията.“

„Но си представете, че трябва да съхранявате нещо по-голямо в кутията (променлива). Например куче, кола or вашия съсед. Вместо да се опитвате да напъхате ненатисканото в кутията, можете да направите нещо по-лесно: използвайте снимка на кучето instead of на истинското куче, регистрационен номер instead of истинска кола or телефонния номер на вашия съсед instead of вашия съсед."

"Вземаме лист хартия и записваме телефонния номер на съседа. Това е като препратка към обект. Ако копираме листчето с телефонния номер на съседа и го поставим в няколко кутии, вече има повече препратки на вашия съсед. Но, Howто и преди, все още имате само един съсед. Това има смисъл, нали?"

„Важна характеристика на съхраняването на данни по този начин е, че можете да имате много препратки към един обект “

„Колко интересно! Почти го разбрах. Кажете ми още веднъж, моля – Howво ще стане, ако присвоя променлива от съставен тип на друга променлива от същия съставен тип?“

„Тогава двете променливи ще съхраняват един и същ address. Това означава, че ако промените данните на обекта, към който се отнася една променлива, вие променяте данните, към които се отнася другата . И двете променливи се отнасят към един и същи обект . Разбира се, може да има много други променливи, които също съхраняват препратки към него."

"Какво правят променливите от съставни (референтни/класови) типове, ако не съдържат препратка към обект? Това изобщо възможно ли е?"

„Да, Амиго. Изпреварваш ме с въпроса си. Това е възможно. Ако променлива от референтен (съставен) тип не съхранява референция към обект, тогава тя съхранява това, което е известно като „нула reference'. По принцип това означава, че препраща към обект, чийто address е 0. Java машината обаче никога не създава обекти с този address, така че винаги знае, че ако референтната променлива съдържа 0, тогава тя не сочи към ниHowъв обект ."

Java code Описание
String s;
String s = null;
Еквивалентни твърдения.
Person person;
person = new Person();
person = null;
Създаваме променлива person, чиято стойност е нула.
Присвояваме му address на новосъздадения обект Person.
Присвояваме null на променливата.
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name = "God";
Създаваме обект Cat и съхраняваме address му в променлива cat; cat.owner е равно на нула.
Задаваме cat.owner equals на address на новосъздадения обект Person.
cat.owner.name все още е равно на нула.
Задаваме cat.owner.name равно на "Бог"

„Правилно ли ви разбрах? Променливите са разделени на два типа: примитивни типове и референтни типове. Примитивните типове съхраняват стойности директно, докато референтните типове съхраняват препратка към обект. Примитивните типове включват int, char, boolean и много други. типовете включват всичко останало. Ние използваме класове, за да ги създадем."

— Напълно си прав, момчето ми.

"И така, казвате, че сте разбрали всичко. Ето няколко задачи, които ще ви помогнат да затвърдите знанията си."

3
Задача
Синтаксис на Java, ниво, урок
Заключено
Where does a Person come from?
Where does a Person come from?
3
Задача
Синтаксис на Java, ниво, урок
Заключено
Family relations
Family relations
3
Задача
Синтаксис на Java, ниво, урок
Заключено
Pay raise
Pay raise
1
Задача
Синтаксис на Java, ниво, урок
Заключено
Part of a calculator
Part of a calculator
1
Задача
Синтаксис на Java, ниво, урок
Заключено
Calculate the circumference of a circle
Calculate the circumference of a circle
7
Задача
Синтаксис на Java, ниво, урок
Заключено
Our first converter!
Our first converter!
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION