Что такое instance в java
Перейти к содержимому

Что такое instance в java

  • автор:

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java

Переменные в Java: что это такое и как они используются

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java - 1

Источник: Hackernoon В Java существует четыре различных типа переменных, в зависимости от того, где они объявлены в программе. Сегодня вы узнаете примеры и отличия каждого типа. 1. Переменные экземпляра (Instance variables) или поля экземпляра (Instance fields) — это переменные, объявленные внутри класса без ключевого слова static , но вне метода, конструктора или блока кода. Такие переменные могут быть объявлены в любом месте внутри класса. Вы можете объявить их с модификатором доступа или без него, например, public , private , protected или default (не ключевое слово).

 public class MyClass < //instance field 1 private String instanceField1; public MyClass()<>//Constructor //instance field 2 public int anotherInstanceField2; public void setInstanceField(String parameterVariable) //instance method //instance field 3 boolean instanceField3; public static void main(String[] args) < System.out.println("field 1 value: " + instanceField1); // = null System.out.println("field 2 value: " + anotherInstanceField2); // = 0 System.out.println("field 3 value: " + instanceField3); // = 0 >> 

Если полю экземпляра не присваивается значение во время объявления, то ему присваивается значение по умолчанию, равное нулю, если это примитивный тип, например ( int , boolean , long , float ), или null , если это не примитивный тип, например ( String , Integer , AnyClass ). Они называются полями или переменными экземпляра, потому что они принадлежат экземпляру любого объекта, созданного из класса, в котором они объявлены.

 public Main < public static void main(String[] args) < MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); //Now we can access every 'public' field declared in the MyClass class // from the newly created object 'obj' obj1.anotherInstanceField2 = 11; obj2.anotherInstanceField2 = 33; System.out.println(obj1.anotherInstanceField2); // prints '11' System.out.println(obj2.anotherInstanceField2); // prints '33' >> 

Таким образом, каждое поле экземпляра уникально для своего объекта, как видно из приведенного выше фрагмента. В нем obj1 и obj2 имеют уникальные значения, присвоенные их соответствующим полям экземпляра. 2. Поля класса (Class fields) или статические поля (static fields) — это поля, объявленные с ключевым словом static . Они объявляются внутри класса, но вне метода, конструктора или блока кода. Они также могут быть объявлены в любой позиции внутри класса с модификатором доступа или без него, например, public , private , protected или default (не ключевое слово).

 public class MyClass < //static field public static String staticField; public MyClass()<>//Constructor > class Main < public static void main(String[] args) < MyClass obj = new MyClass(); obj.staticField //will throw Not defined Error //Now we cannot access the static field declared in MyClass class from the // newly created object 'obj' because static fields are not attached to any // object. They belong solely to the class they are declared and can only be // accessed from their class. MyClass.staticField = "I am a static field"; System.out.println(MyClass.staticField); // prints 'I am a static field' >> 

Доступ к статическим полям возможен только через их классы, а не из какого-либо объекта, как показано во фрагменте кода выше. 3. Параметры (Parameters) или переменные-аргументы (Argument variables) — это переменные, объявленные внутри конструкции метода между открывающимися и и закрывающимися фигурными скобками сигнатуры метода. Они используются для передачи значений или объектов в метод.

 public class MyClass < //instance field public String instanceField; public MyClass()<>//Constructor //instance method with a parameter variable public void setInstanceField(String parameterVariable) < instanceField = parameterVariable; >> class Main < public static void main(String[] args) < MyClass obj = new MyClass(); obj.setInstanceField("From a parameter variable"); System.out.println(obj.instanceField); // prints 'From a parameter variable' >> 

4. Локальные переменные (Local variables) — это переменные, объявленные внутри метода или любого блока кода, например, внутри блока операторов if , for loop , while loop , блока операторов switch и так далее.

 public Main < public static void main(String[] args) < MyClass obj1 = new MyClass(); // 'obj1' is local reference variable int // 'name' is a local variable here. if (id >1) < String tempName = "Austin"; // 'tempName' is a local reference variable >> > 

