Day04 java基础:变量和常量

变量

在这里插入图片描述
变量怎么使用?

先声明后使用。我们通过变量的名字(变量名)来使用变量。

//int a,b,c;
        //int a = 1, b = 2, c = 3;
        //为保证程序可读性,应采用固定格式
        int a1 = 1;
        int b1 = 2;
        int c1 = 3;
        String ame = "jiangaywen";
        char x='x';
        double pl=3.14;

变量和变量名的区别(变量的定义)

变量包括变量名,变量类型和作用域。

变量名和标识符的区别

标识符:java所有的组成部分都需要名字。

包名、类名、变量名、常量名、方法名或其他用户定义项所定义的名称都被叫做标识符。

标识符可以有一个或多个字符。

变量和对象的区别

解释1. 这里有两个概念:变量和对象

变量在线程堆栈上分配,并且随时消亡,对象在托管堆上分配,受垃圾收集器管理。所谓引用,是指变量引用对象,追究起来,其实是个指针。

变量消失不等于对象消失,因为可能有多个变量引用同一对象。当一个变量引用一个对象时,这个变量成为这个对象的根。

当对象没有根时,它就成为垃圾收集器销毁的目标。


解释2:首先变量的类型,分基本类型和引用类型。即基本变量和引用变量。

个人理解:我们通过变量名来使用变量,再通过变量里存的地址找到指向的对象。变量当中存的是对象的地址,对象属于引用类型变量引用的对象。)

变量作用域和存放位置

本人的理解是所定义的变量,在哪些范围能够使用,能使用的这个范围称为这个变量的作用域。

在这里插入图片描述

  1. 全局变量(或称成员变量)可分两种:一种是 类 变 量 \color{red}{类变量} (静态变量),另一种是 实 例 变 量 \color{red}{实例变量} ,即在类体中定义的变量。
    在类中声明的变量是成员变量,也叫全局变量,全局变量不会随着某个方法执行结束而销毁。在类中声明的变量即可是基本类型的变量 也可是引用类型的变量。
  • 类变量是基本类型时,变量存在方法区,值放在常量池。常量池在方法区中,方法区是堆的一个逻辑部分。

  • 类变量是引用类型时,变量存在方法区,所引用的对象放在堆。

  • 实例变量是基本类型时,变量存在堆,值放在常量池。常量池在方法区中,方法区是堆的一个逻辑部分。

  • 实例变量是引用类型时,变量存在堆,所引用的对象放在堆。

    区别:静态变量存储于方法区,而实例变量存储于堆区。

  1. 局部变量
    在方法中声明的变量,即该变量是 局 部 变 量 \color{red}{局部变量} ,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因。在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。
  • 局部变量是基本类型时,变量放在方法栈,值放在JAVA虚拟机栈中。

  • 局部变量是引用类型时,变量(该变量实际上是在方法中存储的是内存地址值)放在JAVA虚拟机的栈中,该变量所指向的对象是放在堆中。
    在这里插入图片描述

类变量与实例变量的区别:

  1. 存储位置不同。静态变量存储于方法区,而实例变量存储于堆区。
  2. 生命周期不同。静态变量在加载类过程中优先加载,其生命周期取决于类的生命周期;实例变量在创建实例时才创建,它的生命周期取决于实例的生命周期。
  3. 引用对象不同。静态变量属于类,被类的所有实例共享,可以直接使用类名来引用也可以通过类的实例引用;而实例变量则属于某个对象,它必须在创建对象后才可以通过这个对象来使用。
  4. 使用方法不同。一个类只能有一个同名静态变量,无论是通过类或者任何一个实例对静态变量重新赋值,结果都是一样;而一个类创建多少个实例就会有多少个同名实例变量,各实例变量存储空间不同,对其中一个实例变量重新赋值不影响其它实例的同名变量。
//类变量 static
static double salary=2500;//static随着类存在和消失

//属性:变量
//实例变量:从属于对象;
//如果不自行初始化,值为这个类型的默认值 0 0.0
//布尔值:默认是false
//除了基本类型,其余默认都是null
String name;
int age;

//main方法
public static void main(String[] args) {
    //局部变量:必须声明和初始化值
    int i = 10;
    System.out.println(i);

    //变量类型 变量名字=new Demo08();
    Demo08 demo08=new Demo08();
    System.out.println(demo08.age);
    System.out.println(demo08.name);

    //类变量
    System.out.println(salary);
}

//其他方法
public void add() {
    System.out.println(salary);
}

常量

在这里插入图片描述

注意:

  1. 常量用final关键字来修饰。
  2. 常量一般用大写字母来定义。
//修饰符,不存在先后顺序
static  final double PI=3.14;
final   static double PI2=3.14;

public static void main(String[] args) {
    System.out.println(PI);
    System.out.println(PI2);
}

变量和常量的命名规范

在这里插入图片描述

类名:首字母大写+驼峰命名法。

类成员变量,方法名,局部变量:首字母小写+驼峰命名法。

常量:大写字母和下划线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值