Java中的变量

目录

 1.1Java中的变量

1.1.1变量的定义

1.1.2变量的数据类型

1.整数类型变量

2.浮点类型变量

3.字符类型变量

4.布尔类型变量

1.1.3变量的类型转换

1.自动类型转换

2.强制类型转换


 1.1Java中的变量

1.1.1变量的定义

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

下面通过具体的代码学习变量的定义。

int x = 0,y;
y=x+3;

上面的代码中,第一行代码定义了两个变量x和y,也相当于分配了两块内存单元,在定义变量的同时为变量x分配了一个初始值0,而变量y没有分配初始值,变量x和变量y在内存中的状态 如图2-2所示。

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

数据处理是程序的基本功能,变量是程序中数据的载体,因此变量在程序中占有重要地位。读者应该理解程序中变量的意义与功能,后续的学习中将会引导读者学习如何定义、使用不同类型的变量,以及如何在程序中对变量进行运算。 

1.1.2变量的数据类型

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

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

图2-4中的8种基本数据类型是Java语言内嵌的,在任何操作系统都具有相同的大小和属性,而引用数据类型是在Java程序中由程序员自己定义的类型。此处重点介绍的是Java中的基本数据类型,引用数据类型会在后续章节进行详细讲解。 

1.整数类型变量

整数类型变量用来存储整数数值,即没有小数部分的值。在Java中,为了给不同大小范围内的整数合理地分配存储空间,整数类型分为4中不同的类型,分别是字节型(byte)、短整型(short)、整形(int)和长整形(long),4中类型变量所占存储空间的大小及取值范围如表2-1所示。

 在表2-1中,占用空间是指不同类型的变量占用的内存大小,例如,一个int类型的变量会占用4个字节大小的内存空间;取值范围是指变量存储的值不能超出的范围,例如,一个byte类型的变量存储的值必须是-2^7~2^7-1之间的整数。

需要注意的是,在为一个long类型的变量赋值时,所赋值的后面要加上字母L(或小写字母1)。具体示例如下:

long num =2200000000L;    //所赋的值超出了int类型的取值范围,后面必须加上字母L
long num =198L;           //所赋的值未超出int类型的取值范围,后面可以加上字母L
long num =198;            //所赋的值未超出int类型的取值范围,后面可以省略字母L

2.浮点类型变量

浮点类型变量用于存储小数数值。double类型所表示的浮点数比float类型更精确,两种浮点类型变量所占存储空间的大小及取值范围如表2-2所示

在表2-2中,取值范围中的E(也可写为小写字母e)表示以10为底的指数,E后面的“+”和“-”代表正指数和负指数。

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

float f = 123.4f;    //为一个float类型的变量赋值,后面必须加上字母f
double d1 =100.1;    //为一个double类型的变量赋值,后面可以省略字母d
double d2 =199.3d;   //为一个double类型的变量赋值,后面可以加上字母d

在程序中也可以为一个浮点数类型变量赋予一个整数数值。例如,下面的写法也是可以的。

float f =100;  //声明一个float类型的变量并赋整数值
double d =100; //声明一个double类型的变量并赋整数值

3.字符类型变量

在Java中,字符类型变量用char表示,用于存储一字符。Java中每个char类型的字符变量都会占用2个字节。在给char类型的变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来,如'a'。

在计算机的世界里,所有文字、数值都只是一连串的0与1,这些0与1是机器语言,人类难以理解,于是就产生了各种方式的编码,使用一个数值代表某个字符,如常用的字符编码系统ASCII。

虽然各类编码系统加起来有数百种之多,却没有一种包含足够多的字符、标点符号和常用的专业技术符号。这些编码系统之间可能还会相互冲突。也就是说,不同的编码系统可能会使用相同的数值标识不同的字符,这样在数据跨平台时就会发生错误。Unicode就是为了避免上述情况而产生的,它为每个字符制定了一个唯一的数值,因此,在任何语言、平台、程序中都可以安心地使用。Java使用的就是Unicode字符吗系统,Unicode中的小写字母a是用97表示的,在计算时,计算机会自动将字符转换为所对应的数值。

定义字符型变量的具体示例如下:

char c='a';      //为一个char类型的变量赋值字符a
char ch =97;     //为一个char类型的变量赋值整数97,相当于赋值字符a

4.布尔类型变量

在Java中,使用boolean定义布尔类型变量,布尔类型变量只有true和false两个值。定义布尔类型变量的具体示例如下:

boolean flag = false;    //定义一个boolean类型的比那里flag,初始值为false
flag =true;              //改变变量flag的值为true

1.1.3变量的类型转换

在程序中,经常需要对不同类型的数据进行运算,为了解决类型不一致的问题,需要对数据的类型进行转换。例如,一个浮点数和一个整数相加,必须先将两个数转换成同一类型。根据转换方式的不同,数据类型转换可分为自动类型转换和强制类型转换两种,下面分别进行讲解。

1.自动类型转换

自动类型转换也称为隐式类型转换,是指两种数据类型在转换的过程中不需要显式声明,由编译器自动完成。自动类型转换必须同时满足两个条件:一是两种数据类型彼此兼容;二是目标类型的取值范围大于源类型的取值范围。例如,下面的代码:

byte b =3;
int x =b;

上面的代码中,使用byte类型的变量b为int类型的变量x赋值,由于int类型的取值范围大于byte类型的取值范围,编译器在赋值过程中不会丢失数据,所以编译器能够自动完成这种转换,在编译时不报告任何错误。

除了上述示例中演示的情况,还有很多类型之间可以进行自动类型转换。下面列出3种可以进行自动类型转换的情况,具体如下。

(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类型的变量。 

2.强制类型转换

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值