




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学城市学院实验报告课程名称 面向对象程序设计 实验项目名称 Java语言基础实验 学生姓名 专业班级 学号 一. 实验目的和要求 1. 掌握Java语言的基本数据类型、字符串、数组2. 掌握Java语言的运算符、表达式、语句3能够编写Java应用程序二. 实验内容 1. 局部变量与final变量实验2. 基本数据类型与转换实验3. 算术运算的精度问题实验4. 移位运算实验5. 运算赋值实验6. 短路逻辑运算实验7. 编程实验:输出Unicode特定区间的字符。8. 编程实验:分析输入的数字三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1. 局部变量与final变量实验。编写以下程序,并回答问题。public class LocalVariableInitExample public static void main(String args) int a ; System.out.print(a); final int b = 100; b+;System.out.print(b); (1)程序的错误错误1:变量a定义之后没有赋值错误2:变量b为final变量,定义赋值之后不能再修改变量的值(2)改正方式public class LocalVariableInitExample public static void main(String args) int a ;/改成int a=10; System.out.print(a); final int b = 100; b+;/将此语句删除System.out.print(b); 2. 基本数据类型与转换实验。编写以下程序,分析代码的输出结果,并回答问题。class Test2 public static void main(String args) System.out.println(第1段测试代码输出); System.out.println(byte)255); System.out.println(short)65535); System.out.println(byte)-129); System.out.println(byte)129); System.out.println(byte)128); System.out.println(第2段测试代码输出); int i = 123456789; float f = i; System.out.println(f); long j = 123456789123456789L; double d = j; System.out.println(d); System.out.println(第3段测试代码输出); System.out.println(077); System.out.println(0x77); System.out.println(77); 请分析并回答以下问题:(1) 分析第1段代码,说明在什么情况下,int类型的数字转换为byte或者short类型,会出现符号变化,即正数变负数,负数变正数?为何输出会不同?答:当int类型所表示的数字大小大于byte以及short所能表示的最大的数字的时候将出现符号变化,补码在转化过程中的符号位的改变(2) 分析第2段代码,说明整数类型向浮点型转型是否可能出现精度损失,是否需要强制转换。答:可能出现精度损失,不需要强制转换(3) 分析第3段代码,说明整数的八进制、十六机制、十进制的书写格式(即字面值格式)都是什么?答:八进制:首字母为0,后面为07所组成的十六机制:首字母为0x,后面为09和AF所组成的十进制:首字母不为0,由09之间的数字组成3. 算术运算的精度问题实验。编写以下程序,并回答问题。class Test3 public static void main(String 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 a+2将进行自动转化成int类型,所以不能将short类型的a+2错误2 b+1将自动转化成int类型,故不能将byte类型的b等于b+1错误3 a和b在之前已经定义过了,不能重复定义错误4 不能将short类型的a等于自动升级转化为int类型的a+b错误5 不能将char类型的c等于int类型的c+1(2)改正方式class Test3 public static void main(String args) short a = 10;a = a + 2;/改成a=(short)(a+2);byte b = 1;b = b + 1; /改成b=(byte)(b+1);short a = 10;/改成short d=10;byte b = 5;/改成byte e=5;a = a + b; /改成a=(short)(d+e);char c = a;c = c+1; /改成c=(char)(c+1); 4. 移位运算实验。编写以下程序,分析代码的输出结果,并回答问题。class Test4 public static void main(String args) System.out.println(第1段测试代码输出); System.out.println(132); System.out.println(1L32); System.out.println(第2段测试代码输出); System.out.println(105); System.out.println(-105); System.out.println(第3段测试代码输出); System.out.println(131); System.out.println(1L31); System.out.println(1L63); System.out.println(第4段测试代码输出); System.out.println(1100); System.out.println(1L100); System.out.println(第5段测试代码输出); System.out.println(72); System.out.println(711); System.out.println(第6段测试代码输出); int n = 34; int q=7; System.out.println(qn); q= 7; for(int i = 0;in;i+) q = q1; System.out.println(q); System.out.println(第7段测试代码输出); int m = 2000000000; System.out.println(m1); System.out.println(-21); 请分析并回答以下问题:(1) 分析第1段代码,为何输出会不同?答:System.out.println(132);int类型的1向右移位 System.out.println(1L32);long类型的1向右移位(1) 分析第2段代码,正整数右移的最小值是什么?负整数右移的最大值是什么?答:正整数右移最小值为0 负数右移最大值为-1(2) 分析第3段代码,三个语句输出为何不同?答:System.out.println(131); -2147483648因为1是int类型所以移动位数是31对32求余,也就是向左移动32位,将1从第0位移到了第31位符号位,而所有低位都补充为0 System.out.println(1L31); 2147483648因为是long类型所以移动位数是31对64求余,也就是向左移动31位System.out.println(1L63); -9223372036854775808因为long类型向左移动63位,将1从第0位移到了第63位符号位,而所有低位都补充为0(3) 分析第4段代码,两个语句输出为何不同? 答:System.out.println(1100); 16就是int类型的1向左移动100对32取余个位数,就是左移4位 System.out.println(1L100); 68719476736就是long类型的1向左移动100对63取余个位数,就是左移37位(4) 分析第5段代码,两个移位运算是否等价? 答:等价(5) 分析第6段代码, q1”和“-11”有何差别? 答:System.out.println(-21); -1有符号右移1位,因为-2是负数,所以在高位补充1 System.out.println(-21); 2147483647无符号右移1位,高位统一补充05. 运算赋值实验。编写以下程序,并回答问题。class Test5public static void main(String args) byte a = 10;a = a 1; / 是否出错?a = 1; / 是否出错?char c = a; c = c + 1;/ 是否出错?c += 1; / 是否出错? (1)程序的错误错误1:a为byte类型,在移位运算过程中会自动转化成int类型错误2:c为char类型,c+1将自动转化成int类型(2) 改正方式class Test5public static void main(String args) byte a = 10;a = a 1; /改成a=(byte)(a1) a = 1; char c = a; c = c + 1;/ 改成c=(char)(c+1);c += 1; (3)运算赋值的特点。运算赋值的时候无需进行强制转换,因为其自动进行强制类型转换普通赋值的时候要进行强制类型转换6. 短路逻辑运算实验。编写以下程序,并回答问题。class test6public static void main(String args) int x = 1, z = 2; System.out.println(第1段测试代码输出); if(false&(x = (z = 1)System.out.println(x);elseSystem.out.println(z);z = 2; x =1; System.out.println(第2段测试代码输出); if(true&(x = (z = 1)&false) System.out.println(x);elseSystem.out.println(z); x=0; z = 2; System.out.println(第3段测试代码输出); if(true|(x = (z = 1) System.out.println(z);x=0; z = 2; System.out.println(第4段测试代码输出); if(false|(x = (z =1)|true)System.out.println(z);请分析并回答以下问题:(1) 第1段代码的输出结果是什么,为何? 答:2 因为if(false&(x = (z = 1)时因为第一个是false就没有计算(x = (z = 1),z仍然为2(2) 第2段代码的输出结果是什么,为何? 答:1因为 if(true&(x = (z = 1)&false) 时第一个是true故计算了(x = (z = 1),z被赋值为1(3) 第3段代码的输出结果是什么,为何? 答:2 因为if(true|(x = (z = 1) 没有计算x = (z = 1),z仍然为2 (4) 第4段代码的输出结果是什么,为何?答:1 因为if(false|(x = (z =1)|true)计算了x = (z = 1),z被赋值为1 7. 编程实验:输出Unicode特定区间的字符。功能要求:屏幕输出所有大写英文字母、小写字母)、某两个汉字字符之间的所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025养老产业综合体项目合作协议
- 2025年特种工程铲车销售协议:高端全系列多功能定制版
- 2025年绿色能源项目原材料供应合作协议
- 2025年新能源项目投资与收益分成管理协议
- 2025年新能源车队安全通行保障及维护服务合同
- 2025年度制衣厂临时工就业合同与岗位操作规范书
- 2025年环保建材采购与服务一体化战略合作框架协议
- 海天调味品培训课件
- 海外孩子初学中文课件网
- 2025年新能源汽车零部件定制采购服务协议
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- 煤矿安全规程新旧版本对照表格版
- 2025山东“才聚齐鲁成就未来”水发集团高校毕业招聘241人笔试参考题库附带答案详解(10套)
- 中学2025年秋季第一学期开学工作方案
- 儿童急救流程
- GB 11122-2025柴油机油
- 私募薪酬管理办法
- 联通技能竞赛考试题及答案(5G核心网知识部分)
- 劳动保障监察执法课件
- #20kV设备交接和预防性试验规定
评论
0/150
提交评论