20165315 第二周学习总结
本周学习中遇到的问题和解决过程
- 在学习第二章的时候,我在输入课后练习3.(5)中的程序时,不理解为什么输出结果会是如图:
我认为应该输出的是40和20。
解决过程: 在仔细学习了有关数组的相关知识后,我认为问题就是理解b[0] = a;
这一行代码的意思,这里不仅仅是将a这个数组的值赋给了数组b的第一行,而是在执行b[0][1]=b[1][3];
这行代码时,和C语言不同,a数组的值也随之变化,从而a[1]
的值变成了7。
- 在编写第二章课后练习4.(1)时,我发现如何编译都报错(如图):
解决过程: 我使用的希腊字母是电脑自带的数学符号中找的,而这个版本的希腊字母实际上与Unicode中的希腊字母不同,故电脑无法在Unicode中找到识别,从而报错。我在网上找到正规的符号后复制粘贴到代码中,便可以正常编译运行了。
- 在编写第三章课后练习4.(2)时,我发现无法调用C语言中的
sqrt()
函数
解决过程: 在网上查找后发现,在Java程序语言中,可以调用Math.sqrt()
函数进行运算。
- 在编写第三章课后练习4.(5)时,运行时发现结果总是不正确:
解决过程:
如图:
- 在编写第三章课后练习4.(6)时,进行编译时总是出现如图问题:
解决过程: 经过检查发现,原来是少了一个右括号...编程的时候太不仔细了...
学习总结
在第二章第三章的学习中,我学到了许多全新的概念,比如:
- 逻辑类型
boolean
- Java中没有无符号的
byte
、short
、int
、long
,即不能使用unsigned int m;
等符号声明 - Java中的
char
一定是无符号的,但是不能使用unsigned
修饰 - Java不可以在数组的方括号内指定数组元素的个数,且数组属于引用型变量,声明数组和创建数组可以一起完成:
float boy[] = new float[4];
System.out.println(a);
输出的是数组a全部元素的值,System.out.println(""+a)
输出的是数组a的引用- 逻辑运算是先确定a的真值,而位运算是先确定a和b的真值,再比较
instanceof
运算符:左面的操作元是一个对象,右面的是一个类,当左面的对象是右面的类或子类创建的对象是,运算结果为true
,否则为false
switch
语句中表达式的值可以是byte
、short
、int
、char
型,但不可以是long
型数据- JDK1.5对
for
语句的功能给予了扩充,以便更好地遍历数组:for(声明循环变量:数组的名字)
,这种表示方法可以理解为“对于循环变量依次取数组的每一个元素的值” Scanner
是JDK1.5新增的一个类,可以使用该类来创建一个对象:Scanner reader = new Scanner(System.in);
,然后reader
对象调用下列方法:nextBoolean
、nextByte
等等,在从键盘输入数据时,经常让reader
对象先调用hasNextXXX()
方法等待用户在键盘输入数据,然后再调用nextXXX()
方法获取用户输入的数据
在本周敲打代码的过程中,我欣喜的发现我对Java语言更加熟悉了,已经能自行编写一些简单的代码,虽然在编写的过程中经常犯错,但我认为在接下来的学习过程中,我一定能有更大的进步。
脚本运行结果的截图
第二周查漏补缺
课下练习无答案,但是有不确定的题
表达式15&250的值为
A . FF
B . 0
C . 255
D . 1
这道题我感觉没有正确选项,正确答案应该是10
下列说法正确的是
A . Java语言有8种基本数据类型。
B . 基本数据类型可分为逻辑类型、整数类型、字符类型、浮点类型。
C . short和Float都属于基本数据类型。
D . int a = 0144中的0144是十六进制表示法。
这道题的C选项中Float
是可以通过编译且运行的:
所以我不确定Float
究竟属不属于基本数据类型
在命令行输入“java demo 3”,下列程序的运行结果为
public class unsigned {
public static void main(String args[]) {
int i = Integer.parseInt(args[0]);
switch(i) {
case 1:System.out.println("Spring");break;
case 2:System.out.println("Summer");break;
case 3:System.out.println("Autumn");break;
case 4:System.out.println("Winter");break;
}
}
}
A . Spring
B . Summer
C . Autumn
D . Winter
这道题我也不是很理解,在网上查询后得知int i = Integer.parseInt(args[0]);
这句代码的意思是args[0]
是java中启动参数的第一个值,在命令行通过键盘可以输入,parseInt(args[0])
就是将数组里的第一个数据转换成int
型,所以键盘输入的3就是第一个数据,i
就等于3,不知道是不是这样理解的
表达式-2 >>> 1的值为
A . 2^31 – 1
B . 2^15 – 1
C . 1
D . -1
这道题中>>>
的意思是带符号右移,即从10000010
变为01000001
,结果为A
在出解析后我会认真学习,补上这些知识漏洞