В данном коде можно заметить использование reference с некоторыми переменными, в то время как локальная переменная id не упоминалась, как ссылочная переменная. Любая непримитивная переменная является ссылочной переменной. Например, obj1 — это переменная типа MyClass , а tempName — это переменная типа String , и здесь оба типа не являются примитивными типами. При этом id — это переменная типа int , которая является примитивным типом данных. Следовательно, это нессылочная переменная.

5 вещей, которые вы должны знать о сериализации и десериализации в Java

Источник: Devgenius Благодаря этому руководству вы улучшите свои знания о работе сериализации и десериализации. Сериализация в Java помогает преобразовать существующий объект в поток байтов. И наоборот, десериализация делает поток байтов объектом. Используя сериализацию и десериализацию в Java, информацию об объектах можно переносить с одной JVM на другую.

#1 Сериализация

Прежде чем приступить к подробному описанию, давайте обратим внимание на классы SerializeUtils.java и Person.java . Здесь они нам помогут выполнить сериализацию и десериализацию на конкретных примерах.

SerializeUtils.java
 package com.techteam.serialization; import java.io.*; public class SerializeUtils < public static void serialize(T input, String fileName) throws IOException < FileOutputStream file = new FileOutputStream(fileName); ObjectOutputStream out = new ObjectOutputStream(file); out.writeObject(input); out.close(); file.close(); >public static T deserialize(String fileName) throws IOException, ClassNotFoundException < FileInputStream file = new FileInputStream(fileName); ObjectInputStream in = new ObjectInputStream(file); T result = (T) in.readObject(); return result; >public static void externalSeialize(Externalizable e, String fileName) throws IOException < FileOutputStream file = new FileOutputStream(fileName); ObjectOutputStream out = new ObjectOutputStream(file); e.writeExternal(out); out.close(); file.close(); >public static void externalDeseialize(Externalizable e, String fileName) throws IOException, ClassNotFoundException < FileInputStream file = new FileInputStream (fileName); ObjectInputStream in = new ObjectInputStream (file); e.readExternal(in); in.close(); file.close(); >> 
Person.java
 package com.techteam.serialization; import java.io.Serializable; public class Person implements Serializable < private static final long serialVersionUID = 1L; private int id; private String name; private int age; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >> 

Как уже упоминалось, сериализация помогает преобразовать объект в поток байтов. Это означает, что вся информация об объекте также преобразуется в поток байтов, такой как метод, свойства и данные. Вот пример, как происходит сериализация объекта:

 package com.techteam.serialization; import java.io.IOException; public class SerializationMain < public static void main(String[] args) throws IOException < Person p = new Person(); p.setId(1); p.setName("Tech team members"); p.setAge(20); SerializeUtils.serialize(p, "/person.txt"); >> 

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java - 2

После процесса сериализации у нас есть файл с таким содержимым:

#2 Десериализация

Если в предыдущем примере мы создали поток байтов посредством сериализации объекта, то теперь давайте посмотрим, как мы вернемся к объекту, используя десериализацию:

 package com.techteam.serialization; import java.io.IOException; public class DeserializationMain < public static void main(String[] args) throws IOException, ClassNotFoundException < Person p = SerializeUtils.deserialize("/person.txt"); System.out.println("Person data:"); System.out.println(p.getId()); System.out.println(p.getName()); System.out.println(p.getAge()); >> 

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java - 3

Вот данные после процесса десериализации:

#3 Serial Version UID

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java - 4

SerialVersionUID означает уникальный идентификационный номер для каждой версии процесса сериализации и десериализации. Этот номер используется, чтобы убедиться, что и сериализованные, и десериализованные объекты используют совместимые классы. Для Person.java я хотел бы увеличить serialVersionUID до 2. Давайте посмотрим на вывод после десериализации файла person.txt.

