Java 习题2 参考答案及解析(2)
来源:互联网 发布:9分钟进5球 知乎 编辑:程序博客网 时间:2024/06/04 19:21
习题2 参考答案及解析(1)
3.阅读或调试程序
(1) 上机运行下列程序,注意观察输出的结果。
Javapublic class E{ public static void main(String args[]){ for(int i=20302;i<=20302;i++){ System.out.println((char)i); } }}
(2) 上机调试下列程序,注意System.out.print()和System.out.println()的区别。
Javapublic class OutputData{ public static void main(String args[]){ int x=234,y=432; System.out.println(x+"<"+(2*x)); System.out.print("我输出结果后不回车"); System.out.println("我输出结果后自动回车到下一行"); System.out.println("x+y="+(x+y)); }}
(3)上机调试下列程序,了解基本数据类型数据的取值范围。
Javapublic class E{ public static void main(String args[]){ System.out.println("byte取值范围"+Byte.MIN_VALUE+"至"+Byte.MAX_VALUE); System.out.println("short取值范围"+Short.MIN_VALUE+"至"+Short.MAX_VALUE); System.out.println("int取值范围"+Integer.MIN_VALUE+"至"+Integer.MAX_VALUE); System.out.println("long取值范围"+Long.MIN_VALUE+"至"+Long.MAX_VALUE); System.out.println("float取值范围"+Float.MIN_VALUE+"至"+Float.MAX_VALUE); System.out.println("double取值范围"+Double.MIN_VALUE+"至"+Double.MAX_VALUE); }}
(4)下列程序标注的【代码1】和【代码2】的输出结果是什么?
Javapublic class E { public static void main(String args[]) { long[] a = { 1, 2, 3, 4 }; long[] b = { 100, 200, 300, 400, 500 }; b = a; System.out.println("数组b的长度:" + b.length); //【代码1】 System.out.println("b[0]=" + b[0]); //【代码2】 }}
(5) 下列程序标注的【代码1】和【代码2】的输出结果是什么?
Javapublic class E { public static void main(String args[]) { int[] a = { 10, 20, 30, 40 }, b[] = { { 1, 2 }, { 4, 5, 6, 7 } }; b[0] = a; b[0][1] = b[1][3]; System.out.println(b[0][3]); //【代码1】 System.out.println(a[1]); //【代码2】 }}
答案解析
1.程序使用了一个循环语句,输出的是(char)20302的值,输出的实际上是Unicode表中第20302个字符,运行结果为“低”
2.
System.out.print()输出后不回车,而System.out.println()输出后会自动回车
3.了解基本数据类型数据的取值范围
4.答案:【代码1】:4。【代码2】:b[0]=1。
解析:数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,他们就有完全相同的元素。因此当执行b = a时候,系统会释放最初分配给b的元素后,b和a指向相同的内存地址(引用相同)所以b的长度就是a的长度为4,b[0]=a[0]=1。
我们在C语言中学过指针,指针就是地址,而Java中的引用就和指针十分相似,区别在于指针可以修改例如p++,而引用是无法修改的。在牺牲了灵活性的前提下提升了程序的安全性。
5.答案:【代码1】:40 【代码2】:7
int[] a = { 10, 20, 30, 40 }, b[] = { { 1, 2 }, { 4, 5, 6, 7 } };
我们要注意这条语句,a是一个一维数组,元素分别是10,20,30,40,而b是一个二维数组(相当于int[]b[]这种格式),二维数组中每一个元素都是一个一维数组,而Java的特点是二维数组中的一维数组的长度是没有限制的,是按照你所赋值的最大长度来计算。所以第一个元素为1,2,0,0第二个元素为4,5,6,7。
我们可以把二维数组看成一个矩阵第一个下标代表行,第二个下标代表列
所以数组b可以看成
b[0]=a相当于把a的引用赋值给b[0](b[0]看成一个一维数组),结果变成了
b[0][1] = b[1][3],这样b就变成了
所以输出b[0][3]的值为30,那么问题在于a[1]的值为何是7而不是20呢?是因为a中的值也被修改了,原因就在于a的引用赋值给了b[0],那么b[0]和a指向同一块内存地址,那么如果修改了b[0]中的值,a的值也会跟着相应的改变。
- Java 习题2 参考答案及解析(2)
- Java 习题5 参考答案及解析(2)
- Java 习题5 参考答案及解析(1)
- Java 习题3 参考答案及解析
- Java 习题1 参考答案及解析
- Java 习题6 参考答案及解析
- Java 习题8 参考答案及解析
- Java 习题9 参考答案及解析
- Java 习题7和习题10 参考答案及解析
- Java 习题4 答案及解析
- 计算机应用基础试题及参考答案2
- 习题5.7参考答案(傻瓜版)
- 《机器学习(周志华)》习题11.1 参考答案
- 《机器学习(周志华)》 习题9.4参考答案
- Java编程思想(第2版)章节练习参考答案
- 习题解析2
- C#习题解析 2
- 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案
- 报数游戏-(容斥+二分)
- python初学的笔记
- 图像检索服务器编写问题记录——回忆历次版本更改
- 统计这个字符串在这个文件中出现的次数。
- SAP HANA XS CDS简介
- Java 习题2 参考答案及解析(2)
- Linux之定时任务
- 欢迎使用CSDN-markdown编辑器
- volatile关键字解析
- 4.3 static修饰符
- codevs 1227 方格取数 2 【网络流+费用流基础】
- C++必须在类初始化列表中初始化的几种情况
- java操作hdfs 创建文件 删除文件 读取文件
- 如何用Java代码列出一个目录下所有的文件?