基本数据类型变量的存储
前面介绍过数据类型分为基本数据类型和引用数据类型,因此呢Java的变量也可以有基本类型的变量和引用类型的变量。引用类型可以是数组也可以是类。如果用类去定义的变量又叫做对象。
除了按照类型来分类变量以外,还可以按照作用范围来分类,可以分为四个级别:1.类级别 2.对象实例级 3. 方法级 4. 块级。 这里呢先主要介绍一下我们方法级的变量。
方法级变量又叫做局部变量,我们之前所介绍的变量都是定义在主方法中,所以我们之前所学的变量都是局部变量。 我们当前在主方法中定义的变量都存放在我们的栈中( 其实我们的Java又对内存空间进行了细分,例如:栈,堆,常量池等等,这里我们先不用去学习,只要简单了解即可,我们只要知道他是内存划分出来的区域。)
例如 int n = 100;前面讲过这是定义一个整型变量n,在定义的同时进行初始化。那么这条语句在内存中是如何存储的呢?首先在执行语句的同时会在栈中开辟int类型大小的空间,前面介绍过int类型是占用4个字节也就是32个二进制位的。空间开辟好了之后我们就讲100这个值存放在空间中,这里我们的变量名 n可以看做是100这个空间的别名,在今后的运算中直接用n去参与运算,它代表的就是100.
字符型字面值
字符型字面值用单引号内的单个字符表示,例如:'a', 'b', 'c' , '$'(注意 单引号不可以丢,而且必须是英文状态下的单引号,且单引号里必须只有一个字符)。定义字符型的变量和前面的整型和浮点型是一样的。 char a = 'x';
那么看下面一个例子: char ch = 65;它也是合法的,但是却没有输出65,而是输出了字符A。
这里呢就用到了我们的ASCII码(American Standard Code for Information Interchange,美国标准信息交换代码),它是一个约定,没有这些约定会造成互相通信的混乱,在计算机中是用二进制来表示数据的,那么我传递过去一个1011想表达字符H,而你接収到时你却认为他是O,所以这个ASCII码的作用就很重要了。ASCII主要用于显示现代英语和其他西欧语言,这里是没有中文的,支持中的编码方式Unicode编码(又称为统一码、万国码)如果有兴趣可以自行了解。
ACSII码是用7位或8位二进制数组合来表示128或256种可能的字符,7位二进制数组合是我们的标准ASCII码,8位二进制数组合(后128位)则是扩张ASCII码。标准ASCII码一般用来表示大小写字母、标点符号、美式英语中的控制字符等。扩展字符(后128位)用来表示特殊符号,外来语言字母等。
这里可以看到65所对应的值正是A,这里我们可以得到一个结论,整型个字符型是可以互换的,他的参照依据就是我们的ASCII码表。
之前讲到过Char类型是占两个字节,16位二进制表示的,他所表示的是 0 -65535,那么要记住如果数据超过6555就会保错,这时就需要强制类型转换,但是强制类型转换会引起数据的丢失。具体的强制类型转换我会在以后为大家介绍。