大表示范围为:-231~231-1,即-2147483648 ~2147483647,大约正负21个亿多些。 2.2.2. 整数直接量是int类型
所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。 copytextpop-up
int a = 100; int a = 100;
关于整数直接量,需要注意如下要点:
整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,将会出现编译错误,下面的语句,就是因为超出了整数的范围而导致的编译错误。 copytextpop-up
int d = 10000000000; // 编译错误10000000000这个数值写出来就是错误的,因为Java认为所有直接写出的整数都是int类型,而这个数值超过了int的表达范围。
int d = 10000000000; // 编译错误10000000000这个数值写出来就是错误的,因为Java认为所有直接写出的整数都是int类型,而这个数值超过了int的表达范围。
除了通常的十进制数字形式,整数直接量也可以写成16进制的形式(以0X或0x开头)或8进制的形式(以0开头),请看如下直接量三种表现形式: copytextpop-up
int a = 100000; // 10进制 int b = 0x186a0; // 16进制 int c = 0303240; // 8进制 int a = 100000; // 10进制 int b = 0x186a0; // 16进制 int c = 0303240; // 8进制
2.2.3. 整型数据除法运算中的取整
若对两个整数相除,会舍弃小数的部分(注意:不是四舍五入),结果也是整数。示例代码如下所示: copytextpop-up int c = 5/3;
System.out.println(c); // c的值为1,取整 int total = 87; int error = 23;
int percent = error / total * 100;
System.out.println(percent+\ //结果为0%,23除以87整数部分为0,乘以100,为0
percent = 100 * error / total;
System.out.println(percent + \ // 结果为26%,230除以87整数部分为26 int c = 5/3;
System.out.println(c); // c的值为1,取整 int total = 87; int error = 23;
int percent = error / total * 100;
System.out.println(percent+\ //结果为0%,23除以87整数部分为0,乘以100,为0
percent = 100 * error / total;
System.out.println(percent + \ // 结果为26%,230除以87整数部分为26 2.2.4. 运算时要防止溢出的发生
当两个整数进行运算时, 其结果可能会超过整数的范围而发生溢出,正数过大而产生的溢出,结果为负数;负数过大而产生的溢出,结果为正数。示例代码如下所示: copytextpop-up
int a = 2147483647; //int类型整数的上限 int b = -2147483648; //int类型整数的下限 a = a + 1; b = b - 1;
System.out.println(\ //输出结果: a=-2147483648 溢出,结果错误。 System.out.println(\ //输出结果: b=2147483647溢出,结果错误。 int a = 2147483647; //int类型整数的上限 int b = -2147483648; //int类型整数的下限 a = a + 1; b = b - 1;
System.out.println(\ //输出结果: a=-2147483648 溢出,结果错误。 System.out.println(\ //输出结果: b=2147483647溢出,结果错误。
2.3. long类型 2.3.1. long类型
在表示整数时,如果int类型的范围不够,可以使用long类型,一个long型的变量占用8个字节(即64位),最大表示范围为:-263 ~ 263-1,即 -9223372036854775808 ~ 9223372036854775807。
如果要表示long直接量,需要以 L 或 l 结尾。示例代码如下: copytextpop-up
long a = 10000000000; //会有编译错误,因为10000000000编译器认为是int类型,而这个值,已经超出了int的范围 long b = 10000000000l; //正确
long a = 10000000000; //会有编译错误,因为10000000000编译器认为是int类型,而这个值,已经超出了int的范围 long b = 10000000000l; //正确
2.3.2. 使用long类型进行较大整数的运算 对于较大的整数运算(超过int的表达范围),可以使用long型。示例代码如下: copytextpop-up
long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;
//必须有一个long型数据参与的运算结果才是long型
System.out.println(\结果正确
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;
System.out.println(\ //distance2=-1973211136 溢出,=号后面的数据默认为int类型,超出了范围,发生溢出。
long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l; //必须有一个long型数据参与的运算结果才是long型
System.out.println(\结果正确
long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;
System.out.println(\ //distance2=-1973211136 溢出,=号后面的数据默认为int类型,超出了范围,发生溢出。 2.3.3. 通过时间毫秒数来存储日期和时间
JDK提供 System.currentTimeMillis() 方法,返回1970年1月1日零点到此时此刻所经历的毫秒数,数据太大,故其数据类型为long。示例代码如下: copytextpop-up
long time = System.currentTimeMillis();
System.out.println(time); //输出的结果为: 1383835712828 long time = System.currentTimeMillis();
System.out.println(time); //输出的结果为: 1383835712828
通过上面的代码可以看出,输出的结果已经超出int类型的最大值,因此,JDK设计的返回类型为long型,该方法常常被用于计时操作。 2.4. double类型
2.4.1. 使用double进行浮点数的运算
前面所学习的int、long都是用于存储整数的,小数即为浮点数,包括: float(单精度)和double(双精度),double类型的精度值是float类型的两倍,因此而得名双精精,在实际的应用开发中,float应用极少,大多数场合使用double表示浮点数。示例代码如下: copytextpop-up double pi = 3.14; double r = 8;
double s = pi * r * r;
System.out.println(\ // 输出的结果为:s=200.96 double pi = 3.14; double r = 8;
double s = pi * r * r;
System.out.println(\ // 输出的结果为:s=200.96 2.4.2. 浮点数直接量是double类型
浮点数的直接量有两种写法:1)通常写法,如:3.14、314、0.1、.5。 2)科学计数法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。
默认的浮点直接量为double型,如果需要表示float类型的直接量,需要加“f”或“F”后缀。例如: copytextpop-up
float f1 = 3.14 //编译错误,应该写成3.14f float f1 = 3.14 //编译错误,应该写成3.14f 2.4.3. double运算时会出现舍入误差
2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样,
所以,2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。示例代码如下所示: copytextpop-up
double money = 3.0; double price = 2.9;
System.out.println(money - price); //输出的结果是: 0.10000000000000009
double money = 3.0; double price = 2.9;
System.out.println(money - price); //输出的结果是: 0.10000000000000009
如果需要精确的运算可以考虑放弃使用double或float而采用BigDecimal 类来实现。关于这一点,将在后续的章节中介绍。 2.5. char类型 2.5.1. char类型
字符类型char事实上是一个16位无符号整数(都是正数),这个值是对应字符的编码,Java字符类型采用Unicode字符集编码(通用码、统一码、万国码),而Unicode是世界通用的定长字符集,所有的字符都是16位来表示。例如:字符a实际的值为97,字符A实际的值为65,字符0实际的值为48。 字符直接量可以采用诸如:‘中’的形式,也可以采用16进制的表示形式,例如: ‘\中’,代码如下所示: copytextpop-up
char c1 = ‘中’; //c1中存的是”中”的编码
char c2 = '\中'; //‘4e2d’为‘中’所对应的16位Unicode编码的16进制表示形式 System.out.println(c1); System.out.println(c2);
char c1 = ‘中’; //c1中存的是”中”的编码
char c2 = '\中'; //‘4e2d’为‘中’所对应的16位Unicode编码的16进制表示形式 System.out.println(c1); System.out.println(c2);
如上代码的输出结果:c1的值为中,c2值也为中,但c1和c2内部存储的其实是”中”这个字符所对应的Unicode码,即:一个无符号的整数。 2.5.2. 对char型变量赋值
在对char型变量赋值时,可以采用如下三种方式: 方式一:
字符直接量:形如‘A’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。示例如下: copytextpop-up char c1 = 'A'; char c1 = 'A';
方式二:
整型直接量:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。示例如下: copytextpop-up char c2 = 65; char c2 = 65;
Unicode形式:形如‘\A’,Unicode字符的16进制形式。示例如下: copytextpop-up char c3 = '\A'; char c3 = '\A'; 2.5.3. 使用转义字符
字符直接量需要包含在一对’’单引号之中,那如果想表示单引号’的字符时,需要怎么表
示?想表示回车、换行符时,怎么表示?
因为单引号为特殊意义的字符, 那么,对于不方便输出的字符可以采用转义字符来表示,示例代码如下: copytextpop-up char c = '\\\\';
System.out.println(c); //输出的结果为:\\ char c = '\\\\';
System.out.println(c); //输出的结果为:\\ 常用转义字符如下图 – 2所示:
图- 2
2.6. boolean类型
2.6.1. 使用boolean变量进行关系运算
boolean类型适用于关系、逻辑运算, 表示某个条件是否成立, 只允许取值true或false,true表示条件成立, 而false表示条件不成立。
boolean型变量经常用于存储关系运算的结果,所谓关系运算就是比较两个变量的大小相等等关系(此知识点,后续详细介绍)。boolean示例代码如下所示: copytextpop-up int age = 18;
boolean isChild = age<16;
System.out.println(isChild); // isChild的值为false boolean running = true; boolean closed = false; int age = 18;
boolean isChild = age<16;
System.out.println(isChild); // isChild的值为false boolean running = true; boolean closed = false;
2.7. 基本类型间转换 2.7.1. 类型间转换
不同的基本类型直接可以相互转化,主要有两种方式: 自动类型转化(隐式类型转换):从小类型到大类型可以自动完成。类型的大小关系如下图 - 3所示:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java入门学习1(2)在线全文阅读。
相关推荐: