Les instances dans le programme Java sont créées chaque fois qu'un objet est appelé dans une classe ou une fonction, qui utilise une variable dans le but d'allouer une unité de stockage de mémoire à chaque fois qu'un objet est appelé et qu'une instance est créée. Toutes les modifications ou opérations effectuées sur les instances seront automatiquement reflétées dans la variable d'instance et dans l'unité de mémoire correspondante. Ce type de variables est pris en charge par plusieurs types de données, à savoir int, char, long, short, boolean, float, double, byte et object.
Syntaxe :
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
<datatype> <variable_name>; <datatype> <variable_name> = <initializing_value>;
Il existe principalement 3 types de variables :
Les variables d'instance sont déclarées/définies dans une classe mais en dehors du(des) constructeur(s), méthode(s) et bloc(s). Les variables d'instance sont appelées ainsi parce qu'elles sont spécifiques à une instance (objet) et ne sont pas partagées entre les instances (objets), et les modifications apportées aux variables d'une instance particulière ne se répercuteront pas sur les autres. Lorsque la mémoire est allouée à un objet dans un tas, un emplacement pour chacune des variables d'instance est créé. Les variables d'instance d'un objet sont créées lorsque l'objet est créé avec « nouveau » et sont détruites lorsque l'objet est détruit. Les objets les utilisent pour préserver les états.
Syntaxe :
public class Employee { public String Name; // instance variable with public Access. private int salary ; // instance variable with private access. public static String company; // not an instance variable as it is Static and the value it holds is // not instance but class specific. }
Les variables d'instance ont des valeurs par défaut ; elles peuvent donc être déclarées sans initialisation, contrairement aux variables locales. Les valeurs par défaut des variables dépendent de leurs types de données.
Datatype | Default Value |
boolean | false |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | u0000 |
float | 0.0f |
double | 0.0d |
Object | null |
Objectreference.variable_name
Examples of the instance variable in java are given below:
Code:
import java.io.*; public class Employee { // this instance variable can be accessed any child class since it is public. public String Name; // Since salary is a private variable, it is visible in this class only. private int salary; // static variable is same among the instances public static String company; // The name variable is initialized in the constructor public Employee (String eName) { Name = eName; } public void setSalary(int eSal) { salary = eSal; } public void printEmp() { System.out.println("name : " + Name ); System.out.println("salary :" + salary); System.out.println("Company :" + Employee.company); } public static void main(String args[]) { Employee.company = "Google"; Employee employee_one = new Employee("Jack"); employee_one .setSalary(100000); employee_one .printEmp(); Employee employee_two = new Employee("Jill"); employee_two .setSalary(200000); employee_two .printEmp(); } }
Output:
In the above example, we can see the difference between instance variables and static variables. We have created two objects for employees. The name and salary of the objects are different, but the company is the same for both. This is because it is a static variable and the rest are instance variables.
By changing the line “private int salary; “ in the above code to “ private final int salary = 500;”. We’re changing the behavior of the variable. Since we’re trying to modify a final variable, the compiler throws the following error.
Output:
Code:
import java.io.*; public class DefaultValues { boolean val1; double val2; float val3; int val4; long val5; String val6; public static void main(String[] args) { System.out.println("Default values are :"); DefaultValues d = new DefaultValues(); System.out.println("Val1 = " + d.val1); System.out.println("Val2 = " + d.val2); System.out.println("Val3 = " + d.val3); System.out.println("Val4 = " + d.val4); System.out.println("Val5 = " + d.val5); System.out.println("Val6 = " + d.val6); } }
The above code snippet on execution results in the below output. As mentioned earlier, instance variables have default values if they are not initialized while declaring. This program prints the default values of all the data types.
Output:
Code:
import java.io.*; public class Test implements Serializable { // Normal variables int val1 = 10; int val2 = 20; // Transient variables transient int val3 = 30; // Use of transient has no impact here transient static int val4 = 40; transient final int val5 = 50; public static void main(String[] args) throws Exception { Test input = new Test(); // serialization FileOutputStream fos = new FileOutputStream("abc.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(input); // de-serialization FileInputStream fis = new FileInputStream("abc.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Test output = (Test)ois.readObject(); System.out.println("val1 = " + output.val1); System.out.println("val2 = " + output.val2); System.out.println("val3 = " + output.val3); System.out.println("val4 = " + output.val4); System.out.println("va15 = " + output.val5); } }
Executing the above program results in the below-given output. variable val3 is declared transient, so its value was not stored into the byte stream when the Test object was serialized.whereas val4 and val5 are not instance variables because they violate the rules of instance variables. Hence their states remain unaffected.
Output:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!