Java语言基础实验_第1页
Java语言基础实验_第2页
Java语言基础实验_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,输出

15、z的值,即输出2。(4) 第4段代码的输出结果是什么,为何?答:结果是1。计算了 (x = (z = 1),z被赋值为1,输出z的值,即输出2。7. 编程实验:输出Unicode特定区间的字符。功能要求:屏幕输出所有大写英文字母、 小写字母)、某两个汉字字符之间的所有Uni code字符。程序:public class test7 public static void main( Stri ng args) char i;for (i= a;i= z;i+)System.out.pri ntl n(i);for (i= A;i=Z;i+)System.out.pri ntl n(i);for

16、(i=啊;i=阿;i+)System.out.pri ntl n(i);程序运行截图是:8. 编程实验:分析输入的数字。功能要求:输入若干个数字,依次判断这些数字是否是奇数、平方数、素数,并输出判断信息。设计要求:需要设计静态方法isOdd(int n)来判断参数n是否是奇数;相似地,还需要设计静态方法isSquareNumber(int n)和isPrime(int n),来分别用于判断参数 n是否是平方数、素数。程序:import java.util.*;public class test8 public static void main( Stri ng args) Scanner sc

17、a nner=new Scann er(System.请输入若干数字System. out .println(in );(以英文字符结束);while (sca nn er.hasNextI nt() intn=sca nn er .n ext In t();if (isOdd (n)staticboolea nisOdd( int n)if(n %2=0)returnfalse ;elsereturntrue ;staticboolea nisSquareNumber(intj;for(j=1;j n/2;j+)if (j*j=n)returntrue ;returnfalseJintn) staticboolea n isPrime(int n)intj;for(j=2;j n/2;j+)System. out .println(n+为奇数);elseSystem. out .println(n+不是奇数);if (isSquareNumber(n)System. out .println(n+为平方数);elseSystem. out .println(n+不是平方数if (isPrime (n)System. out .println(n+为素数);elseSystem.ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论