day03_常量丶字面量丶变量

常量

在Java程序中固定不变的数据我们称之为常量,其分类一般如下所示

    day03_常量丶字面量丶变量

代码示例

/*
常量:在程序运行期间,固定不变的量。
常量的分类:
1. 字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:"abc"、"Hello"、"123"
2. 整数常量:直接写上的数字,没有小数点。例如:100、200、0、-250
3. 浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0
4. 字符常量:凡是用单引号引起来的单个字符,就做字符常量。例如:'A'、'b'、'9'、'中'
5. 布尔常量:只有量中取值。true、false。
6. 空常量:null。代表没有任何数据。
*/
public class Demo01Const {
    public static void main(String[] args) {
        // 字符串常量
        System.out.println("ABC");
        System.out.println(""); // 字符串两个双引号中间的内容为空
        System.out.println("XYZ");
        
        // 整数常量
        System.out.println(30);
        System.out.println(-500);
        
        // 浮点数常量(小数)
        System.out.println(3.14);
        System.out.println(-2.5);
        
        // 字符常量
        System.out.println('A');
        System.out.println('6');
        // System.out.println(''); // 两个单引号中间必须有且仅有一个字符,没有不行。
        // System.out.println('AB'); // 两个单引号中间必须有且仅有一个字符,有两个不行。
        
        // 布尔常量
        System.out.println(true);
        System.out.println(false);
        
        // 空常量。空常量不能直接用来打印输出。
        // System.out.println(null);
    }
}

字面量

字面量就是数据/数值,例如:1234,true,”abc”,‟中‟,3.14。在现实生活中每天都会接 触到数据,例如:你今天的体重是 86Kg,你今天花了 500 元,买了个西瓜重量是 8.6Kg,外 面明明是晴天,你却说狂风暴雨,你说的是假话(false),你明明喜欢她,却嘴上说不喜欢, 撒谎(false)。 软件其实就是为了解决现实生活当中的问题,解决生活当中的问题其实就是处理生活当中 的数据,一门编程语言首先要能够表示数据才可以处理数据,所以 Java 程序通过字面量来表 示数据。 在编程语言中数据一般会被分门别类,所以每个数据都是有数据类型的,不同的数据类型 会分配不同大小的内存空间去存储它。 数据被分为:整数型、浮点型、字符型、布尔型、字符串型等。

  • 整数型(数字):1、2、100、-2
  • 浮点型(数字,带小数):1.0、2.0、3.14
  • 字符型(文字,单个字符):‟a‟、‟中‟
  • 布尔型(真假):true、false
  • 字符串型(文字,多个字符):”你好呀童鞋,欢迎来到java世界!”

需要注意的是,java 中规定字符型字面量必须采用半角的单引号括起来,而字符串型字面量必须使用半角双引号括起来。这是一个语法规定,不然编译器就报错了。只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复利用的。使用变量之后,内存空间就得到了复用。

变量

变量概述:变量是内存当中存储数据最基本的单元,将数据(字面量)放到内存当中,给这块内存空间起一个名字,这就是变量。所以变量就是内存当中的一块空间,这块空间有名字、有类型、 有值,这也是变量必须具备的三要素。变量在内存中的抽象图形可以参考下图:

 

                                              day03_常量丶字面量丶变量

 

在上图当中每一个抽象的椭圆就代表一个变量,其中 a、c、pi、sex 是 4 个变量的名字(变 量名只要是合法的标识符即可),13、‟好‟、3.14、true 是 4 个变量中分别存储的数据(字面 量),int、char、double、boolean 是 4 个变量分别对应的数据类型(int、char、double、boolean 等都是 java 的关键字,声明变量时用来指定变量的数据类型)。

数据类型在任何一门编程语言当中都很重要,因为程序在运行的过程中会通过不同的数据 类型给数据分配不同大小的空间。有的数据类型占用的空间较小,但有的数据类型占用的空间 就会很大。这也是符合现实的,在现实生活中有些数据较大,有些数据则较小。

变量要求“变量的数据类型”和变量中存储的“数据(字面量)”必须类型是一致的,换 句话说,冰箱是用来存放小食品的,也就是说冰箱只能存放小食品,大象不能往冰箱里放,原 因是放不下,空间不合适。例如:int 类型就只能存下 4 个字节大小的整数,再长一点儿放不 下,比如 long 类型的整数占有 8 个字节,这样的数据肯定是无法放到 int 类型的变量当中的。

所谓变量:可变化的量。它的意思是变量中存储的数据不是一成不变的,是可以被改变的, 假设变量 i 中之前存储的数据是 10,我们可以将 10 换成 100,变量就是这个意思。

大家需要掌握一个变量是有三要素组成的,分别是:数据类型、变 量名、存储的值。其中存储的值就是的字面量。Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型。当在 Java 程序中输出某个变量名称的时候,会自动输出变量中所保存的值。

声明变量

我们在使用变量之前需要先进行变量的声明,那么声明变量的语法格式如下所示

  • 数据类型 变量名;

