java中的变量 


变量或变数,是指没有固定的值,可以改变的数。变量以非数字的符号来表达,一般用拉丁字母。变量是常量的相反,变量的用处在于能一般化描述指令的方式。

从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每个变量使用前必须先要声明,然后必须填充内容,最后才能使用。


变量的分类 

(1)按所属的数据类型划分:基本数据类型变量引用数据类型变量

(2)按声明的位置划分:局部变量全局变量(成员变量)

局部变量:方法或语句块内部定义的变量;

全局变量(成员变量):方法外部,类的内部定义的变量


wKioL1gQSZHjDLilAACr1ke6Dr8255.png


在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。说白了,基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是这个抽屉的钥匙,钥匙和抽屉一一对应。


变量的声明  

在 Java 中,我们通过三个元素描述变量:变量类型变量名以及变量值

形式如下: 

变量类型 变量名=变量值


变量的使用规则 

1、Java 中的变量需要先声明后使用;

2、变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值;

3、变量中每次只能赋一个值,但可以修改多次;

4、main 方法中定义的变量必须先赋值,然后才能输出;

5、虽然语法中没有提示错误,但在实际开发中,变量名不建议使用中文,容易产生安全隐患,譬如后期跨平台操作时出现乱码等等;



基本数据类型变量:

wKioL1gQSonz3TP1AAGGt_pLXdw942.png


基本数据类型变量介绍:

1、整数类型变量(没有小数部分):

字节型(byte):byte b=3;

短整型(short): short c=23;

整型(int): int i=223;

长整型(long): long l=222222L;long l=222;

给long类型的变量赋值时要注意,如果赋值未超过int型的取值范围,则不用加L,省略,

若赋值超过,则需在值末尾加上L字母,表示其为long类型变量。不加L,默认其数据类型为int。


2、浮点数类型变量(有小数)

单精度浮点数(float):float f=2.48f;

双精度浮点数(double):

double d1=100.1;double d2=199.3d;

Java程序中,如果float类型数据赋值后不加f,会被默认为double类型的数据,而为double类型数据赋值时,可加可不加D;

另外,程序中也可以为浮点型类型变量赋予一个整数数值,如下:

float f=100;

double d=100;


3、字符类型变量

字符(char):char c='a';char ch=97;


字符类型变量用于存储一个单一字符,每个char类型的字符变量都会占用2个字节。在赋值时,需要单引号把字符括起来;也可赋值为整数,计算机会自动将这些整数转化为所对应的字符。

任何超过一个字体的内容都不能声明为字符型。


上例中,数值97对应字符a。


注意:String 是一种常见的引用数据类型,用来表示字符串。在程序开发中,很多操作都要使用字符串来完成,例如系统中的用户名、密码、电子邮箱等。


4、布尔类型变量(boolean)


布尔类型变量用来存储布尔值,该类型只有两个值,true和false;如下:


boolean b=false;//声明一个boolean类型的变量,初始值为false


b=true;//改变b的值为true


变量的类型转换:

基本数据类型的转换 

在Java中类型由低到高的顺序为:byte、short、char、int、long、float、double。

1、自动转换:当由低到高时可以自动转换。

byte b;int i=b;long l=b;float f=b;double d=b;那么这些都可以自动转换,是合法的,但byte、short、char是平级的不能自动转换,必须使用强制转换。

自动转换 

整型、实型、字符型数据可以混合运算。

运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级(表示范围从小到大):

低------------------------------------------------------------>高

byte —> short / char—> int —> long—> float —> double

2、强制转换:由高级到低级时,必须使用强制转换。

int i=99;byte b=(byte) i;char c=(char) i;


强制类型转换必须满足如下规则

1.不能对boolean类型进行类型转换(C可以)。

2.不能把对象类型转换成不相关类的对象。

3.在把容量大的类型转换为容量小的类型时,必须使用强制类型转换。

4. 转换过程中可能导致溢出或损失精度,如:

   int i = 128;      byte b=(byte)i;

 (byte)255 == -1    (byte)0x5634 == 0x34

 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

 (int)23.7 == 23     (int)-45.89f == -45