首页 > Java > java教程 > 正文

Java中的实例变量

王林
发布: 2024-08-30 15:10:42
原创
344 人浏览过

Java程序中的实例是在类或函数中调用对象时创建的,类或函数使用变量来为每次调用对象时分配内存存储单元,并创建实例。对实例执行的任何更改或操作都会自动反映在实例变量和相应的内存单元中。这种类型的变量有多种数据类型支持,即 int、char、long、short、boolean、float、double、byte 和 object。

语法:

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

<datatype>  <variable_name>;
<datatype>  <variable_name> = <initializing_value>;
登录后复制

变量主要有3种类型:

  • 局部变量
  • 实例变量
  • 类/静态变量

Java 中的实例变量

实例变量在类中声明/定义,但在构造函数、方法和块之外。之所以这样称呼实例变量,是因为它们是特定于实例(对象)的,并且不在实例(对象)之间共享,并且对特定实例的变量所做的更改不会反映在其他实例上。当为堆中的对象分配内存时,将为每个实例变量创建一个槽。对象的实例变量在使用“new”创建对象时创建,并在对象销毁时销毁。对象使用它们来保存状态。

语法:

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.
}
登录后复制

声明实例变量

实例变量有默认值;因此,与局部变量不同,它们无需初始化即可声明。变量的默认值取决于它们的数据类型。

Datatype Default Value
boolean false
byte 0
short 0
int 0
long 0L
char u0000
float 0.0f
double 0.0d
Object null
数据类型 默认值 布尔值 假 字节 0 短 0 int 0 长 0L 字符 u0000 浮动 0.0f 双 0.0d 对象 空 表>

Characteristics of Instance Variable in Java

  • Instance variables are visible to the constructor, method(s) and block(s). It is usually recommended to declare them as private, but the users can change the level of visibility by declaring it with various access modifiers suitable for their program.
  • The variable name generally calls instance variables, but when these variables are used within a static method, they should be called using a fully specified name with the variable’s reference.
    Syntax:
    Objectreference.variable_name
    登录后复制
  • Instance variables of a base class can be used by the subclasses depending on the access level given to the variable.
  • Instance variables can be declared final to protect the constness of a declared variable. final instance variables are initialized while declaration and can’t be modified. They can also be declared and initialized in block and constructor.
  • The instance variable can use the default access modifier.
  • Instance variables can be declared. If a variable is declared as transient, it is not serialized into a byte stream. Its state changes are not stored. In deserialization, when the object is created back from the byte stream, transient variables hold their respective data type’s default values.
  • Instance variables cannot have abstract, synchronized, strictfp or native modifiers as these are applicable to methods only.
  • Instance variables cannot be declared static if declared, they become class level variables.

Examples of Instance Variable in Java

Examples of the instance variable in java are given below:

Example #1

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:

Java中的实例变量

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:

Java中的实例变量

Example #2

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:

Java中的实例变量

Example #3

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:

Java中的实例变量

以上是Java中的实例变量的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!