一文带你彻底搞懂Java中常说的各种变量

首先汇总一下目前常说的各种变量:
全局变量(Java中是不存在全局变量这一说的,如果硬要说的话,全局变量的作用其实和类变量差不多)
成员变量(其实就是大家口里的一种叫法,其实它就是类变量和实例变量的总称)
类变量(也叫静态变量,因为该变量被static关键字修饰,java中规定由static修饰的变量归属于类,所以也叫类变量,如果该类的某个实例修改了该变量,那么该类的其他实例都会知道这次修改。即该类的所有实例共享这个变量,该变量在类中只此一份。)
实例变量(不使用 static 关键字定义,并且定义在任何方法、构造方法、块之外的变量都是实例变量。实例变量都是基于特定实例的,实例变量不会在实例之间共享,也就是说,每一个对象的实例都有自己的一个实例变量。)
局部变量(声明在方法、构造方法、语句块内部。)
参数(定义在方法参数列表内,也就是我们常说的方法的入参,比如main方法中的String[] args就是参数)
常量 在java中 由final修饰的变量称为常量。

其实查阅JDK官方文档我们就可以知道java中只有类变量、实例变量、局部变量和参数这四种变量。

下面详细介绍一下类变量、实例变量、局部变量。参数其实没啥好说的。

1.类变量(也叫静态变量)
(1)类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。

(2)无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。

(3)静态变量除了被声明为常量外很少使用,静态变量是指声明为 public(/private,final 和 static 类型的变量。静态变量初始化后不可改变。

(4)静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。

(5)静态变量在类加载时创建,在程序结束时销毁。

(6)与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。

(7)默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化,但仅仅是初始化,静态变量是不可以在静态块声明中的。

(8)静态变量可以通过:ClassName.VariableName的方式访问。

(9)类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

2. 实例变量
(1)实例变量声明在一个类中,但在方法、构造方法和语句块之外;

(2)当一个对象被实例化之后,每个实例变量的值就跟着确定;

(3)实例变量在对象创建的时候创建,在对象被销毁的时候销毁;

(4)实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;

(5)实例变量可以声明在使用前或者使用后;

(6)访问修饰符可以修饰实例变量;

(7)实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;

(8)**实例变量具有默认值。**数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;

(9)实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

3. Java 局部变量
(1)局部变量声明在方法、构造方法或者语句块中;

(2)局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;

(3)访问修饰符不能用于局部变量;

(4)局部变量只在声明它的方法、构造方法或者语句块中可见;

(5)局部变量是在栈上分配的。

(6)局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

4、代码实例分析

public class VariablesInJava {

 int instanceVariable; // 实例变量

 static String staticVariable; // 类变量

 public void method() {
    
  String localVariable = "localVariable"; // 局部变量
  System.out.println(localVariable);
 }

 public static void main(String args[]) {} //参数
}

5、总结
(1)如果你用 static 来定义变量,只能是类变量、或者说静态变量、而且其定义位置只能在类中,且在方法、构造方法和代码块外,变量的副本只有一个。

(2)如果你不用 static 来声明变量,那么就会有以下三种变量的叫法:
定义在构造方法、代码块、方法的变量被称为实例变量,实例变量的副本数量和实例的数量一样。
定义在方法、构造方法、代码块的变量被称为局部变量
定义在方法参数列表中的变量被称为参数

本文参考链接(点击查看)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python面向对象编程(Object-Oriented Programming,简OOP)是一种程序设计方法,它将数据和操作数据的方法组合成对象,通过定义类(class)来创建对象。下面是一些概念和原则,可以帮助你更好地理解Python面向对象编程。 1. 类和对象: - 类是一种抽象的数据类型,它定义了对象的属性和方法。 - 对象是类的实例,它具有类定义的属性和方法。 2. 属性和方法: - 属性是对象的数据,可以是整数、字符串、列表等。 - 方法是对象的行为,可以是函数或过程。 3. 封装: - 封装是将数据和对数据的操作封装在一起,以创建一个独立的实体。 - 使用类来封装数据和方法,可以隐藏实现细节,提高代码的可读性和可维护性。 4. 继承: - 继承是一种机制,允许一个类继承另一个类的属性和方法。 - 子类可以重用父类的代码,并且可以添加新的属性和方法。 5. 多态: - 多态是指同一个方法可以在不同的类中具有不同的实现方式。 - 多态可以提高代码的灵活性和可扩展性。 下面是一个简单的例子,展示了如何定义一个类、创建对象并调用对象的方法: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.") # 创建对象 person = Person("Alice", 25) # 调用对象的方法 person.say_hello() ``` 这个例子定义了一个名为`Person`的类,它有两个属性(`name`和`age`)和一个方法(`say_hello`)。我们通过`Person`类创建了一个名为`person`的对象,并调用了它的`say_hello`方法。 希望这个简单的例子能帮助你更好地理解Python面向对象编程。如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值