以上则是声明变量的语法格式,其中数据类型我们以后会详细讲解,目前我们以 “int”这种数据类型为例进行学习,int 表示整数类型。变量名只要符合标识符命名规则即可,当然也要见名知意,命名规范中还要求 变量名首字母小写,后面每个单词首字母大写。请看以下代码则表示声明一个 int 类型的变量 age 用来存储年龄数据:

//  数据类型 变量名;
    int age;
/*
  那么 java 语言中怎么给变量赋值呢?
  在 Java 语言中给变量赋值需要采用赋值运算符“=”,
  请看赋值的语法格式:变量名 = 值;
*/
   age = 20; //给 age 赋值为20

我们也可以在声明变量的同时给变量赋值,格式如下:

  • 数据类型 变量名 = 数据值;
/*
等号“=”是一种运算符,它被称为赋值运算符,赋值运算符右边的表达式优先级较高,
所以等号右边先执行,将执行结果赋给左边的变量。
*/
int age = 20;

使用变量的注意事项

  • Java中每个变量必须先声明,后使用
  • 使用变量名来访问这块区域的数据
public class Demo {
    public static void main(String[] args) {
        // 方法体当中的代码遵循自上而下的顺序依次逐行执行。变量必须先声明在访问
        // System.out.println(k); 错误: 找不到符号
        // 只有执行了这一行代码,k变量在内存中才会开辟空间。
        int k = 10;
 
        // 定义一个int类型的变量,起名age,该变量用来存储人的年龄。
        int age;
        // 变量声明之后,没有手动赋值,直接访问,编译报错:错误: 可能尚未初始化变量nianLing
        //System.out.println(age);
 
        // 给变量赋值
        age = 45;
        // 这是访问变量。
        System.out.println(age); //45
 
    }
}
  • 变量的作用域:其定义所在的一对{ }内,变量只有在其作用域内才有效
  • 同一个作用域内,不能定义重名的变量,变量可以重新赋值。
  • 一行上可以同时声明多个变量,但不建议使用,可读性不好
// 一行上可以同时声明多个变量吗?
// 答案:可以一行声明多个变量。
public class VarTest06{
    public static void main(String[] args){
        // 声明三个变量,都是int类型,起名a,b,c
        // 通过测试得出结论是:a,b没有赋值,c赋值100
        int a, b, c = 100;
 
        // 变量必须先声明,再赋值,才能访问,a,b两个变量赋值了吗?
        //错误: 可能尚未初始化变量a
        //System.out.println(a);
        //错误: 可能尚未初始化变量b
        //System.out.println(b);
        System.out.println(c);
 
        // 给a赋值
        a = 200;
        // 给b赋值
        b = 300;
        System.out.println(a);
        System.out.println(b);
        
    }
}

java中有一个很重要的原则: 就近原则。(不仅java中是这样,其它编程语言都有这个原则。)哪个离我近,就访问哪个。

public class Demo {
 
/*
    变量的作用域?
        1、什么是作用域?
            变量的有效范围。
        2、关于变量的作用域,大家可以记住一句话:
            出了大括号就不认识了。(死记这句话。)
        3、java中有一个很重要的原则:
            就近原则。(不仅java中是这样,其它编程语言都有这个原则。)
            哪个离我近,就访问哪个。
*/
    // 成员变量
    int i = 10000;
 
    public static void main(String[] args) {
        // 局部变量
        int i = 100; // 这个i的有效范围是main方法。
        System.out.println(i); // 100
    }
}

变量根据声明的位置不同可以分为:

  • 局部变量
  • 成员变量
在方法体当中声明的变量以及 方法的每一个参数都是局部变量。在方法体外,类体内声明的变量称为成员变量,成员变量声 明时如果使用 static 关键字修饰的为静态成员变量(简称静态变量),如果没有 static 关键字 修饰则称为实例成员变量(简称实例变量)

                                                     day03_常量丶字面量丶变量

代码示例

package demo;
 
public class Demo {
    int x = 20; // 实例变量
    static int y = 200; // 静态变量
 
    public static void sum(int a, int b) { // 局部变量 a 和 b
        int firstNum = 100; // 局部变量
    }
}
 

局部变量只在方法体当中有效,方法开始执行的时候局部变量的内存才会被分配,当方法 执行结束之后,局部变量的内存就释放了。所以局部变量的生命周期非常短暂

变量根据数据类型分

  • 每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分 配了不同大小的内存空间。
  day03_常量丶字面量丶变量 定义所有基本数据类型的变量,代码如下
public class Demo {
    public static void main(String[] args) {
        //定义字节型变量
        byte b = 100;
        System.out.println(b);
        //定义短整型变量
        short s = 1000;
        System.out.println(s);
        //定义整型变量
        int i = 123456;
        System.out.println(i);
        //定义长整型变量
        long l = 12345678900L;
        System.out.println(l);
        //定义单精度浮点型变量
        float f = 5.5F;
        System.out.println(f);
        //定义双精度浮点型变量
        double d = 8.5;
        System.out.println(d);
        //定义布尔型变量
        boolean bool = false;
        System.out.println(bool);
        //定义字符型变量
        char c = 'A';
        System.out.println(c);
    }
}
上一篇:Day03_java基础 运算符


下一篇:Java关键技术强化:类加载器之Class类的作用(1) (day03)