强哥说Java--Java 变量

简介: 强哥说Java--Java 变量

Java 变量


1. 什么是变量


在程序设计中,变量是指一个包含值的存储地址以及对应的符号名称

从定义上来看,变量大概可分为两部分:变量的名字和变量的值可通过变量名来访问变量值

简单来说,变量就是存储数据的载体。


//String是变量类型,$Ahello是变量名,右侧”caq1“是字符串
String $Ahello = "caq1";
String _Ahello = "caq2";
String ahello = "caq3";
String Ahello = "caq3";


2. 创建变量


Java语言中,我们需要做两件事才能创建一个变量:

  1. 给变量起一个名字
  2. 定义变量的数据类型
  3. 创建变量的过程也叫声明变量
    声明变量的语法如下:


String 王者荣耀 = "倔强青铜";

当然你也可以不赋予变量值

int a;

3. 变量命名规范


  • 变量命名区分大小写
  • 变量命名应采用小驼峰命名法。前面提到过,简单来说就是首字母小写,之后每个单词首字母大写
  • 如果变量存储了一个常量值,要将每个字母大写并用下划线字符分隔每个单词


static final int MAX_NUM = 100;

4. 常量


所谓常量,就是恒常不变的量。

与变量不同的是,一旦它被赋值后,在程序的运行过程中不允许被改变。常量使用final关键字修饰:


final int 常量名 = 1;

常量的命名规范与普通变量有所不同,要将每个字母大写并用下划线字符分隔每个单词。

你要是更改常量的值,并允许哪肯定是会报错的


5.变量的种类


学习种类之前要对Java的类和面向对象有所了解!我们先学着喽,回头再来看!

  • 实例变量(见代码中instance Variable
  • 类变量(见代码中class Variable
  • 局部变量(见代码中local Variable
  • 参数(见代码中parameterargs


//类变量 类的关键词static
//正常变量格式:类型 变量名 = 值;
//类变量 static 类型 变量名 = 值;
package com.caq.base;
public class Demo07 {
    static double salary = 3000; //类变量,就的带个关键字static的
    //实例变量
    //实例变量:从属于对象;如果不自行初始化,默认值是0,0.0
    //布尔值默认是false
    //除了基本类型,其余默认值都是null
    int age;
    public static void main(String[] args) {
        //局部变量:必须声明和初始化值
        int i = 10;
        System.out.println(i);
        //使用实例变量
        //先生成一个对象,然后使用对象里的变量
        Demo07 jack = new Demo07();
        System.out.println(jack.age);
    }
}

5.1 实例变量


实例变量在类范围内声明。声明时不使用static关键字修饰,因此也称为非静态字段

实例变量和实例对象相关,因此需要通过new关键字实例化出对象,通过对象才能访问其实例变量(也称实例属性)。 上述代码中,nameage就是用于存储其对象的属性,我们实例化了两个学生对象,其实例变量nameage,在每个对象实例中是唯一的。

在类范围内声明

在IDEA中我们通过alt+Insert键,可以一键生成image.png


package com.caq.base;
public class Test1 {
    //两个实例变量
    int age;
    String name;
    //构造方法
    public Test1(int age, String name) {
        this.age = age;
        this.name = name;
    }
    //打印年龄和姓名的方法
    public void print(){
        System.out.println(age);
        System.out.println(name);
    }
    //程序入口
    public static void main(String[] args) {
        //定义对象,也就是生成一个实例。
        //用实例的变量,格式:对象名.实例变量
        //用方法也是一样,格式:对象名.实例变量
      Test1 student = new Test1(3,"Jack");
        Test1 student1 = new Test1(4,"Rose");
        student.print();
        student1.print();
    }
}
E:\Environment\Java\jdk1.8\bin\java.exe
3
Jack
4
Rose

出学阶段可能看不懂,没关系啊,先敲敲代码学到面向对象就明白了

实例变量和实例对象相关,因此需要通过new关键字实例化出对象,通过对象才能访问其实例变量(也称实例属性)。 上述代码中,nameage就是用于存储其对象的属性,我们实例化了两个学生对象,其实例变量nameage,在每个对象实例中是唯一的。


5.2 类变量


类变量在类范围内使用static关键字修饰,因此类变量又被称为静态字段、静态变量

有关键字static的变量

public class Test1 {
public static int b;
public static void main(String[] args) {
  System.out.println(Test1.b);
  }
}

类变量和类相关,因此不需要使用new关键字实例化对象后再调用,可以直接通过类名 + .点运算符 + 类变量名的方式调用。


5.3 局部变量


局部变量是在方法范围内被声明和使用的。它们没有任何关键字修饰,可以根据变量声明的位置来认定局部变量(即方法的左花括号和右花括号之间),因此,局部变量只可以对声明它们的方法可见。方法返回后,它们将被销毁。

局部变量:没有默认初始化值。 意味着,我们在调用局部变量之前,一定要 显式赋值。 特别地:形参在调用时,我们赋值即可。

在方法内部的变量!

package com.caq.base;
public class Test2 {
    public static void main(String[] args) {
        // 局部变量 name
        String name = "ccc";
        // 局部变量 age
        int age = 20;
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
    }
}

5.4 参数


// Student 类构造方法
public Student(String name, int age) {  // name 和 age 就是传递给Student构造方法的参数
    this.name = name;
    this.age = age;
}

方法体中的this.namethis.age指代的是实例变量,而 nameage是参数,它们被用于赋值给实例变量。

看不懂没关系,学到后面就知道了!

Java有一个名为this的关键字。它是对类的当前实例的引用。

它只能在实例的上下文中使用。

package com.caq.base;
//this.属性名
public class Test2 {
    //name,salary,age作用域都是private,在类外部无法对它们的值进行设置
    private String name;    // 教师名称
    private double salary;    // 工资
    private int age;    // 年龄
    //可以为 Teacher 类添加一个构造方法,然后在构造方法中传递参数进行修改。代码如下:
    //提示:当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。
    public Test2(String name, double salary, int age) {
        this.name = name;    // 设置教师名称
        this.salary = salary;    // 设置教师工资
        this.age = age;    // 设置教师年龄
    }
    public static void main(String[] args) {
        Test2 teacher = new Test2("王刚", 5000.0, 45);
        System.out.println("教师信息如下:");
        System.out.println("教师名称:" + teacher.name + "\n教师工资:" + teacher.salary + "\n教师年龄:" + teacher.age);
    }
//在 Teacher 类的构造方法中使用了 this 关键字对属性 name、salary 和 age 赋值,this 表示当前对象。this.name=name语句表示一个赋值语句,等号左边的 this.name 是指当前对象具有的变量 name,等号右边的 name 表示参数传递过来的数值。```

相关文章
|
13天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
1月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
2月前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
42 2
|
21天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
29天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
77 4
|
1月前
|
Java
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
本文探讨了在Java中,当父类的方法返回`this`对象或变量时,子类调用该方法的行为,以及`this`关键字在不同类中调用方法时的指向问题。
16 0
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
|
2月前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
65 11
|
3月前
|
Java
【Java基础面试七】、请介绍一下实例变量的默认值
这篇文章介绍了Java中实例变量的默认值:引用数据类型的默认值是null,而基本数据类型的默认值根据其类型分别是0、0L、0.0F、0.0、'\u0000'和false。
【Java基础面试七】、请介绍一下实例变量的默认值
|
2月前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
下一篇
无影云桌面