《Java语言基础实验》由会员分享,可在线阅读,更多相关《Java语言基础实验(10页珍藏版)》请在金锄头文库上搜索。
1、浙江大学城市学院实验报告课程名称 面向对象程序设计实验项目名称 Java语言基础实验学生姓名 专业班级 学号 .实验目的和要求1. 掌握Java语言的基本数据类型、字符串、数组2. 掌握Java语言的运算符、表达式、语句3. 能够编写Java应用程序.实验内容1. 局部变量与final变量实验2. 基本数据类型与转换实验3. 算术运算的精度问题实验4. 移位运算实验5. 运算赋值实验6. 短路逻辑运算实验7. 编程实验:输出 Unicode特定区间的字符。8. 编程实验:分析输入的数字三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1. 局部变量与final变量实验。编写以下程序,
2、并回答问题。public class Localvariable In itExample public static void main( Stri ng args) int a ;System.out.pri nt(a);final int b = 100;b+;System.out.pri nt(b);(1) 程序的错误1、System.out.print(a);出错,局部变量 a没有进行过初始化或赋值2、 b+;出错,不能对终态局部变量b赋值。它必须为空白,并且不使用复合赋值(2) 改正方式public class LocalVariable In itExample public s
3、tatic void main(String args) int a=10 ;System.out.pri nt(a);final int b = 100;System.out.pri nt(b);2.基本数据类型与转换实验。编写以下程序,分析代码的输出结果,并回答问题。class Test2public static void main(String args)(”第1段测试代码输出”);System.out.pri ntln (byte)255);System.out.pri ntln (short)65535);System.out.pri ntln (byte)-129);System
4、.out.pri ntl n( (byte)129);System.out.pri ntl n( (byte)128);(”第2段测试代码输出”);int i = 123456789;float f = i;System.out.pri ntl n(f);double d = j;System.out.pri ntl n( d);(”第3段测试代码输出”);System.out.pri ntln(077);System.out.pri ntln( 0x77);System.out.pri ntl n( 77);请分析并回答以下问题:(1) 分析第1段代码,说明在什么情况下,int类型的数字转换
5、为 byte或者short类型, 会出现符号变化,即正数变负数,负数变正数?为何输出会不同?答:在强制类型转换时,如果数值超过目标类型的取值范围,那么某些数据位会被强行截断(即数据截断),从而导致数据丢失,甚至符号丢失。例如:byte的取值范围是-2727-1, int类型的255不在这个范围内,强制转换的结果是-1。(2) 分析第2段代码,说明整数类型向浮点型转型是否可能出现精度损失,是否需要强 制转换。答:整数类型向浮点型转型可能会出现精度损失,不需要强制转换,可以自动类型转换。 分析第3段代码,说明整数的八进制、十六机制、十进制的书写格式(即字面值格 式)都是什么?答:八进制:首字母为
6、0,包括0到7之间的字符所组成的字符序列;十六进制:以0x (或者0X)开始,包括0到9、以及A到F十六个符号组成的字 符序列;十进制:由0到9十个字符组成的字符序列,一般首字符不可为0。3. 算术运算的精度问题实验。编写以下程序,并回答问题。class Test3public static void main( Stri ng args)short a = 10;a = a + 2;byte b = 1; b = b + 1;short a = 10; byte b = 5;a = a + b;char c = a;c = c+1;(1)程序的错误1、 类型不匹配:不能从 int转换为sho
7、rt,不能从int转换为byte,不能从int转换为char2、局部变量 a、b重复(2) 改正方式class Test3 public static void main(String args) short a = 10;a = (short)(a + 2);byte b = 1; b = (byte)(b + 1);short d = 10;byte e = 5;d = (short)(d + e);char c = a; c = (char)(c+1);4. 移位运算实验。编写以下程序,分析代码的输出结果,并回答问题。class Test4public static void main(
8、String args)(”第1段测试代码输出”);System.out.pri ntln (132);System.out.pri ntln (1L32);(”第2段测试代码输出”);System.out.pri ntln( 105);System.out.pri ntln (-105);(”第3段测试代码输出”);System.out.pri ntln (131);System.out.pri ntln (1L31);System.out.pri ntln (1L63);(”第4段测试代码输出”);System.out.pri ntln (1100);System.out.pri ntln
9、 (1L100);(”第5段测试代码输出”);System.out.pri ntl n(72);System.out.pri ntln (711);(”第6段测试代码输出”);intn = 34; int q=7;System.out.pri ntln(qn);q= 7;for(i nt i = 0;i n; i+)q = q1;System.out.pri ntl n(q);(”第7段测试代码输出”);int m = 2000000000;System.out.pri ntln(m 1);System.out.pri ntln (-21);请分析并回答以下问题:(1)分析第1段代码,为何输出
10、会不同?答:int类型为32为,所以右移32位还是其本身,long类型为64为,所以右移32位, 低位被舍弃,高位补 0,最终结果为0。(1)分析第2段代码,正整数右移的最小值是什么?负整数右移的最大值是什么? 答:正整数右移的最小值是0,负整数右移的最大值是 -1。(2) 分析第3段代码,三个语句输出为何不同?答:int类型右移31位,符号位就是1。符号位1代表为负数,long类型右移31位, 只能说明扩大了 2的31次方,long类型右移63位,符号位就是1,符号位1代表为负数(3) 分析第4段代码,两个语句输出为何不同?答:int类型左移100位,和右移4位一样,100除以32的余数。l
11、ong类型左移100位,和 右移36位一样,100除以64的余数。(4) 分析第5段代码,两个移位运算是否等价?答:等价。(5) 分析第6段代码,q1 ”和“ -11 ”有何差别? 答:“ -11 ” 结果是-1,“ -11 ” 结果是 2147483647。5. 运算赋值实验。编写以下程序,并回答问题。class Test5public static void main(String args) byte a = 10;a = a 1; /是否出错?a = 1; /是否出错?char c = a;c = c + 1;/是否出错?c += 1; /是否出错?(1)程序的错误类型不匹配:不能从
12、int转换为byte ,不能从int转换为char。(2)改正方式public class Test5 public static voidmain( Stri ng args) byte a = 10;a =( byte )( a 1);/ 是否岀错?a = 1;/是否出错?char c =a;c =( char )( c + 1);/ 是否岀错?c += 1;/ 是否出错?(3) 运算赋值的特点。运算赋值时无需强制转换。6. 短路逻辑运算实验。编写以下程序,并回答问题。class test6public static void main(String args) int x = 1, z
13、= 2;System.out.println(第1段测试代码输出); if(false&(x = (z = 1)System.out.pri ntl n( x);elseSystem.out.pri ntl n( z);z = 2; x =1;System.out.println(第2段测试代码输出);if(true&(x = (z = 1)&false)System.out.pri ntl n( x);elseSystem.out.pri ntl n( z);x=0; z = 2;System.out.println(第3段测试代码输出);if(true|(x = (z = 1)System
14、.out.pri ntl n( z);x=0; z = 2;System.out.println(第4段测试代码输出);if(false|(x = (z =1)|true)System.out.pri ntl n( z);请分析并回答以下问题:(1)第1段代码的输出结果是什么,为何?答:结果是2。没有计算(x = (z = 1),z仍等于2,输出z的值,即输出2。(2) 第2段代码的输出结果是什么,为何?答:结果是1。计算了(x = (z = 1) , z被赋值为1,输出z的值,即输出1。(3) 第3段代码的输出结果是什么,为何?答:结果是2。没有计算(x = (z = 1),z仍等于2,输出z的值,即输出