20172328《程序设计与数据结构》第二周学习总结
20172328李馨雨《程序设计与数据结构》第二周学习总结
又到周五,李馨雨同学要开始写博客了。让我们开始吧!(◕ᴗ◕✿)
教材学习内容总结
- 1.首先是String类定义的字符串,然后是
print
和println
的区别、转义字符的学习。(让我印象深刻的\b【回车符】在字符串结尾不显示哈哈,及其更新的\t【换行符】,还有在课堂上真正明白了什么是回车。) - 2.了解变量、常量、赋值语句。变量:保存数据的内存单元。常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限、去修饰符等等。没实践过不能具体说明)。赋值语句:掌握基本运算再加以运用就好。
- 3.基本数据类型:四个整型、两浮点型、字符型和布尔型。
- 4.表达式的学习和运算符类型和功能了解;给你看看运算符的family:求余%、加+、减 -、乘 、除 /、右移>>、左移<<、自增++、自减 --、组合赋值+=、-=、=、/=、%=。运算符优先级:括号你先、乘除夹中、加减跟上、赋值断后。
- 5.数据类型转换及其三种转换技术:压缩类型转换即大变小,容易装不下丢失数据;扩展类型转换即小变大,数据完整性比较高。三种转换技术就是:赋值类型转换【把此类变量赋给彼变量时,此变量自动转换为彼变量类型】、提升类型转换【做一个运算然后将变量类型转换】、强制类型转换【要转变类型的变量前面加(需更新的变量名)】。
- 6.交互式程序!这才是你和计算机聊天的美好程序啊对不对!当然掌握代码、内部含义、熟练应用三部曲不可少。
下面是我手写的总结,字有点丑,你凑合凑合着看吧啊哈哈。
教材学习中的问题和解决过程
- 问题1:SR2-5很有意思,它问代码段输出是什么。很有把握的题目就是考
print
和println
的。结果很遗憾,我写错了。
System.out.print("Ready");
System.out.println();
System.out.println("set");
System.out.println();
System.out.println("co");
当时我以为三个单词中间都两两隔一行。
- 1.(〃'▽'〃)本题解答:结果是Ready和set两行中间没有空行,我后来思考了一会,认为是第一行代码中的print使得第二行的代码失效。嗯是这样。
- 问题2:刚开始敲书上代码时,发现常量名称都是用大写字母来命名。而且书上并没有具体提如何强制修改常量。
- 2.(〃'▽'〃)本题解答:我去详细的找了一下java中的命名规则。如下
强制修改常量的话帖子很少,修改成功率好像也挺低。没做深究。 - 问题3:不太明白字符型究竟是什么?书上说是字符和字符串后面又提到了字符集和char数据类型,当时有点懵ミ゚Д゚彡。
- 3.(〃'▽'〃)本题解答:百度到的结果如下:
字符型量包括字符常量和字符变量。字符串常量是由一对双引号括起的字符序列。字符变量的取值是字符常量,即单个字符。
字符变量的类型说明符是char。字符变量类型说明的格式和书写规则都与整型变量相同。
解决了我的疑惑。
- 4.String是不是基本数据类型?该问题是刘伟康学长提出的问题。我知道不是,但说不出所以然。查阅后的结果作为小总结放在下面吧!
- 4.本题解答:String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。因为,java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。java的8大基本数据类型分别是:
整数类 byte, short, int, long
浮点类 double, float。
逻辑类 boolean文本类 char
代码调试中的问题和解决过程
-
问题1:不会移动文件到其他目录下,很头疼。认为自己命令没问题,但是移动不过去。
-
1.(〃'▽'〃)本题解答:感谢我的室友仇夏和于欣月,教我只能在同一级目录下移动并且要标明具体路径。成功示例
mv src/第二周/java_homework/pp1_3.class bin/第二周
. -
问题2:定义了一个浮点值,结果显示错误,无法编译。
-
2.(〃'▽'〃)本题解答:最后灵机一动。忘记在float类型数据后面加上f,因为系统默认double啊! ̄□ ̄||
-
问题3:关于交互式程序编译完成后,出现两个输入粘连在一起的情况。
-
3.(〃'▽'〃)本题解答:感谢张昊然同学教我把程序中使用Scanner的后两个变量中的next方法中的xxx = scan.nextLine();变量改为xxx = scan.next();就成功喽。看学长在蓝墨云中说再次复制第三条语句,虽然可以解决,原理现在还不太懂。
第一种解决方法原理应该是书上提到的:如果输入数据由一系列空格符分割的单词组成,则每次调用next方法将返回下一个单词。nextLine方法读取所有数值直到输入行结束,并将所读取数据作为一个字符串返回。
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 问题1: Which memory capacity is the largest? (哪个选项的存储容量最大?)
A . 1,500,000,000,000 bytes (1,500,000,000,000个字节)
B . 100 gigabytes (100千兆字节)
C . 3,500,000 kilobytes (3,500,000千字节)
D . 10 terabyte (10太字节)
E . 12,000,000 megabytes (12,000,000百万字节) - 问题1分析和领悟:这道题是很简单的算术题,存储容量从B.KB.MB.GB.PB.TB依次以2的十次方递增。通过简单的运算比较即可得出。
- 问题2:The ability to directly obtain a stored item by referencing its address is known as (通过引用地址直接获得存储项的能力被称为___)
A . random access (随机存取)
B . sequential access (顺序存取)
C . read-only access (只读访问)
D . fetch access (获取访问)
E . volatility (易变性) - 问题2分析和领悟:在书的第十页有一句话解释的很清楚:“直接存取和随机存取两个概念是同一个意义。”
- 问题3:It is important to dissect a problem into manageable pieces before trying to solve the problem because (试图解决问题之前,把一个问题分解成可控制的几部分是很重要的,因为)
A . most problems are too complex to be solved as a single, large activity (大多数问题太复杂,以至于不能作为一个单独大型的活动来解决)
B . most problems are solved by multiple people and it is easy to assign each piece to a separate person (大多数问题都是由很多人解决的而且把每一部分分配给不同的人是很容易的)
C . it is easier to integrate small pieces of a program into one program than it is to integrate one big chunk of code into one program (将程序的小部分整合到一个程序中比将一大块代码整合到一个程序中更容易)
D . our first solution may not solve the problem correctly (我们的第一个方案可能无法正确解决问题)
E . all of the above (以上皆是) - 问题3分析和领悟:应该是选择A。
- 问题4:The main method for a Java program is defined by (Java程序中的主方法是由___定义的)
A . public static main( )
B . public static main(String[ ] args);
C . public static main(String[ ] args)
D . private static main(String[ ] args)
E . the main method could be defined as in A, C or D but not B (主方法可以定义为A,C或者D,但不是B) - 问题4分析和领悟:这个题不应该出错的,因为作为java 程序的开端,其定义后应该是由
{
来开始的。 - 问题5: Which of the following is a legal Java identifier? (下面哪个是合法的Java标识符?)
A . i
B . class
C . ilikeclass!
D . idon'tlikeclass
E . i-like-class - 问题5分析和领悟: 此题目有点小问题,但是还是不应该判断理解失误。标识符是编写程序时用的各种单词。程序中自定义的标识符可以是任何字母、数字、$和下划线的组合且不能以数字开头。class虽然是标识符,但是它是保留字标识符,因此具体分析即可判断。
- 问题6: Which of the following is true regarding Java syntax and semantics? (关于Java的语法和语义,下列哪一项是正确的?)
A . a Java compiler can determine if you have followed proper syntax but not proper semantics (Java编译器可以判定你是否遵循正确的语法,但不能判定正确的语义)
B . a Java compiler can determine if you have followed proper semantics but not proper syntax (Java编译器可以判定你是否遵循正确的语义,但不能判定正确的语法)
C . a Java compiler can determine if you have followed both proper syntax and semantics (Java编译器可以判定你是否遵循正确的语义和语法)
D . a Java compiler cannot determine if you have followed either proper syntax or semantics (Java编译器不能判定你是否遵循正确的语义或语法)
E . a Java compiler can determine if you have followed proper syntax and can determine if you have followed proper semantics if you follow the Java naming convention rules (如果你遵循Java的命名规范,Java编译器就可以判定你是否遵循正确的语法,并且可以判定你是否遵循正确的语义) - 问题6分析和领悟: java编译器可以判断你的语法,但是不能判定语意。因此程序员应对一个程序的精准度负责。
- 问题7: Which of the following would be a good variable name for the current value of a stock? (下面哪个是关于变量“current value of a stock”的最佳命名?)
A . curstoval
B . theCurrentValueOfThisStockIs
C . currentStockVal
D . csv
E . current - 问题7分析和领悟: 命名既要简单又要合理清晰,因此选c才最合适。
- 问题8: A color image is broken down into individual pixels (points), each of which is represented by (一个彩色图像被分解成单个像素(点),其中每个像素表示)
A . a 1 for white and a 0 for black (白色的1和黑色的0)
B . 3 values denoting the intensity of red, green, and blue in the image (3个表示图像中红、绿和蓝色的亮度值)
C . a single number indicating the intensity of color between white and black (一个单独的数字,它表示白色和黑色之间的颜色亮度)
D . two numbers, a value that denotes where between white and black the color is, and a brightness (两个数字,一个表示白色和黑色之间的颜色,另一个表示亮度)
E . none of the above, it is not possible to represent a color image (以上都不是,不可能表示一个彩色图像) - 问题8分析和领悟: 三基色RGB,每基色一个字节(8bit),一个像素可以呈现出2的24次方种颜色,大约是1600多万种。但如果是再引入其他的色彩分量,一个像素可以呈现的色彩数量还可以更多。因此应该选择B,错误的原因主要是将像素和位图没有分清楚。位图是由像素点组成的。
- 分析和领悟:本次错题都主要在简单的概念方面,这说明对于很多知识点没有透彻的把握。将在未来的学习中注意知识点内核要义,从而深入了解。错误让我改正,让我印象更加深刻。
心语(感悟、思考等)
在java的学习中,实践是最有乐趣,虽然极易失败,但是会让人更加珍惜成功编译得到快乐。学习过程中询问和求教很重要,会让你不一样的知识重构和深入理解,就算解决不了,增进一下同学友谊也是好的。哈哈。java的第二周学习还是挺快乐的,尤为是交互式程序的学习和运用。继续前行吧!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/1 | 15/15 | |
第二周 | 377/477(周五) | 1/1 | 16/16 |
参考资料
1.java程序设计教程(第八版)第二章相关内容
2.字符型
3.JAVA反射修改常量,以及其局限