购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 高级应用练习实例

本章主要讨论了Java语言的基本数据处理,包括变量与常数、各种数据类型、类型转换和运算符等。另外,如果可以灵活使用各种数据类型,再搭配简易的输出指令和运算符,就可以编写出许多实用的程序。

2.6.1 多重逻辑运算符的应用

我们知道逻辑运算符运用于条件判断表达式来控制程序执行的流程,而一个条件判断表达式中可以使用多个逻辑运算符。不过,当连续使用逻辑运算符时,它的计算顺序为从左到右进行。以下程序中声明了a、b和c三个整数变量,并赋予了初值,请判断以下两个表达式结果的真假值(布尔类型的结果,true或者false):


a<b && b<c || c<a
!(a<b) && b<c || c<a

【综合练习】多重逻辑运算符的应用与范例


01    // 多重逻辑运算符的应用与范例
02    public class WORK02_01 {
03        public static void main (String args[] ) {
04            int a=7,b=8,c=9; /*声明a、b和c三个整数变量,并赋初值*/
05            System.out.println("a<b && b<c || c<a = "+(a<b && b<c || c<a));
06            /* 先计算“a<b && b<c”,再将结果与“c<a”进行OR的运算 */
07            System.out.println("!(a<b) && b<c || c<a = "+(!(a<b) && b<c || c<a));
08        }
09    }

【程序的执行结果】

程序的执行结果可参考图2-18。

图2-18

2.6.2 位逻辑运算符的运算练习

请大家运用位逻辑运算符对两个整数12与7进行位与位之间的AND、OR、XOR位逻辑运算,并显示出运算结果。

【综合练习】位逻辑运算符的应用与范例


01    // 位逻辑运算符的应用与范例
02    public class WORK02_02 {
03    public static void main (String args[]) {
04    int bit_test=12;/* 声明整数变量并赋初值 (00001100) */
05        int bit_test1=7;/* 声明整数变量并赋初值 (00000111)*/
06        System.out.println("bit_test="+bit_test+"  bit_test1= "+bit_test1);
07    System.out.println("-----------------------------------------");
08    /* 执行 AND、OR、XOR 位逻辑运算 */
09    System.out.println("执行 AND 运算的结果:"+(bit_test & bit_test1));
10    System.out.println("执行 OR  运算的结果:"+(bit_test | bit_test1));
11    System.out.println("执行 XOR 运算的结果:"+(bit_test ^ bit_test1));
12      }
13    }

【程序的执行结果】

程序的执行结果可参考图2-19。

图2-19

2.6.3 自动类型转换与强制类型转换的比较

我们知道强制类型转换可以用来弥补自动类型转换无法处理的情况。例如下面的情况:


      int i=100, j=3;
float Result;
      Result= i /j;

这时自动类型转换会将i/j的结果(整数值33)转换成float类型,再赋值给Result变量,得到33.000000,而i/j小数点后面的部分完全被舍弃了,因此无法得到精确的结果值。如果我们要获取小数部分的数值,请试着在上述程序代码中增加强制类型转换的功能。

除了由编译器自行转换的自动类型转换之外,Java语言还允许用户强制转换数据类型。例如,如果想让两个整数相除得到更精确的结果,那么可以用强制类型转换,即将两个整数转换成浮点数类型。要在表达式中强制转换数据类型,采用如下语法:


(强制转换类型名称)  表达式或变量;

例如以下程序片段:


int a,b,avg;
avg=(float)(a+b)/2;/* 将a+b的结果值强制转换为浮点数类型 */

注意,上述程序语句中包含转换类型名称的小括号是绝对不可以省略的,否则计算结果得到的浮点数在被自动类型转换为整数时,小数部分会被直接舍弃。另外,在赋值运算符“=”左边的变量不能进行强制数据类型转换,例如:


(float)avg=(a+b)/2;  /* 不合法的程序语句 */

【综合练习】强制类型转换练习


01    // 自动类型转换与强制类型转换的比较
02    public class WORK02_03 {
03      public static void main (String args[]) {
04    int i=100, j=3; /* 声明整数变量 i 与 j,并赋初值 */
05        float Result;   /* 声明浮点数变量 Result */
06        System.out.println("自动类型转换的执行结果为:");
07        Result=i/j;       /* 自动类型转换 */
08        System.out.println("Result=i/j="+i+"/"+j+"="+Result);
09        System.out.println("--------------------------------------");
10        System.out.println("强制类型转换的执行结果为:");
11        Result=(float) i / j;  /* 强制类型转换 */
12      System.out.println("Result=(float)i/(float)j="+i+"/"+j+"="+Result);
13        System.out.println("--------------------------------------");
14      }
15    }

【程序的执行结果】

程序的执行结果可参考图2-20。

图2-20 1abcj2dhdsGf7rnZsQfFovcHZK5ln9VAM/c/sUeY25x4/lneu1NOiap3Ehiug0je

点击中间区域
呼出菜单
上一章
目录
下一章
×