常量
在Java程序中固定不变的数据我们称之为常量,其分类一般如下所示
代码示例
/* 常量:在程序运行期间,固定不变的量。 常量的分类: 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 中规定字符型字面量必须采用半角的单引号括起来,而字符串型字面量必须使用半角双引号括起来。这是一个语法规定,不然编译器就报错了。只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复利用的。使用变量之后,内存空间就得到了复用。
变量
变量概述:变量是内存当中存储数据最基本的单元,将数据(字面量)放到内存当中,给这块内存空间起一个名字,这就是变量。所以变量就是内存当中的一块空间,这块空间有名字、有类型、 有值,这也是变量必须具备的三要素。变量在内存中的抽象图形可以参考下图:
在上图当中每一个抽象的椭圆就代表一个变量,其中 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 } }
变量根据声明的位置不同可以分为:
- 局部变量
- 成员变量
代码示例
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; // 局部变量 } }
局部变量只在方法体当中有效,方法开始执行的时候局部变量的内存才会被分配,当方法 执行结束之后,局部变量的内存就释放了。所以局部变量的生命周期非常短暂
变量根据数据类型分
- 每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分 配了不同大小的内存空间。
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); } }