好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Java语言基础实验.doc

10页
  • 卖家[上传人]:M****1
  • 文档编号:510507842
  • 上传时间:2023-10-15
  • 文档格式:DOC
  • 文档大小:257.50KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 浙江大学城市学院实验报告课程名称 面向对象程序设计 实验项目名称 Java语言基础实验 学生姓名 专业班级 学号 .实验目的和要求1. 掌握Java语言的基本数据类型、字符串、数组2. 掌握Java语言的运算符、表达式、语句3. 能够编写Java应用程序.实验内容1. 局部变量与final变量实验2. 基本数据类型与转换实验3. 算术运算的精度问题实验4. 移位运算实验5. 运算赋值实验6. 短路逻辑运算实验7. 编程实验:输出 Unicode特定区间的字符8. 编程实验:分析输入的数字三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1. 局部变量与final变量实验编写以下程序,并回答问题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 static void main(String[] args) {int a=10 ;System.out.pri nt(a);final int b = 100;System.out.pri nt(b);}}2.基本数据类型与转换实验编写以下程序,分析代码的输出结果,并回答问题class Test2{public 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.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类型的数字转换为 byte或者short类型, 会出现符号变化,即正数变负数,负数变正数?为何输出会不同?答:在强制类型转换时,如果数值超过目标类型的取值范围, 那么某些数据位会被强行截断(即数据截断),从而导致数据丢失,甚至符号丢失。

      例如:byte的取值范围是-27~27-1, int类型的255不在这个范围内,强制转换的结果是-12) 分析第2段代码,说明整数类型向浮点型转型是否可能出现精度损失,是否需要强 制转换答:整数类型向浮点型转型可能会出现精度损失, 不需要强制转换,可以自动类型转换⑶ 分析第3段代码,说明整数的八进制、十六机制、十进制的书写格式(即字面值格 式)都是什么?答:八进制:首字母为 0,包括0到7之间的字符所组成的字符序列;十六进制:以0x (或者0X)开始,包括0到9、以及A到F十六个符号组成的字 符序列;十进制:由0到9十个字符组成的字符序列,一般首字符不可为 03. 算术运算的精度问题实验编写以下程序,并回答问题class Test3{public 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转换为short,不能从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 Test4{public static void main(String[] args){(”第1段测试代码输出”);System.out.pri ntln (1>>32);System.out.pri ntln (1L>>32);(”第2段测试代码输出”);System.out.pri ntln( 10>>5);System.out.pri ntln (-10>>5);(”第3段测试代码输出”);System.out.pri ntln (1<<31);System.out.pri ntln (1L<<31);System.out.pri ntln (1L<<63);(”第4段测试代码输出”);System.out.pri ntln (1<<100);System.out.pri ntln (1L<<100);(”第5段测试代码输出”);System.out.pri ntl n(7<<2);System.out.pri ntln (7<<1<<1);(”第6段测试代码输出”);intn = 34; int q=7;System.out.pri ntln(q<>1);System.out.pri ntln (-2>>>1);}请分析并回答以下问题:(1)分析第1段代码,为何输出会不同?答:int类型为32为,所以右移32位还是其本身,long类型为64为,所以右移32位, 低位被舍弃,高位补 0,最终结果为0。

      1)分析第2段代码,正整数右移的最小值是什么?负整数右移的最大值是什么? 答:正整数右移的最小值是 0,负整数右移的最大值是 -12) 分析第3段代码,三个语句输出为何不同?答:int类型右移31位,符号位就是1符号位1代表为负数,long类型右移31位, 只能说明扩大了 2的31次方,long类型右移63位,符号位就是1,符号位1代表为负数(3) 分析第4段代码,两个语句输出为何不同?答:int类型左移100位,和右移4位一样,100除以32的余数long类型左移100位,和 右移36位一样,100除以64的余数4) 分析第5段代码,两个移位运算是否等价?答:等价5) 分析第6段代码,q<>1 ”和“ -1>>>1 ”有何差别? 答:“ -1>>1 ” 结果是-1, “ -1>>>1 ” 结果是 21474836475. 运算赋值实验编写以下程序,并回答问题。

      class Test5{public static void main(String[] args) {byte a = 10;a = a >> 1; //是否出错?a >>= 1; //是否出错?char c = 'a';c = c + 1;//是否出错?c += 1; //是否出错?}}(1)程序的错误类型不匹配:不能从 int转换为byte ,不能从int转换为char2)改正方式public class Test5 {public static void main( Stri ng[] args) {byte a = 10;a =( byte )( a >> 1); // 是否岀错?a >>= 1; // 是否出错?char c = 'a';c =( char )( c + 1); // 是否岀错?c += 1; // 是否出错?}}(3) 运算赋值的特点运算赋值时无需强制转换6. 短路逻辑运算实验编写以下程序,并回答问题class test6{public static void main(String[] args) {int x = 1, z = 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.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的值,即输出22) 第2段代码的输出结果是什么,为何?答:结果是1计算了(x == (z = 1)) , z被赋值为1,输出z的值,即输出13) 第3段代码的输出结果是什么,为何?答:结果是2没有计算(x == (z = 1)),z仍等于2,输出z的值,即输出。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.