§2-1 数据类型
一、首先要明确的是:
在Java语言中,Java是不支持C语言还有C++语言中的指针、结构体类型以及共用类型的。
在Java语言中,简单(或基本)数据类型分了以下八种:
字节型(byte)、短整型(short)、整型(int)、长整型(long)、字符型(char)、浮点型
(float)、双精度型(double)、布尔型(boolean)
在这些当中,又可以分为四组:
1、整数:该组包括字节型(byte)、短整型(short)、整型(int)、长整型(long)、它们有符
号整数。
2、浮点型数:该组包括浮点型(float)、双精度型(double)、它们代表有小数精度要求的数字。
3、字符:这个组包括字符型(char),它代表字符集的符号,例如字母和数字。
4、布尔型:这个组包括布尔型(boolean),它是一种特殊的类型,表示真(true)/假(false)值
。
各个数据类型在内存中所占用的内存如下表,因为Java语言具有可移植性,所在在内存的占用上面,
各种机型都是一样的:
序号 简单类型 大小/位数 范围/精度
1 float 4 字节/32位 32位IEEE 754单精度
2 double 8 字节/64位 64位IEEE 754双精度
3 byte 1字节/8位 -128到127
4 short 2 字节/16位 -32,768到32,767
5 int 4 字节/32位 -2,147,483,648到2,147,483,647
6 long 8 字节/64位 -9,223,372,036,854,775,808到9,223,372,036, 854,775,807
7 char 2 字节/16位 整个Unicode字符集
8 boolean 1 位 True或者false
§2-2 常量
Java中的常量是用文字串来表示的。比如:
整形:123 实型:1.23 字符型:'a' 布尔型:true,false 字符串:"china"。
并且,在Java中, 不能通过#define命令来把一个标识符定义为常量,而是用关键字“final”来实
现,例如:final double PI=3.14159(具体的final用法见后)。
§2-3 变量
在编程的学习过程中,变量都是一个重要的概念,那么在Java中,变量包含的内容是:变量名、变量
类型和作用域三个部分。
1、变量名:一个合法的变量名应该由字母、数字、下划线或者美元符号“$”来表示;Java对于变量
名的大小写要敏感;变量名不能使用数字来开头;并且和C以及C++一样,不能用保留字(关键字)来命名
。下面列举一些合法的变量名,如:myName、value_1、dollar$……等等都是合法的变量名,再列举一些
不合法的变量名,如:2mail、room#、class……等等这些都是不合法的变量名。我们在命名的时候,最
好是使变量名具有一定的含义,这样可以增加整个程序的可读性。
2、变量类型:变量类型可以是上面任意的一个类型。
3、作用域:变量的作用域是指明可访问该变量的一段代码。我们在声明一个变量的同时,也就指明
了变量的作用域。按照作用域来划分,变量可以划分成以下几种:
(1)局部变量:在方法或方法的一块代码中声明,它的作用域为它所在的代码块(整个方法或方法
中的某块。)
(2)类变量:是在类中声明,而不是在类的某个方法中声明,它的作用域是整个类。
(3)方法参数:传递给方法,它的作用域就是这个方法。
(4)例外处理参数:传递给例外处理代码,它的作用域就是例外处理部分。
在一个确定的域中,变量应该是唯一的。通常,一个域是用“{”和“}”来划定的。
变量的声明格式是:
type identifier[=value][,identifier[=value]...];
例如: int a , b , c ; double d1 , d2 = 0.0 ;
其中,多个变量之间用逗号“,”隔开,d2 = 0.0是对双精度实型变量“d2”赋初值“0.0”。
注意:只有“局部变量”和“类型变量”可以给出这样赋初值的,而“方法参数”和“例外处理参数
”的变量值是由调用者给出的。
§2-4 整型数据
一、整型常量
和C/C++相比,Java的整型常量具有以下三种形式:
1、十进制整数:如:123、-456、0……等等
2、八进制整数:以“0”开头的,如:0123表示十进制数83,-011表示十进制数-9……等等
3、十六进制整数:以“0x”或“0X”开头,如:0x123表示十进制数291,-0X12表示十进制数-18。
对于 int 型的整型常量在机器中占32位,而对于long型的常量在机器中要占用64位,并且在表示
long型的时候,要在后面加上“l”或“L”符号来表示,如:123l、456L……等等。
二、整型变量
整型变量的类型有四种,分别是:byte、short、int、long。
对于以上四种类型,int类型是最常使用的。但对于大型计算,常会遇到很大的整数,超出int类型所
表示的范围,这时,就要使用long型。
由于不同的机器对于多字节数据的存储方式不同,可能是从低字节向高字节存储,也可能是从高字节
向低字节存储,这样,在分析网络协议或文件格式时,为了解决不同机器上的字节存储顺序的问题,就用
byte类型来表示数据是合适的。而通常情况下,由于其表示的数据范围很小,容易造成溢出,应避免使用
。
short类型则很少使用,它限制数据的存储为先高字节,后低字节,这样在某些机器中会出错 。
§2-5 实型(浮点型)数据
一、实型常量
与C/C++相同,Java的实常数有两种表达形式:
1、十进制数形式。有数字和小数点组成,并且必须有小数点,如:0.123、.123、123.、123.0……
等等都可以。
2、科学记数法形式。如:123e4或者123E4,其中,“e”或者“E”前面必须有数,并且后面的指数
必须是整数。
实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后面加上“f”或者“F
”,如:12.3f或45.6F,它在机器中占32位,表示的精度较底。
§2-6 字符型数据
一、字符型常量
字符型常量是用单引号('')括起来的一个字符,如:'a'、'B'……等等。另外,Java也提供一些转
义字符,以反斜杠“/”开头,各种转义字符的意思如下:
/ddd 1到3位8进制数据所表示的字符(ddd)
/uxxxx 1到4位16进制数所表示的字符(xxxx)
/' 单引号字符 // 反斜杠字符
/r 回车 /n 换行
/f 走纸换页 /t 横向跳格
/b 退格
但还是要注意:与C/C++不同,Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅
仅是ASCII集,例如:/u0061表示ISO拉丁码的‘a’。
二、字符型变量
和C/C++不一样,Java中的字符型数据不能作为整数来用,因为Java不提供无符号整数类型。但是,
同样可以当作整数来操作,如下例子:
int three = 3 ;
char one = '1' ;
char four = ( char ) ( three + one ) ;
在上例中,在计算加法时,字符型变量one被转化成整数进行相加,最后把结果又转化成字符型。
三、字符串常量
与C/C++不同,Java的字符串常量是作为String类的一个对象来处理的,而不是一个数据。
与C/C++相同,Java的字符串常量也是用“""”括起来的一组字符。
§2-7 布尔型数据
布尔型数据只有两个值,true(真)和false(假),且它们不对应于任何整值。在流控制中常用到
它。
现在,请看下面的这个例子,用到了前面讲的全部数据类型,并且通过显示器显示它们:
public class SimpleTypes
{
public static void main( String args[] )
{
byte b=0x55;
short s=0x55ff;
int i=1000000;
long l=0xfffL;
char c='c';
float f=0.23F;
double d=0.7E-3;
boolean bool=true;
System.out.println("b = "+b);
System.out.println("s = "+s);
System.out.println("i = "+i);
System.out.println("l = "+l);
System.out.println("c = "+c);
System.out.println("f = "+f);
System.out.println("d = "+d);
System.out.println("bool = "+bool);
}
}
|
|