明解java-柴田望洋-2-1使用变量
柴田先是通过一个加法表达式来说明一种情况,如果想要求其他数值的运算怎么办?他说,表达式里面的数值想要改变,有两种方法,一种是new class,一种是使用变量。为什么使用变量能够改变数值呢?
柴田说,变量就是一个盒子,数值能够放进去,能够取出来。在理解变量之前需要先讲解数值和字符串之间的不同。变量和数据类型有关,数据类型有多种,整数、实数、字符串等。柴田没有详细讲解,因为这是第三章的内容。
这里需要知道,在.println()的括号里,如果是("89"),这是一个字符串;如果是(89),这是一个数值。虽然输入的都是89,但原理可不一样。(89)是需要先转换成("89")之后才能输出的。这个转化过程我们是看不见的,在JVM内部执行。下面以加减运算的表达式为例。
代码1
.println(57+32);
.println("57+32="+(57+32));
这两行代码不用之处,第一行是一个数值运算,括号里面是数值。输出89。第二行是字符串加数值,输出的:57+32=89。两行代码都不是直接输出的,而是先执行数据类型转换,具体如下:
.println(57+32);
↓
.println(89);
↓
.println("89");
和
.println("57+32="+(57+32));
↓
.println("57+32="+89);
↓
.println("57+32="+"89");
柴田说,字符串与数拼接,数值先转化为字符串。因为.println输出的是字符串。后面学变量后,会有.println(x)同样要转换为字符串才能输出的。还应该注意到括号的问题。("57+32="+(57+32))和("57+32="+57+32)输出的结果是不同的。前者输出的是57+32=89,后者输出的是57+32=5732,并没有执行加法运算。如图1所示。
如果没有括号,java规定字符串和数值之间的+为连接符,不进行运算。
柴田说,如果是减法运算呢?
.println("57+32="+57-32);
程序会报错,前面为字符串,后面为减法运算,java没有字符串减数值的规定。按照上文的解释,代码是按照如下方式执行的。
.println("57+32="+57-32);
↓
.println("57+32="+"57"-32);
↓
.println("57+32=57"-32);
程序终止,java没有字符串减数值的运算。如图2所示
柴田想要更改这个表达式,在不改变代码的情况下,更换其他的数值。引入了变量的概念。变量是存取数值的盒子。数值可以存进去也可以取出来,只要变量这个盒子一直都在。
使用变量,先要声明变量,意思是在此处放入变量盒子,并给盒子取名、赋值。声明的语句称之为声明语句。int x;就是声明语句,意思是声明一个名为X的int类型的变量。int是整数型数据类型,X是变量的名称。下一步要给变量赋值。如代码2。
代码2
{int x;
x = 63;
.println(x)}
第一行,int x ;意思是声明一个int变量,名字为x。第二行代码,将等号右边的63赋值给变量x,第三行代码是输出x里面的数值。代码执行过程如下
int x;
x = 63;
.println(x)
↓
.println(63);
↓
.println("63");
从变量x里面取出数值63,然后再将数值转换为字符串,最后输出。
柴田说,.println("x")和.println(x)完全不一样,前者是输出字符串X(这里是一个字符),后者是将变量X中的数值取出来,然后将数值转化为字符串再输出。如图3所示。
柴田说,如果是声明了变量,没有赋值,程序会报错。变量必须进行初始化。但是赋值并不等于初始化赋值。初始化赋值是在声明变量时的赋值,是必须进行的。赋值可以在初始化赋值后改变变量里面的值。如图4,第二次赋值取代了变量x的初始值。
总结,柴田在这节课讲了如下知识点:
- 初始化赋值不等于赋值。
- 变量没有初始化赋值不能运行。
- 变量的声明三要素,类型、名称、初始值。
- 数值要转化为字符串才能输出。
- 字符串无法减数值。
- 字符串与数值运算表达式拼接时,运算表达式要加括号。