#4 Ключевое слово Transient

В процессе сериализации и десериализации иногда нам не нужно сериализовать всю информацию об объекте. Используя переходный (transient) процесс для переменных, мы можем игнорировать эти переменные из сериализуемого объекта. Пример ниже поможет понять это более четко:

 package com.techteam.serialization; import java.io.IOException; import java.io.Serializable; public class PersonWithTransient implements Serializable < private static final long serialVersionUID = 1L; private int id; private String name; private transient int age; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >public static void main(String[] args) throws IOException, ClassNotFoundException < PersonWithTransient p = new PersonWithTransient(); p.setId(2); p.setName("Tech team members(transient)"); p.setAge(50); SerializeUtils.serialize(p, "/person_transient.txt"); PersonWithTransient deserializeP = SerializeUtils.deserialize("/person_transient.txt"); System.out.println("Person without transient data:"); System.out.println(deserializeP.getId()); System.out.println(deserializeP.getName()); System.out.println(deserializeP.getAge()); >> 

В приведенном выше коде мы использовали ключевое слово transient для переменной age . И вот что у нас получилось после процесса сериализации и десериализации.

#5 Внешний интерфейс (Externalizable Interface)

В Java, когда мы хотим настроить процесс сериализации и десериализации, мы можем использовать переходный процесс, чтобы игнорировать переменные, которые нам не нужны для процесса сериализации и десериализации. Еще один способ упростить и повысить производительность — использовать интерфейс Externalizable вместо интерфейса Serializable . Давайте посмотрим на пример:

 package com.techteam.serialization; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; public class PersonExternalizable implements Externalizable < private static final long serialVersionUID = 1L; private int id; private String name; private int age; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getAge() < return age; >public void setAge(int age) < this.age = age; >@Override public void writeExternal(ObjectOutput out) throws IOException < out.writeUTF(this.name); out.writeInt(this.age); >@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException < this.name = in.readUTF(); this.age = in.readInt(); >public static void main(String[] args) throws IOException, ClassNotFoundException < PersonExternalizable p = new PersonExternalizable(); p.setId(3); p.setName("Tech team members(Externalizable)"); p.setAge(30); SerializeUtils.externalSeialize(p, "/person_externalizable.txt"); PersonExternalizable deserializeP = new PersonExternalizable(); SerializeUtils.externalDeseialize(deserializeP, "/person_externalizable.txt"); System.out.println("Person data:"); System.out.println(deserializeP.getId()); System.out.println(deserializeP.getName()); System.out.println(deserializeP.getAge()); >> 

Кофе-брейк #180. Переменные в Java: что это такое и как они используются. 5 вещей, которые вы должны знать о сериализации и десериализации в Java - 5

Как видите, при использовании Externalizable мы можем легко написать пользовательскую логику, игнорировать переменные и получить более высокую производительность, чем при использовании Serializable . Теперь давайте посмотрим на вывод:

Заключение

Надеюсь, что благодаря этой статье вы получили ясное представление о том, как сериализация и десериализация работают в Java, а приведенные выше примеры в будущем смогут помочь вам на практике.

Что такое instance в java

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь

Язык интерфейса

«Программистами не рождаются» © 2024 JavaRush

Скачивайте наши приложения

«Программистами не рождаются» © 2024 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

instance method

Программирование: объект-метод, метод экземпляра класса (любой метод, применяемый к экземпляру класса) , (в Java) метод (класса) (то же, что и nonstatic member function в С++) , метод экземпляра (в языке Java — метод, распространяющийся на конкретный экземпляр класса)

Универсальный англо-русский словарь . Академик.ру . 2011 .

  • instance linkage
  • instance number

