变量的概念

在java中的变量有两种类型:primitive主数据类型和引用变量。Java是注重类型的语言。变量必须拥有类型,而且必须拥有名字 变量名 。
Primitive主数据类型:
类型 位数 值域
数值Integer(带正负号)
Byte        8bits(位)     -128~127
Short        16bits -32768~32767
Int 32bits         -2147483648~2147483649
Long 64bits -很大~很大
Boolean和char
Boolean (java虚拟机决定) true或false

Char 16bits    0~65535
浮点型
Float 32bits 范围规模可变
Double 64bits 范围规模可变
定义float类型是值的后面要加上f,如果不加的话会被java当做double类型数据处理。
定义变量的名称也有一些规定:
变量名称必须以字母,下划线(_),或$开头不能用数字开头,除了第一个字母外后面可以用数字,而且要避开java的关键字命名。
java中通常用“=”符号赋值,将“=”后面的数值赋给前面的变量,
java是一个强类型语言,你无法将int的数据装进byte型里,像这样
int a=23;byte b=a;这是不被允许的,在编译时虚拟机就会报错,就算你知道在byte中能放得下24这个值。

引用变量:引用变量是用来引用堆上的对象的,它并不存储对象,只是对象的引用,对象时存储在堆上的,而引用变量是在栈上面,一个对象可以有多个引用,同一时间一个引用只能引用一个对象。
说完上面的两中变量,我们来说一下数组变量。
数组变量是一个数组对象的引用,所以说数组变量说到底还是引用变量。
在创建新的数组时,例如:int[] nums=new int[3];
首先是创建名为nums的数组引用变量,然后在堆上创建大小为3数值类型为int的数组,最后将对象指向引用变量。需要注意的是虽然数组是在堆上的对象,但它的元素却可以被定义成primitive主数据类型和对象类型(首先你要定义数组所存元素的类型)  例如:
Object[] obj = new Object[5];//存储的就是对象引用变量类型,因为Object为所有类的父类,运用到了多态。 String[] num=new String[3];//存储的是字符串类型。
还有很多类型,就不一一列举了。
需要注意的是数组元素在定义之后,数组中的元素会有默认的值,primitive类型的short,byte,int和lang为0,double和float为0.0,char为空格符号boolean为false,对象引用用则为null

变量的比较

对于primitive主数据类型来说,使用“==”可以用来进行两个变量的比较,相等返回true,不等则返回false。
而对于引用变量来说使用“==”符号比较的是引用变量的值而不是所引用的对象是否相同,
使用“==”比较两个引用变量返回true则代表两个引用变量内的值相等,即两个引用变量引用的是同一个对象;在所有类的父类Object里面定义了一个equals方法,Object的equals方法仅仅被定义为通过“==”来返回boolea值,所以在javaAPI中有很多类都覆盖了Object的equals方法,具体的方法逻辑要在具体的类中去实现,也就是说重写equals方法的类的该方法的代码都不大一样。不过总的来说,“==”返回true的意味着引用变量的字节组合相等,说明这两个引用变量是引用的同一个对象,相同组合如果用equals来比较当然也是相同的,就算是被覆盖过的equals方法也是会返回true的。

猜你喜欢

转载自201610222643.iteye.com/blog/2333446
今日推荐