Java语言基础实验报告.docx
- 文档编号:10251888
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:14
- 大小:183.93KB
Java语言基础实验报告.docx
《Java语言基础实验报告.docx》由会员分享,可在线阅读,更多相关《Java语言基础实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
Java语言基础实验报告
浙江大学城市学院实验报告
课程名称面向对象程序设计
实验项目名称Java语言基础实验
学生姓名专业班级学号
一.实验目的和要求
1.掌握Java语言的基本数据类型、字符串、数组
2.掌握Java语言的运算符、表达式、语句
3.能够编写Java应用程序
二.实验内容
1.局部变量与final变量实验
2.基本数据类型与转换实验
3.算术运算的精度问题实验
4.移位运算实验
5.运算赋值实验
6.短路逻辑运算实验
7.编程实验:
输出Unicode特定区间的字符。
8.编程实验:
分析输入的数字
三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)
1.局部变量与final变量实验。
编写以下程序,并回答问题。
publicclassLocalVariableInitExample{
publicstaticvoidmain(String[]args){
inta;
System.out.print(a);
finalintb=100;
b++;
System.out.print(b);
}
}
(1)程序的错误
1、System.out.print(a);出错,局部变量a没有进行过初始化或赋值
2、b++;出错,不能对终态局部变量b赋值。
它必须为空白,并且不使用复合赋值
(2)改正方式
publicclassLocalVariableInitExample{
publicstaticvoidmain(String[]args){
inta=10;
System.out.print(a);
finalintb=100;
System.out.print(b);
}
}
2.基本数据类型与转换实验。
编写以下程序,分析代码的输出结果,并回答问题。
classTest2{
publicstaticvoidmain(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段测试代码输出");
inti=123456789;
floatf=i;
System.out.println(f);
longj=123456789123456789L;
doubled=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类型,会出现符号变化,即正数变负数,负数变正数?
为何输出会不同?
答:
在强制类型转换时,如果数值超过目标类型的取值范围,那么某些数据位会被强行截断(即数据截断),从而导致数据丢失,甚至符号丢失。
例如:
byte的取值范围是-27~27-1,int类型的255不在这个范围内,强制转换的结果是-1。
(2)分析第2段代码,说明整数类型向浮点型转型是否可能出现精度损失,是否需要强制转换。
答:
整数类型向浮点型转型可能会出现精度损失,不需要强制转换,可以自动类型转换。
(3)分析第3段代码,说明整数的八进制、十六机制、十进制的书写格式(即字面值格式)都是什么?
答:
八进制:
首字母为0,包括0到7之间的字符所组成的字符序列;
十六进制:
以0x(或者0X)开始,包括0到9、以及A到F十六个符号组成的字符序列;
十进制:
由0到9十个字符组成的字符序列,一般首字符不可为0。
3.算术运算的精度问题实验。
编写以下程序,并回答问题。
classTest3{
publicstaticvoidmain(String[]args){
shorta=10;
a=a+2;
byteb=1;
b=b+1;
shorta=10;
byteb=5;
a=a+b;
charc='a';
c=c+1;
}
}
(1)程序的错误
1、类型不匹配:
不能从int转换为short,不能从int转换为byte,不能从int转换为char
2、局部变量a、b重复
(2)改正方式
classTest3{
publicstaticvoidmain(String[]args){
shorta=10;
a=(short)(a+2);
byteb=1;
b=(byte)(b+1);
shortd=10;
bytee=5;
d=(short)(d+e);
charc='a';
c=(char)(c+1);
}
}
4.移位运算实验。
编写以下程序,分析代码的输出结果,并回答问题。
classTest4{
publicstaticvoidmain(String[]args){
System.out.println("第1段测试代码输出");
System.out.println(1>>32);
System.out.println(1L>>32);
System.out.println("第2段测试代码输出");
System.out.println(10>>5);
System.out.println(-10>>5);
System.out.println("第3段测试代码输出");
System.out.println(1<<31);
System.out.println(1L<<31);
System.out.println(1L<<63);
System.out.println("第4段测试代码输出");
System.out.println(1<<100);
System.out.println(1L<<100);
System.out.println("第5段测试代码输出");
System.out.println(7<<2);
System.out.println(7<<1<<1);
System.out.println("第6段测试代码输出");
intn=34;intq=7;
System.out.println(q< q=7; for(inti=0;i q=q<<1; System.out.println(q); System.out.println("第7段测试代码输出"); intm=2000000000; System.out.println(m<<1); System.out.println(m*2); System.out.println("第8段测试代码输出"); System.out.println(-2>>1); System.out.println(-2>>>1); } } 请分析并回答以下问题: (4)分析第1段代码,为何输出会不同? 答: int类型为32为,所以右移32位还是其本身,long类型为64为,所以右移32位,低位被舍弃,高位补0,最终结果为0。 (1)分析第2段代码,正整数右移的最小值是什么? 负整数右移的最大值是什么? 答: 正整数右移的最小值是0,负整数右移的最大值是-1。 (5)分析第3段代码,三个语句输出为何不同? 答: int 类型右移31位,符号位就是1。 符号位1代表为负数,long 类型右移31位,只能说明扩大了2的31次方, long 类型右移63位,符号位就是1,符号位1代表为负数 (6)分析第4段代码,两个语句输出为何不同? 答: int 类型左移100位,和右移4位一样,100除以32的余数。 long 类型左移 100位,和右移36位一样,100除以64的余数。 (7)分析第5段代码,两个移位运算是否等价? 答: 等价。 (8)分析第6段代码,q< 什么条件下相同? 答: 不相同,在n=2的情况下相同。 (9)分析第7段代码,左移1位与乘2是否等价? 左移1位是否一定值翻倍? 答: 等价。 如果不是移到最高位,符号位上,则不一定翻倍。 (10)分析第8段代码,“-1>>1”和“-1>>>1”有何差别? 答: “-1>>1”结果是-1,“-1>>>1”结果是2147483647。 5.运算赋值实验。 编写以下程序,并回答问题。 classTest5{ publicstaticvoidmain(String[]args){ bytea=10; a=a>>1;//是否出错? a>>=1;//是否出错? charc='a'; c=c+1;//是否出错? c+=1;//是否出错? } } (1)程序的错误 类型不匹配: 不能从int转换为byte,不能从int转换为char。 (2)改正方式 publicclassTest5{ publicstaticvoidmain(String[]args){ bytea=10; a=(byte)(a>>1);//是否出错? a>>=1;//是否出错? charc='a'; c=(char)(c+1);//是否出错? c+=1;//是否出错? } } (3)运算赋值的特点。 运算赋值时无需强制转换。 6.短路逻辑运算实验。 编写以下程序,并回答问题。 classtest6{ publicstaticvoidmain(String[]args){ intx=1,z=2; System.out.println("第1段测试代码输出"); if(false&&(x==(z=1))) System.out.println(x); else System.out.println(z); z=2;x=1; System.out.println("第2段测试代码输出"); if(true&&(x==(z=1))&&false) System.out.println(x); else System.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); } } 请分析并回答以下问题: (11)第1段代码的输出结果是什么,为何? 答: 结果是2。 没有计算(x==(z=1)),z仍等于2,输出z的值,即输出2。 (12)第2段代码的输出结果是什么,为何? 答: 结果是1。 计算了(x==(z=1)),z被赋值为1,输出z的值,即输出1。 (13)第3段代码的输出结果是什么,为何? 答: 结果是2。 没有计算(x==(z=1)),z仍等于2,输出z的值,即输出2。 (14)第4段代码的输出结果是什么,为何? 答: 结果是1。 计算了(x==(z=1)),z被赋值为1,输出z的值,即输出2。 7.编程实验: 输出Unicode特定区间的字符。 功能要求: 屏幕输出所有大写英文字母、小写字母)、某两个汉字字符之间的所有Unicode字符。 程序: publicclasstest7{ publicstaticvoidmain(String[]args){ chari; for(i='a';i<='z';i++) System.out.println(i); for(i='A';i<='Z';i++) System.out.println(i); for(i='啊';i<='阿';i++) System.out.println(i); } } 程序运行截图是: 8.编程实验: 分析输入的数字。 功能要求: 输入若干个数字,依次判断这些数字是否是奇数、平方数、素数,并输出判断信息。 设计要求: 需要设计静态方法isOdd(intn)来判断参数n是否是奇数;相似地,还需要设计静态方法isSquareNumber(intn)和isPrime(intn),来分别用于判断参数n是否是平方数、素数。 程序: importjava.util.*; publicclasstest8{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请输入若干数字(以英文字符结束): "); while(scanner.hasNextInt()){ intn=scanner.nextInt(); if(isOdd(n)) System.out.println(n+"为奇数"); else System.out.println(n+"不是奇数"); if(isSquareNumber(n)) System.out.println(n+"为平方数"); else System.out.println(n+"不是平方数"); if(isPrime(n)) System.out.println(n+"为素数"); else System.out.println(n+"不是素数"); } } staticbooleanisOdd(intn){ if(n%2==0) returnfalse; else returntrue; } staticbooleanisSquareNumber(intn){ intj; for(j=1;j if(j*j==n) returntrue; } returnfalse; } staticbooleanisPrime(intn){ intj; for(j=2;j if(n%j==0) returnfalse; } returntrue; } } 程序运行截图是: 四.讨论、心得(可写遇到的问题及解决方法,或者对技术的理解等) 本次实验我了解到java与c++有许多相同之处,如ifelse的用法,但也有很多的不同之处,如输入与输出的方法,还有不同类型的运算等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言 基础 实验 报告