原来变量涉及到的内容这么多

变量详细解释



前言

变量是计算机编程中的一个基本概念,它代表了一个可以存储和引用数据值的标识符。换句话说,变量是一个命名的存储位置,用于保存程序中使用的各种数据。这些数据可以是不同的类型,如整数、浮点数、字符、布尔值等。


一、Java变量声明和初始化的基础规则?

1、声明变量

声明变量就是告诉编译器你要使用的一个变量名称及其类型。例如,如果你想声明一个整数类型的变量,你可以这样做:
在这里,int 是变量的类型(表示整数),而 age 是变量的名称。

int age;

2、初始化变量

初始化变量就是为变量分配一个初始值。这可以在声明变量时完成,也可以稍后在代码中完成。例如:

//在声明时初始化
int age = 10;

//稍后初始化,先声明age这个变量,然后再将age这个变量初始化成10这个值
int age;
age = 10;

3、变量的作用域

变量的作用域定义了变量在代码中的可见性和生命周期。在Java中,变量的作用域可以是局部的(限制在方法或代码块内)或全局的(作为类的成员变量)。根据声明位置,可以分为以下几类:

1)局部变量:

局部变量是在方法、构造函数或代码块内部声明的变量。它的作用域仅限于声明它的方法、构造函数或代码块。一旦执行离开了这个范围,局部变量就不能再被访问了。局部变量在每次进入方法、构造函数或代码块时都会被创建,在每次退出时都会被销毁

public class MyClass {  
    public void myMethod() {  
        int localVariable = 10; // 局部变量,只在myMethod方法内部有效  
        System.out.println(localVariable); // 可以访问  
    }  
      
    public void anotherMethod() {  
        // 在这里不能访问localVariable,因为它超出了作用域  
    }  
}

2)实例变量:

实例变量是在类中,但在任何方法之外声明的变量。实例变量的作用域是整个类。它们与类的实例(对象)相关联,每个对象都有其自己的实例变量副本。当对象被创建时,它的实例变量会被初始化,当对象被销毁时,实例变量也会随之销毁

public class MyClass {  
    int instanceVariable = 20; // 实例变量,在整个MyClass类中有效  
      
    public void myMethod() {  
        System.out.println(instanceVariable); // 可以访问  
    }  
}

3)静态变量(类变量):

静态变量是在类中使用static关键字声明的变量。静态变量的作用域是整个类,但与其他实例变量不同的是,静态变量属于类本身,而不是类的任何特定实例。因此,无论创建了多少个类的对象,都只有一个静态变量的副本。静态变量在类加载时初始化,当类卸载时销毁。

public class MyClass {  
    static int staticVariable = 30; // 静态变量,在整个MyClass类及其所有对象中有效  
      
    public static void main(String[] args) {  
     	// 可以访问,注意变量的访问形式,不需要new出一个对象,可以直接用<对象.属性>去引用即可  
        System.out.println(MyClass.staticVariable);
    }  
}

如果还不够清晰的话,还有一个复杂点的:

例:

假设我们有一个Student类,这个类用来表示学生,每个学生都有自己的名字和学号。但是,我们还想记录所有学生的总数,这个总数并不是某一个学生特有的属性,而是所有学生共有的,所以我们应该使用一个静态变量来保存它。

public class Student {  
    private String name;  
    private int id;  
      
    // 静态变量,用来记录所有学生的总数  
    private static int totalStudents = 0;  
      
    // 构造方法  
    public Student(String name, int id) {  
        this.name = name;  
        this.id = id;  
          
        // 当创建一个新的学生对象时,总学生数加一  
        totalStudents++;  
    }  
      
    // 静态方法,用来获取所有学生的总数  
    public static int getTotalStudents() {  
        return totalStudents;  
    }  
      
    // 其他方法,比如获取名字、学号等  
    public String getName() {  
        return name;  
    }  
      
    public int getId() {  
        return id;  
    }  
      
    // 为了演示,我们添加一个main方法  
    public static void main(String[] args) {  
        // 创建几个学生对象  
        Student student1 = new Student("张三", 1);  
        Student student2 = new Student("李四", 2);  
        Student student3 = new Student("王五", 3);  
          
        // 打印所有学生的总数  
        System.out.println("学生总数: " + getTotalStudents()); // 应该输出 3  
          
        // 由于totalStudents是静态的,我们可以直接通过类名访问它  
        System.out.println("通过类名直接访问的学生总数: " + Student.totalStudents); // 同样输出 3  
    }  
}

在这个例子中,totalStudents是一个静态变量,它用来记录所有创建的Student对象的数量。每当创建一个新的Student对象时,构造方法会被调用,并且totalStudents的值会增加1。这个变量是静态的,意味着它不属于任何一个特定的Student对象实例,而是属于Student类本身。因此,我们不需要通过Student的某个对象实例来访问或修改它,而是可以直接通过类名Student来访问。

在main方法中,我们创建了几个Student对象,然后通过getTotalStudents静态方法和直接通过类名访问静态变量totalStudents来打印出学生的总数。由于totalStudents是静态的,所以它的值会在所有Student对象之间共享。

4)方法参数和异常处理参数

方法参数的作用域仅限于方法内部,它们用于在方法调用时传递数据。异常处理参数(如在catch块中声明的参数)的作用域仅限于该catch块。

public void myMethod(int parameter) { // 方法参数,只在myMethod方法内部有效  
    System.out.println(parameter); // 可以访问  
}  
  
try {  
    // 可能会抛出异常的代码  
} catch (Exception e) { // 异常处理参数,只在catch块内部有效  
    e.printStackTrace(); // 可以访问异常对象e  
}

4、变量的命名规则

* 变量名必须以字母、美元符号($)或下划线(_)开头。  
* 变量名不能以数字开头。  
* 变量名只能包含字母、数字、美元符号和下划线。  
* 变量名是大小写敏感的(例如,`myVariable` 和 `myvariable` 是两个不同的变量)。  
* 避免使用Java关键字作为变量名。

埋个钩子,为什么现在有些人不建议使用is开头来做变量名,如isSuccess来表示是否成功?后续出篇文章讲一下这个事。

5、变量的类型

Java是一种强类型语言,这意味着在声明变量时必须指定其类型。Java支持多种数据类型,包括基本类型(如 int、float、char、boolean 等)和引用类型(如类、接口和数组)。

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jz_Stu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值