JAVA基础(四)--JAVA基本数据类型
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量。
那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里。那么,我们为什么要使用盒子呢?主要用于存放程序运行过程中需要临时存取和操作的数据,打个比方,我们做一顿番茄炒蛋,需要先把番茄洗一洗,然后切好放碗里,鸡蛋打好后要先放另一个碗里,然后加上料酒,加水搅拌,之后再放锅里一顿瞎操作后,一顿美味的番茄炒蛋便出来了,这个过程中,番茄炒蛋相当于我们的结果,番茄跟鸡蛋是我们需要处理的数据,我们先对番茄跟鸡蛋分别进行了处理,而处理的过程中,我们都需要一个容器来存放它们,碗,碟,锅或者杯,这些容器就相当于是变量,显然,如果没有变量,我们很难做出这顿美味来,变量存在的意义便是存放数据,让程序更清晰,让程序便于修改和维护。
变量有四个要素,类型,变量名,值和作用范围。Java是强数据类型语言,每一个变量必须属于一种类型,一个int型数据需要存放在一个int型的变量中,同理,一个double类型的数据需要存放在一个double变量中。对于变量名的设置,也有一些规范,必须以一个字母开头,由字母或数字组成,这里说的字母包括大小写字母或者在某种语言中代表字母的Unicode字符,数字包括'0'~‘9’以及在某种语言中表示数字的Unicode字符和下划线_,以及美元符$(但不要使用),但Java保留字不能使用,此外,像'+','-'等符号是不允许出现在变量名中的,变量名中所有字符都是有意义的,并且大小写敏感,变量名的长度没有限制。为变量取一个有意义的名字是十分必要,当程序代码量增大时,这一点会显得越来越好重要。比如,age, name, sum, classNum等等
变量在使用之前,都需要声明,如:int num; 想要对一个变量赋值,就需要将变量名放在等号左侧,相应的值放在等号的右侧,如:int num; num =10; 也可以在声明变量的同时初始化变量,给变量赋初始值,如:int num = 10;声明可以出现在代码的任何地方,但在使用该变量之前必须先声明该变量。跟C与C++不同的是,在Java中,是不区分声明和定义的。
至于作用范围,便是变量有效范围,出了这个范围,变量便不能使用,这一点具体到后面再结合代码做说明。
给一个小栗子来理解一下变量的用法。
int length = 10;//定义一个整数型变量,变量名为length,并初始化赋值为10 System.out.println(length);//输出这个变量的值 length = 20;//给这个变量赋新值 System.out.println(length);//输出
所以变量的正确使用方式是先定义,然后再使用它,打个比方,把计算机比作一个仓库管理员,内存比作是仓库,当我需要使用碗的时候,我需要先登记一下,然后管理员给了我一个碗,我就可以肆无忌惮的使用它了,这里登记就好比声明。那为什么要声明呢?em....你不说我怎么知道你要的是碗还是碟还是杯子呢,只好给你送上Error大礼包。其次,这里说的杯子碗碟,都是专用的,也就是说,每一种器件,只能装一种特定类型的东西,就像int型变量就只能放int型的数据。
除了变量之外,Java中还有一个叫常量的家伙,用关键字final来指示常量,例如:final double PI = 3.14;常量,顾名思义就是不变的量,一旦被声明后,它的值就不能被改变,也因此必须在声明的时候初始化,常量可以理解为其值不能被改变的变量。常量命名一般情况下全部字母都需要大写,如有多个单词则用下划线连接。既然不能改变,那常量存在的意义是什么呢?用PI代替3.14的意义何在?当然有它的意义,例如计算圆的面积的时候使用3.14*5*5 自然没有 PI*5*5这样看起来清晰。而且还有一个很重要的一点,如果常量的初始化值需要改变,比如一开始设置一个常量叫做 FULL_MARK,一开始你以为满分只有100分,可是程序写完之后,被告知满分是120分,于是你只需要在该常量定义的地方将100改成120,而不需要将代码中的每一个100改成120,不仅增加了可阅读性,也增加了可维护性。
不要忽视代码的可阅读性,代码不仅仅是用来运行的,更多的是用来阅读的,而且读者不仅是你自己,还有可能是其他程序员,如果你写到最后,自己的看不下去了,那绝对算不上一份优秀的代码。
希望大家能把代码当作一个艺术品去完成,去享受那些字母从你指尖敲打而出的快感,这样才能更好的收获程序顺利运行时的快乐。
至此,本篇要介绍的内容就结束了。短小精悍系列。
Java 常量
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
-
1. 不能对boolean类型进行类型转换。
-
2. 不能把对象类型转换成不相关类的对象。
-
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
4. 转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23; (int)-45.89f == -45
实例 public class ZiDongLeiZhuan{ public static void main(String[] args){ char c1='a';//定义一个char类型 int i1 = c1;//char自动类型转换为int System.out.println("char自动类型转换为int后的值等于"+i1); char c2 = 'A';//定义一个char类型 int i2 = c2+1;//char 类型和 int 类型计算 System.out.println("char类型和int计算后的值等于"+i2); } }
运行结果为:
char自动类型转换为int后的值等于97 char类型和int计算后的值等于66
解析:c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2=65+1=66。
强制类型转换
-
1. 条件是转换的数据类型必须是兼容的。
-
2. 格式:(type)value type是要强制类型转换后的数据类型 实例:
实例 public class QiangZhiZhuanHuan{ public static void main(String[] args){ int i1 = 123; byte b = (byte)i1;//强制类型转换为byte System.out.println("int强制类型转换为byte后的值等于"+b); } }
int强制类型转换为byte后的值等于123
隐含强制类型转换
-
1. 整数的默认类型是 int。
-
2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。

浙公网安备 33010602011771号