当前位置:文档之家› Java语言基础实验

Java语言基础实验

浙江大学城市学院实验报告课程名称 ______________ 面向对象程序设讣实验工程名称 ________________ Java语言基础实验__________________________________ 学生姓名专业班级学号实验目的和要求1.掌握Java语言的基本数据类型、字符串、数组2.掌握Java语言的运算符、表达式、语句3.能够编写Java应用程序二. 实验内容1.局部变量与final变量实验2.基本数据类型与转换实验3.算术运算的精度问题实验4.移位运算实验5.运算赋值实验6.短路逻辑运算实验7.编程实验:输出Unicode特泄区间的字符。

&编程实验:分析输入的数字三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1.局部变量与final变量实验。

编写以下程序,并回答问题。

public class LocalVariablcInitExample {public static void main(String[] args) {int a oSystem.out.print(a)ofinal int b = 100。

b++oSystem.out.print(b)c}}(1)程序的错误1、S ystem.out.print(a)o出错,局部变量a没有进行过初始化或赋值2、b++。

岀错,不能对终态局部变量b赋值。

它必须为空白,并且不使用复合赋值(2)改正方式public class LocalVariablelnitExample {public static void main(String[] args) {int a=10 oSystem.out.print(a)ofinal int b= 100°Systeni.out.print(b)o}}2.基本数据类型与转换实验。

编写以下程序,分析代码的输出结果,并回答问题。

classTest2{public static void main(String[] args){System.out.println(M第1段测试代码输出”)。

System.out.println((byle)255)oSystem.out.println((short)65535)0System.out.println((byte)-129)。

System.out.println((byte)129)oSystem.out.println((byte) 128)。

System.out.printing第2段测试代码输出”)。

int i= 123456789 cfloat f =仁System.out.println(f)0longj=123456789123456789L, double d = j。

System.out.println(d)oSystem.out.println(H第3段测试代码输出System.out.println(077) <>System.out.println(0x77)oSystem.out.println(77)o}}请分析并回答以下问题:(1)分析第1段代码,说明在什么情况下,int类型的数字转换为byte或者short类型,会岀现符号变化,即正数变负数,负数变正数?为何输出会不同?答:在强制类型转换时,如果数值超过目标类型的取值范用,那么某些数据位会被强行截断(即数据截断),从而导致数据丢失,甚至符号丢失。

例如:byte的取值范围是-27~2U, int类型的255不在这个范围内,强制转换的结果是-lo(2)分析第2段代码,说明整数类型向浮点型转型是否可能岀现精度损失,是否需要强制转换。

答:整数类型向浮点型转型可能会出现精度损失•不需要强制转换,可以自动类型转换。

(3)分析第3段代码,说明整数的八进制、十六机制、十进制的书写格式(即字而值格式)都是什么?答:八进制:首字母为0 ,包括0到7之间的字符所组成的字符序列;十六进制:以0x(或者0X)开始,包括0到9、以及A到F十六个符号组成的字符序列;十进制:由0到9十个字符组成的字符序列,一般首字符不可为0。

3.算术运算的精度问题实验。

编写以下程序,并回答问题。

class Test3{public static void main(String[] args){short a = 10aa = a + 2obyte b= lob = b + 1 oshort a = 10=byte b = 5oa = a + bochar c = 'a 寫C = C+lo}}(1)程序的错误1、类型不匹配:不能从int转换为short ,不能从int转换为byte,不能从int转换为char2、局部变虽a、b重复(2)改正方式class Test3 {public static void main(String[] args){short a = 10oa = (short)(a + 2)obyte b = 1 ob = (byte)(b + 1)。

short d = 10obyte e = 5od = (short)(d + e)oc = (char)(c+l)o}}4.移位运算实验。

编写以下程序,分析代码的输出结果,并回答问题。

class Test4{public static void main(String[) args){System, out. printing第1段测试代码输出”)。

System.out.println( 1 »32)oSystem.out.println(l L»32)oSystem.out.printlnC第2段测试代码输出”)。

System.out.println( 10»5)oSystem.out.println(-10»5)。

System.out.printing第3段测试代码输出”)aSystem.out.println( 1 «31 )。

System.out.println( 1 L«31)。

System.out.println( 1 Lvv63)。

System.out.printing第4段测试代码输出”)。

System.out.println( 1«100) <>System.out.println(l L« 100)。

System.out.printlnC第5段测试代码输出”)。

System.out.println(7«2)oSystem.out.println(7« 1 vv 1) ©System.out.printing第6段测试代码输出”)aint n = 34o int q=7oSystem.out.println(q«n)oq= 7。

for(int i = 0o ivn。

i++)q = q«USystem.out.println(q)oSystem.out.printing第7段测试代码输出”)。

int m = 2000000000aSystcm.out.println(m« 1 )oSystem.out.println(m*2)oSystem.out.printing第8段测试代码输出”)aSystem.out.println(-2» 1)。

System.out.println(-2>»l)o}请分析并回答以下问题:(1)分析第1段代码,为何输出会不同?答:im类型为32为,所以右移32位还是其本身,long类型为64为,所以右移32位, 低位被舍弃,髙位补0,最终结果为0。

(1)分析第2段代码,正整数右移的最小值是什么?负整数右移的最大值是什么?答:正整数右移的最小值是0,负整数右移的最大值是-1。

(2)分析第3段代码,三个语句输岀为何不同?答:int类型右移31位,符号位就是K符号位1代表为负数,long类型右移31位,只能说明扩大了2的31次方,long类型右移63位,符号位就是1,符号位1代表为负数(3)分析第4段代码,两个语句输出为何不同?答:int类型左移100位,和右移4位一样,100除以32的余数。

long类型左移100位,和右移36位一样,100除以64的余数。

(4)分析第5段代码,两个移位运算是否等价?答:等价。

⑸ 分析第6段代码,q«n与将q不断左移1位(共移动n位)是否相同?什么条件下相同?答:不相同,在n=2的情况下相同。

(6)分析第7段代码,左移1位与乘2是否等价?左移1位是否一定值翻倍?答:等价。

如果不是移到最髙位,符号位上,则不一定翻倍。

(7)分析第8段代码,和有何差别?答:结果是J, 结果是2147483647。

5.运算赋值实验。

编写以下程序,并回答问题。

class Test5{public static void main(String[] args) {byte a = 10。

a = a » 1 o //是否岀错?a »= 1 o 〃是否出错?char c = 'a 寫C = C+lo //是否出错?C+= lo //是否出错?}}(1)程序的错误类型不匹配:不能从int转换为byte ,不能从int转换为char。

(2)改正方式piiblicclass Test5 {publicstatievoid main(String[] args) { byte a = 10。

a =(byte) ( a » l)o// 是否出错?a »= lo //是否出错?char c = 1a'oc =(char) ( c + l)o // 是否出错?C += 1= //是否出错?}(3)运算赋值的特点。

运算赋值时无需强制转换。

6.短路逻辑运算实验。

编写以下程序,并回答问题。

class test6{public static void inain(String[] args) {int x = 1, z = 2oSystem, out. printing第1段测试代码输出”)。

if(false&&(x = (z= 1)))System.out.println(x)oelseSystem.out.println(z)oz = 2© X =1 OSystem.out.printing第2段测试代码输出”)。

if(true&&(x == (z = 1))&&false)System.out.println(x)oelseSystem.out.println(z)ox=0o z = 2oSystem.out.printlnC1第3段测试代码输出”)。

相关主题