Смотреть что такое «instance method» в других словарях:

  • Method (computer science) — In object oriented programming, the term method refers to a subroutine that is exclusively associated either with a class (called class methods, static methods, or factory methods) or with an object (called instance methods). Like a procedure in… … Wikipedia
  • Method ringing — (also known as scientific ringing) is a form of change ringing (the practice of ringing a series of mathematical permutations on tuned bells, rather than a melody). In method ringing, the ringers are guided from permutation to permutation by… … Wikipedia
  • Method overloading — is a feature found in various programming languages such as Ada, C#, C++ and Java that allows the creation of several functions with the same name which differ from each other in terms of the type of the input and the type of the output of the… … Wikipedia
  • Method (computer programming) — In object oriented programming, a method is a subroutine (or procedure or function) associated with a class. Methods define the behavior to be exhibited by instances of the associated class at program run time. Methods have the special property… … Wikipedia
  • Method of loci — The method of loci (plural of Latin locus for place or location), also called the memory palace, is a mnemonic device introduced in ancient Roman rhetorical treatises (in the anonymous Rhetorica ad Herennium, Cicero s De Oratore, and Quintilian s … Wikipedia
  • method of difference — a method of scientific induction devised by J. S. Mill according to which if an instance in which the phenomenon under investigation occurs and an instance in which it does not occur have each circumstance except one in common, that one occurring … Useful english dictionary
  • method — The mode or manner or orderly sequence of events of a process or procedure. SEE ALSO: fixative, operation, procedure, stain, technique. [G. methodos; fr. meta, after, + hodos, way] Abell Kendall m. a … Medical dictionary
  • Extension method — An extension method is a new language feature of C# starting with the 3.0 specification, as well as Visual Basic.NET starting with 9.0 and Oxygene with 2.0.The problemNormally, in a situation where it is necessary to add more functionality to a… … Wikipedia
  • Finite element method — The finite element method (FEM) (sometimes referred to as finite element analysis) is a numerical technique for finding approximate solutions of partial differential equations (PDE) as well as of integral equations. The solution approach is based … Wikipedia
  • Mutator method — In computer science, a mutator method is a method used to control changes to a variable. The mutator method, sometimes called a setter , is most often used in object oriented programming, in keeping with the principle of encapsulation. According… … Wikipedia
  • Comparative method — This article is about the comparative method in linguistics. For other kinds of comparative methods, see Comparative (disambiguation). Linguistic map representing a Tree model of the Romance languages based on the comparative method. Here the… … Wikipedia

Что такое Instance (инстансы) в Java?

Добрый день!
Недавно начал изучать Java (по урокам Hexlet), и столкнулся с таким вопросом:
«Что такое Instance в Java и для чего они вообще нужны»?
Как я понял, экземпляр класса в Java создаётся так:

class Main public static void main(String. args) Game game = new Game();
>
>

Первое слово Game — это инстанс?
Почему нельзя написать так:

Просто до этого изучал php, там экземпляры классов примерно так объявлялись.
Пока из-за этой темы не могу перейти к следующим урокам, так там «эти» инстансы везде используются.
Объясните пожалуйста новичку :))

Голосование за лучший ответ

instance это экземпляр класса (объект). Т. е. game это ссылка на instance (а поскольку в java все объекты доступны только по ссылке, можно говорить просто instance).

Game game = new Game();
объявляется переменная game типа Game и инициализируется созданным здесь же новым экземпляром (инстансом) Game

Почему нельзя написать так: game = new Game(); можно, если game объявлена ранее — язык то строго типизированный.

asdf ghjkПрофи (591) 6 лет назад
game это ссылка на Game? А что хранится в game и Game?

Game game; Обозначает создать объект game из класса Game. = new Game() — Выделяется память под новый объект размером в Game. При создании переменой вы должны указать что это за переменная (что бы виртуальная машина знала сколько места под переменную выделить). Если вы напишите Game game — то по идее память сразу будет выделена при компиляции (я учусь на си++ поэтому все таки джава существенно отливается, но принципы похожи) при использовании new Game() память выделиться только в момент этой инструкции из оперативы. Возможно в джава немного подругому.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *