美文网首页
Java中的变量

Java中的变量

作者: 不小心丢了 | 来源:发表于2019-07-26 16:16 被阅读0次

    Java中的变量

    变量的定义

    在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来表示。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中储存的数据就是变量的值。

    接下来,通过具体的代码来学习变量的定义。

    int x=0,y;

    y=x+3;

    上面的代码中,第一行代码的作用是定义了两个变量x和y,也就相当于分配了两块内存单元,在定义变量的同时为x分配了一个初始值0,而变量y没有分配初始值。

    第二行代码的作用是为变量赋值,在执行第二行代码时,程序首先取出变量x的值,与3相加后,将结果赋值给变量y,此时变量x和y在内存中的状态发生了变化。

    变量的数据类型

    Java是一门强类型的编程语言,它对变量的数据类型有着严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。

    在Java中,变量的数据类型分为两种,即基本数据类型和引用数据类型。Java中所有的数如图所示。

    其中,八种基本数据类型是Java语言内嵌的,在任何操作系统中都具有相同大小和属性,而引用数据类型是在Java程序中由编程人员自己定义的变量类型。

    1)整数类型变量

    整数变量类型用来储存整数数值,即没有小数部分的值。在Java中,为了给大小不同范围内的整数合理地分配储存空间,整数类型分为四种不同的类型:字节型(byte),短整型(short),整形(int),长整型(long)。

    byte占一个字节,short占两个字节,int占四个字节,long占八个字节。

    在为一个long类型的变量赋值时需注意,所赋值后面要加一个字母L(或小写l),说明赋值为long类型。如果所赋的值未超出int型的取值范围,则可以省略字母L(或小写l)。

    2)浮点数类型变量

    浮点数类型变量用来储存小数数值。在Java中浮点数类型分为单精度浮点数(float)和双精度浮点数(double)。double型所表示的浮点数类型比float型更精确。

    在Java中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时需要注意一点,所赋值的后面一定要加上字母F(或者小写f),而为double类型的变量赋值时,可以在所赋值的后面加上字母D(或小写d),也可以不加。

    3)字符类型变量

    字符类型变量用于储存一个单一的字符,在Java中用char表示。Java中,每个char类型的字符变量都会占用2个字节。在给char类型的变量赋值时,需要用一对英文半角格式的单引号' '把字符括起来。也可以将char类型的变量赋值给0~65535范围内的整数,计算机会自动的将这些整数转化为对应的字符,如数值97对应的字符为'a'。下面两行代码可以实现相同的效果。

    char  c='a';

    char  ch='97';

    4)布尔类型变量

    布尔类型变量用来储存布尔值,在Java中用boolean表示,该类型的变量只有两个值,即false和true。


    变量的类型转换

    在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据转换。根据转换方式不同,数据类型转换可分为两种:自动类型转换和强制类型转换。

    自动类型转换

    自动类型转换也叫隐式类型转换,指的是两种数据类型在转换过程中不需要显式地进行声明。要实现自动类型转换,必须同时满足两个条件,第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。例如:

    byte  b=3;

    int  x=b;//程序把byte类型的变量转换成了int类型,无需特殊声明

    上面的语句中,将byte类型的变量b赋值给int类型的变量x,由于int类型的取值范围大于byte类型的取值范围,编译器在赋值过程中不会造成数据丢失,所以编译器能够自动完成这种转换,在编译时不报任何错误。除了上述演示情况外,还有很多类型之间可以进行自动类型转换,接下来列出三种:

    1)整数之间可以实现转换,如byte类型的数据可以赋值给short、int、long、类型的变量,short、char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量。

    2)整数类型可以转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。

    3)其他类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。

    强制类型转换

    强制类型转换也称显式类型转换,指的是两种数据类型之间的转换需要进行显式的声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。

    当将一个int类型的值赋给byte类型的变量时,int类型的取值范围大于byte类型的取值范围,这样的赋值会导致数值溢出,也就是说一个字节的变量无法存储4个字节的整数值。

    在这种情况下需要进行强制类型转换,转换格式如下:

    目标类型  变量名=(目标类型)值;

    需要注意的是,在对变量进行强制类型转换时,会发生取值类型较大的数值类型向取值类型较小的数据类型进行转换,例如将一个int类型的数转换为byte类型,这样做很容易造成数据精度的丢失。

    变量的作用域

    变量需要先定义后使用,但这并不意味着在变量定义之后的语句中一定可以使用该变量。变量需要在它的作用范围内才可以被使用,这个作用范围被称为变量的作用域。在程序中,变量一定会被定义在某一对大括号中,该大括号包含的代码区域便是这变量的作用域。

    相关文章

      网友评论

          本文标题:Java中的变量

          本文链接:https://www.haomeiwen.com/subject/ifekrctx.html