本文是《Java学习指南》原书的网络版,作者邵发,拥有本书的全部权利。相关视频课程在此查看。
目录
第2章 变量
2.1 使用变量
2.1.1 引例
现在,我们已经学会了使用System.out.println() 可以来输出一个值。进一步的,我们用来显示简单算术运算的结果。例如,
System.out.println("乘积: " + (123 * 456) );
其中,小括号中123*456表示123与456的乘积。此句代码能够将两者的乘积打印输出到控制台窗口。
进一步的,我们可以写一段代码,用于计算一个数的平方和立方的值。例如,
System.out.println("数值: " + 12 );
System.out.println("平方: " + (12* 12) ); // 平方
System.out.println("立方: " + (12* 12* 12)); // 立方
看起来写程序也不是很难嘛!
但是,现在问题来了,如果求22的平方和立方呢?如果不嫌麻烦,我们可以修改上面的代码,修改为:
System.out.println("数值: " + 22);
System.out.println("平方: " + (22* 22) ); // 平方
System.out.println("立方: " + (22* 22* 22)); // 立方
修改6处之后,即可以完成新的要求。但这,明显是有点麻烦了是吧!
2.1.2 变量
下面,我们学习一个新的概念:变量。
变量,variable,就是“可以变化的量”。在Java编程里,变量是最常见的概念。
例如,
int year =2017;
这行代码就定义了一个变量,名字叫year, 类型为int,值为2017。其中,int类型是integer的综写,表示一个整数。
再来见识一下更多的变量的写法,
int a = 123;
int year =2017;
int yue = 7;
int dongaohuishinanian=2022;
int bbb333 = 1234590;
int days_of_2017 = 365;
可以发现,每一个变量都有3个要素:名称、类型、值。
2.1.3 变量的命名
变量的命名,其实是较为随意的。我们只要记住最主要的几条规则就可以了。
v 英文字母、数字、下划线(但不能数字开头)
v 不一定要用英文单词,用拼音也是可以的
v 随便写也可以,但可读性差
v 区分大小写, Year 和 year 是不同的变量
下面,我们看几个写法:
int 2a = 0; // 错误,不能以数字开头。
int b2 = 1; // 正确。字母开头是没问题的。
int _c3 = 100; // 正确。可以用下划线开头。
int d4-size = 101; // 错误。不可以用横杠。
2.1.4 变量的简单运算
下面,我们学习一下变量的简单算术运算:加法,减法、乘法。和小学算术的用法是一样的,只是我们用星号来表示乘法。注意,现在不涉及除法运算。
加法 例 a = b + 10;
减法 例 a = b–10;
乘法 例 a = b * 10;
示例:
int b1 = 123;
int b2 = b1 + 10;
int b3 = ( b1 + b2 ) * 199;
System.out.println("b3 的值是" + b3 );
没有什么特别的,就是小学算术,一分钟就可以学完了,不是吗?
下面,我们就可以解决引例的问题。
int a = 12;
int a2 = a * a; // 平方
int a3 = a * a * a; // 立方
System.out.println("数值: " + a );
System.out.println("平方: " + a2 );
System.out.println("立方: " + a3 );
如果想求22的平方和立方,那么只需要把第一行改一下就行了,
int a = 22; // 改成22即可
显然,通过使用变量,就可以轻松解决问题。这是变量的基本作用之一,后面我们将进一步学习变量的更多用法。
2.2 整数,小数,字符串
2.2.1 整数与小数
在Java语言里,用int类型来表示整数。(int: 即integer ) 例如,
int a = 12345;
int b = -294;
显然,既可以表示正整数,也可以表示负整数。
用double类型表示小数,英文原意为double float point,表示双精度浮点型。浮点型是一个计算机硬件相关的术语,我们不必关心其背景意义;只需知道,使用double可以表示一个小数。例如,
double c = 123.456;
double d = -349; // 相当于-349.0
我们还需知道,无论是 int 还是 double都只能表示有限的范围。
例如,
int a = 12345; //OK
int b = 111222333444555; // 错误!数字太大,超出范围
那么,一个int可以表示的整数的范围是多大呢?这个范围很大,是-2147483648~2147483647 ,约21亿左右。double能表示的小数的范围也是很大的。
无论是现在,还是将来,这个范围是不需要我们精确记忆的。在入门学习中,int和double是够大的,足够我们学习使用。
2.2.2 字符串
在编程的时候,用String类型可以表示一个字符串。
例如,
String name = "邵发";
这里定义了一个变量:名称为 name,类型为String, 值为"邵发"。
现在,我们做一个小练习:
说有一个同学的名字叫小张,今年18岁,体重67.8kg,生日1994年8月3日。用代码表示这些量。
String name = "小张";
int age = 18;
double weight = 67.8;
String birthday = "1994-8-3";
在这段代码中,我们用String来表示字符串类型的值,用int表示整数类型的值,用double表示小数类型的值。
有的同学会问,使用String不能表示年龄吗?
String age = "18";
并非不可以,只能说不太合适。至于什么样的数据用什么样的类型,这是个很自然的事情,后面自然而然就知道了。
2.2.3 变量的赋值
前面我们说过,变量,就是可以变化的量。也就是说,一个变量的值是可变的。例如,
int a = 0;
System.out.println("a:" + a );
int b = 5;
a = b *b; // 此处a的值发生变化
System.out.println("a变为:" + a);
其中,我们用等号来进行赋值操作,将等号右边的值计算出来,赋值左边的变量。这里,把等号称为“赋值操作符”。
其计算过程为:①求得右侧式子的值,②把值赋给左边的变量。
2.3 布尔类型
2.3.1 引例
现在,我们希望用变量表示以下的值。
同学的名字叫小张,
年龄:18岁
体重:67.8kg
生日:1994年8月3日
性别:男
在这里,添加一项性别。那么,性别该怎么表示呢?
第一种办法: 用String型表示
String sex1 = "male"; // 规定 "male" 或 "female"
第二种办法: 用int型表示
int sex = 1; // 规定 1 表示男 0 表示女
无论是用String,还是用int,都存在一个缺点:就是可能存在非法的值。例如,如果不小心把 sex设为-1,那就没法理解了。
int sex = -1; // 一个非法的值,但编译器不会报错
所以,我们需要一种新的类型,来表示这种非此即彼、二选一的值。
2.3.2 boolean类型
在 Java语言里,boolean类型表示“是”/“否”这种二选一的值。一般译作布尔类型。例如,
boolean a = true;
boolean b = false;
其中,boolean是变量类型,a是变量名称,true是变量的值。规定boolean类只能取值为true或false。
以下写法是错误的,
boolean c = 1; // 错误! 只能是true/false !
boolean d = "yes"; // 错误! 只能是true/false !
实际上,true和false在Java语言里都是特殊的词,称为关键词。
使用int, double, String, boolean这四种类型,就可以表示前面引例中的题目。例如,
String name = "小张";
int age = 18;
double weight = 67.8;
String birthday = "1994-8-3";
boolean sex = true; // true表示男性, false表示女性
boolean类型是我们学习Java的第一道思维门槛,大家在第一天、第二天的时候,应该是对boolean是完全懵掉的;但是第三天以后,就会慢慢习惯它。毕竟人类是智慧生物嘛!
其实我们可以类比一下,
int a = 1;
int b = 0;
boolean c = true;
boolean d = false;
从形式上看,对于int类型来说,它的值是整数,所以可以为1或0。而对boolean来讲,它的值就只能为true或false。
记住:true和false是值!不是字符串!
2.3.3 常见问题
(1) boolean变量能加减乘除吗?
不能。可以类比一下,String类型也不能乘法。
String a= "good";
String b= "bad";
String c = a * b ; //???? 这啥意思,完全没意义嘛!
(2) boolean变量还能赋第三种值吗
不能。boolean类型的值要么为true, 要么为false
(3) boolean值如何打印输出
boolean类型的值打印输出时,显示为true或false
例如:
boolean sex = true;
System.out.println("性别: " + sex );
2.4 其他类型
在 Java语言里,还存在其他的数据类型,但是目前我们并不需要了解。例如,
表示整数的有:byte, short, int , long
表示小数的有:double, float
在本篇教程中,用的最多的就是int, double, String, boolean这4种类型。