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。



posted @ 2018-07-20 11:28  白云是世界的公民  阅读(112)  评论(0)    收藏  举报