我布置了作业,请大家留言解答。
在Java语言中,变量的值随着程序的运行而随之发生变化。而常量的值在一旦定义后就一直固定不变。
3.3.1 常量
问:介绍什么是常量,包括概念、语法、注意事项和举例。
ChatGPT:常量(Constants)是在程序中固定不变的值,其值在定义后不能被修改。在Java中,常量可以使用关键字 final 来声明,表示一旦赋值就不能再改变。常量的命名通常使用大写字母,多个单词之间用下划线 _ 分隔。例如,在下面的代码中,定义了一个名为“EAT”的常量:
final String EAT = "麦当劳";
通过上述代码,将常量“EAT”的值设置为“麦当劳”。并且在整个程序中,“麦当劳”这个值是一直固定不变的。再看下面的例子,通过常量设置了老实人小菜的最爱食品。
范例3-1:小菜最爱的食品是麦当劳(实例文件:daima\3\3-1\...\Chang.java)
在本实例中定义了一个常量NAME,用于表示食品的名字。代码如下:
public class Chang {
public static void main(String[] args) {
final String NAME = "麦当劳"; //①
System.out.println("小菜最爱的食品是" + NAME); //②
}
}
- 代码①定义了String类型的常量NAME,常量值是“麦当劳”。
- 代码②输出常量的值。
执行后输出:
小菜最爱的食品是麦当劳
在Java语言中,String是一种表示文本字符串的数据类型。有关数据类型的知识,将在本章后面的内容中进行详细介绍。
【作业】
作业3-1-01:打印输出本班优秀学生的名字和年龄 创建两个常量,值分别是“娜娜”和19,然后打印输出“本班优秀学生的名字是娜娜,年龄19”。
作业3-1-02:打印线上高考状元的信息 创建两个常量,值分别是“娜娜”和670,然后打印输出“高考状元是娜娜,成绩是670”。
作业3-1-03:修改优秀程序员的年龄 定义常量并设置一个初始值,用于表示某优秀程序员的年龄,然后打印输出该优秀程序员的年龄。
3.3.2 变量
问:介绍什么是变量,包括概念、语法、注意事项和举例。
ChatGPT:在Java程序中,变量是用于存储和表示数据值的一个内存位置,具有一个唯一的标识符(变量名),通过这个标识符可以访问和修改存储在变量中的数据。在程序中,变量允许开发者临时存储和操作数据,使得代码更加灵活和可重用。在Java中,声明和使用变量需要遵循以下语法:
data_type variable_name; // 声明变量
variable_name = value; // 赋值操作
// 或者同时声明和赋值
data_type variable_name = value;
- data_type:表示变量的数据类型,例如 int、double、String 等。
- variable_name:是变量的标识符,可以由字母、数字、下划线组成,但不能以数字开头。
- value:是变量的初始值。
问:Java语言中的变量分为两种:局部变量和成员变量?
ChatGPT:是的,Java中的变量主要分为两种:局部变量(Local Variables)和成员变量(Member Variables),后者也可以称为实例变量(Instance Variables)或类变量(Class Variables)。
1.局部变量
- 定义范围:局部变量声明在方法、构造方法或者语句块内部,仅在这个特定的作用域内有效。
- 生命周期:局部变量的生命周期仅在其所属的方法、构造方法或语句块执行期间,一旦超出该范围,变量将被销毁。
- 无默认值:局部变量不会被赋予默认值,必须在声明时显式赋值后才能使用。
例如,下面的实例演示了使用局部变量表示麦当劳这一品牌的创建时间,你看一下是否起作用?
范例3-2:输出显示“麦当劳品牌简介”(范例文件:daima\3\3-2\...\PassTest.java)
在本实例中定义了一个int类型的局部变量age,用于表示麦当劳的成立时间。代码如下:
public class PassTest{
public void eat(){ //① 这是一个函数
int age = 21; //② 局部变量
System.out.println(age + "岁");
}
public static void main(String args[]){
String name = "麦当劳";
int age = 1955; //③
System.out.println(name + "是全球大型跨国连锁餐厅," + age + "年创立于美国芝加哥。"); //④
}
}
- 代码①定义函数eat(),能够打印输出一行文本。
- 代码②定义了一个int类型变量,设置变量值是21。注意,这个变量是在函数eat()内定义的,所以只在函数eat()中起作用,所以这是一个局部变量。
- 代码③定义了一个int类型变量,设置变量值是1955。
- 代码④输出变量的值。
执行后输出结果如下:
麦当劳是全球大型跨国连锁餐厅,1955年创立于美国芝加哥。
执行后输出的数字是1955?在函数eat()内定义的age的值是21,这个值没有起作用。这是因为变量age = 21是一个局部变量,所以只能在函数eat()中起作用。
【作业】
作业3-2-01:打印某学生的语文成绩 用变量表示某同学的语文成绩,然后打印输出这个变量的值。
作业3-2-02:输出显示“今日全家桶的销量” 创建两个不同类型的变量,分别表示全家桶和销量,然后用“+”将这两个变量连接并打印输出。
作业3-2-03:计算长方形和三角形的面积 使用变量分别表示长方形和三角形的边长,然后分别用长方形和三角形的面积计算公式计算出面积。
作业3-2-04:输出显示“身份证号的长度” 通过Scanner获取输入的身份证号码,然后打印输出身份证的长度。
2.成员变量
成员变量分为两种:实例变量和类变量。
(1)实例变量(Instance Variables)
- 定义位置:实例变量声明在类中,但在任何方法、构造方法或语句块之外。
- 生命周期:实例变量的生命周期与对象的生命周期一致,当创建对象时被初始化,当对象被销毁时销毁。
- 默认值:如果没有显式赋值,实例变量会有默认值(数值类型默认为0,布尔类型默认为false,对象类型默认为null)。
(2)类变量(Class Variables)
- 定义位置:类变量也声明在类中,使用 static 关键字。
- 生命周期:类变量的生命周期与类的生命周期一致,当类被加载时被初始化,当程序结束时被销毁。
- 默认值:类变量如果没有显式赋值,也有默认值。
范例3-3:输出显示“肯德基品牌的创建时间”(范例文件:daima\3\3-3\...\Quan.java)
在本实例中分别定义了int类型的成员变量z和局部变量z,用于表示肯德基的成立时间。代码如下:
public class Quan {
int z = 100; //设置变量z的初始值是100,这是一个成员变量
public static void main(String[] args){
int z = 1952; //重新给变量z赋值为1952,这是一个局部变量
System.out.println(z + "年,KFC由创始人哈兰·山德士(Colonel Harland Sanders)创建。");
}
}
执行后会输出:
1952年,KFC由创始人哈兰·山德士(Colonel Harland Sanders)创建。
【作业】
作业3-3-01:猜一猜张三的年龄是多少 创建一个String类型的变量a,然后用“+”将a的值和其他文本连接,最后打印输出连接后的内容。
作业3-3-02:输出显示公司前台的基本信息 分别用变量表示公司前台的姓名和编号,然后打印输出前台的信息。
作业3-3-03:找出程序的错误 分别声明两个整数变量,然后计算这两个变量的和,最后打印计算结果。
3.3.2 比较常量和变量:老实人和海王
问:比较Java常量和变量,将常量比作老实人,将变量比作海王进行通俗易懂的对比。
ChatGPT:好的,让我们将Java中的常量和变量比作两个不同的角色:常量是老实人,变量是海王。
1. 常量是老实人
- 不会变:老实人(常量)一旦决定了自己的身份(值),就会一直保持不变。无论发生什么,他都守信用。
- 可靠:老实人是值得信赖的,你可以相信他的身份不会轻易改变。如果他说他的值是10,那么就是10。
- 不轻易受外界影响:老实人的身份不容易被外部因素改变。他们在程序中是稳定的,不会随着程序的运行而变动。
2. 变量是海王
- 灵活:海王(变量)是自由自在的,他的身份可以根据需要改变。有时候他是1,有时候他是1000。
- 不固定:海王并不一直保持相同的身份,他可以在不同的场合表现出不同的值。他的值可能随着程序的执行而改变。
- 受外部因素影响:海王的身份可能受到外部因素的影响,比如程序运行过程中的操作可能改变他的值。
在Java程序中,我们可以选择使用常量或变量,具体取决于我们的需求。如果我们希望一个值一直保持不变,就像一个老实人一样,那么使用常量是个不错的选择。如果我们需要一个可以灵活改变的值,就像一个自由的海王,那么使用变量是更合适的。
我布置了作业,请大家留言解答。