您的位置:首页 > 编程语言 > Java开发

温习Java笔记(2):理解java语言的数据类型

2007-06-13 16:53 405 查看
这是个基础中的基础,我们按以下条目一条条的理解:

1.计算机中数据是采用二进制来表示的。对于一个给定的字节0100011,它可以表示什么数据呢?如果是ASCII编码,该字节表示大写字母C,如果是无符号整数,则这一个字节表示正整数67,由此可见,计算机中对一个二进制串真正表示什么数据,依赖于对这个二进制串作如何解释,而程序中的数据类型决定了如何将二进制串解释为数据。

2.类型决定了数据在计算机内部的表示方式,而语言的编译器则根据数据所属于的类型分配相应的存储空间并对这个二进制字符串进行解释,从而生成效率更高的目标代码。
例如:
有符号整数类型的数据占用4个字节
双精度浮点数类型数据占用8个字节

3.确定了一个数据的类型后,对该数据允许执行的操作也确定下来。例如:两个整数可进行加减乘除、整除、取模等运算,两个字符串可进行比较、连接、判断字串等操作。

4.Java、C++、Pascal都为强类型语言。java分为基本数据类型和复合数据类型,基本数据类型主要有字符、整数、浮点数、双精度浮点数、布尔值、字符串、空值等,复合数据类型主要有类、接口、数组等。注意,java语言大小写敏感。

5.空格、制表符、回车、换行、注释统称为空白,对编译器而言,空白的唯一作用是分隔单词,一个空格与连续三个空格或一个换行的作用相同。

6.变量4要素:名字、类型、地址、值。程序通过变量名访问变量值;变量类型由程序员显式声明,编译器根据变量类型解释变量地址所指存储空间中的二进制串;一个变量与内存中某一个区域相关联,变量地址即指该区域的位置;该区域存放的数据即为变量的值,这一内存区域在程序运行的不同时刻可能存放不同的值。

7.Java语言的类型转换规则:当赋值运算的左右操作数类型不一致时,右操作数首先转换为左操作数的类型,然后将转换结果赋值给左操作数。这一规则只允许左操作数类型的取值范围大于右操作数的取值范围,例如int类型的表达式赋值给一个float类型的变量。如果左操作数类型的取值范围小于右操作数的类型,例如将一个double类型的表达式赋值给一个int类型或者float类型的变量,则类型转换过程可能丢失部分信息,所以编译器会报告源程序有错并拒绝生成目标代码。如果确实需要用到这样的赋值运算,则必须使用显式的类型转换。
计算工龄工资的表达式为:age*1.5,该表达式中二元运算符的两个操作数类型不一致,左边是int类型,右边是double型。编译器会将age转换为double型,然后再求两个double型数据的乘法,表达式求值结果也为double型。

8.程序中显式的控制类型转换,则转换规则不必遵照前述规定,这种类型转换过程称为强制类型转换。强制类型转换的形式是在表达式前面加上圆括号括住的类型名字。
例如求矩形面积,2个int类型变量length和area分别表示长和面积,求矩形宽。计算公式可以是System.out.println(area/length);假设area=20,length=8由于这两个变量是int类型,故除法运算均不会产生隐式类型转换,则结果是2,而不是预期的2.5。下面两方法可达到目的:
System.out.println((double)area/length);
System.out.println(area/(double)length);

9.试指出以下程序中的编译错误并指出改正方法:


public class Ex0207




...{


public static void main (String[] args)




...{


int scale = 0484;


float size = scale * 1.5 ;


System.out.print("Size is" + size);


}


}


解决方法看第7点。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: