20145319 第二周学习总结

20145319 《Java程序设计》第二周学习总结

教材学习内容总结

本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,大致包括java语言中的类型,变量,运算符,流程以及基础语法等。

1. 类型

基本类型(每种类型都有其储存范围,如超出范围,即Overflow):

  1. 整数:可分为short整数(占2字节),int整数(占4字节),long整数(占8字节)三种,例如,int类型的十进制2其实是以000000000 00000000 00000000 00000000 00000010形式存储在内存中。且所占字节越多的整数类型可表示的整数范围越大。
  2. 字节:即byte类型(占1字节),多用于图像处理,编码处理,也可表示整数,其范围为-128~127
  3. 浮点数:可分为float浮点数(占4字节),double浮点数(占8字节)主要用来储存小数
  4. 字符:char类型(占两字节),用来储存字符符号,如‘亚’ ‘索’。
  5. 布尔:boolean类型,表示true和false。

类类型:详见第四章

2. 变量

  1. 使用前要声明变量类型,即使用上文所提到过的short,byte,char等关键词来声明
  2. 不可以数字开头,不可使用特殊字符,常用“驼峰式”命名法,如“int ageOfStudent”
  3. 在调用变量之前,要对变量初始化,即给变量赋值。ps:如果,在变量赋值后,不打算改变可以加上final,例如final char mid='劫';来防止自己或他人不经意修改
  4. tips:在表示数字常量时,0b表示二进制数,0x表示十六进制数,如int a=0xC,在表示较长的数字时,使用下划线可以使表达更加清楚。如int b=0b1010 _1010 _1010

3. 运算符

  1. 条件运算符(Conditional Operator):条件式?成立返回值:失败返回值。如System.out.println("是否及格?%d%n", score>=60?'yes':'no')
  2. 在逻辑运算符中,&&的特点在于如果&&左边为假,则不论右边真值如何,其逻辑判断返回结果为假;同样的,||的特点在于如果||的左边为真,则不论右边真值如何,其逻辑判断返回结果为真。这在一定的程度上还是能提高代码的编译执行效率。

4. 类型转换

  1. 在实际操作中无论是刻意修改还是无心之失,都会出现将变量类型混淆的情况。例如,在默认情况下,整数均为int型,浮点数为double型。像在如下例子中 float PI = 3.14,3.14默认为double型,不能把double型的小数赋给float型,这样就会丢失精度,编译时就会报错。
  2. 运算时,类型不相同,则运算时会以最长的类型为主。

5. 流程控制

  1. if……else:类比c语言
  2. switch:使用效果类似多个if……else语句连用,但是更为简洁,通过不同的switch值进入case语句。
  3. for:写成for( ……; ……; ……),第一个分号前内容多为变量初始化。第一个分号后为判断,结果为true执行第二个分号后的语句并进入循环,结果为false则结束循环
  4. while:while(条件式){描述句},先判断条件式是否成立,如果成立,则执行描述句。也可以while(true)直接进入循环,在循环内通过if语句判断,达成某种情况依靠break;结束循环
  5. break、continue:break为直接结束循环,continue为结束当前循环,跳过之后的描述语句,然后返回开头进行下一轮循环。break、continue还可以配合标签使用,具体过程将在程序实践中展示。

教材学习中的问题和解决过程

  • 在学习break、continue配合标签使用时,书上的描述并不是很能让人理解,不大能明白break、continue和标签组合的区别所在,所以只能自己编写程序实验,反复编译后才弄明白它们之间的区别
  • java语言和c语言中有许多地方都存在相似之处,但是在c语言中printf("%0.2lf", d);表示把double定义的d精确到两位小数输出,但在java语言中printf("0 and 0 %5d%n",  0&0);表示在输出“0 and 0”之后空五格输出0&0的答案,不知道在java语言中,想要将答案精确到某一位小数后输出应该怎么表示?

代码调试中的问题和解决过程

break、continue配合标签使用

  1. 代码:

     2.  运行结果:

如果continue back1即没有任何结果,输出“helloworld”指令跳过,若continue back2则输出“helloworld”九次

     3.  结论:在此并未贴上break和标签组合的代码,但是通过实际操作还是弄清楚了continue和break与标签组合之间的区别。如,continue中back必须设定在进入循环的前一步……

 

课后作业题1

  1. 代码:

     2.  运行结果:

     3.  思路:思路非常清晰,就是密码数学基础中所学到的辗转相除法,在此通过while语句来实现循环,最后当余数为0时结束循环,a即为它们的最小公因子(ps在初始化时,记得事先给yushu变量赋值,这样才能顺利进入while循环)

课后作业题2

  1. 代码:

      2.  运行结果:

 

      3.  思路:最基本的思路就是使用for语句,通过穷举来找出100~1000中的阿姆斯特朗数,唯一的难点就是将i的个位十位百位上的数分离出来,所以将a,b,c都定义为int型,所以在除法中,即使遇到除不尽的数也会自动取整,从而达到目的将个位十位百位上的数分离出来。

 

其他(感悟、思考等,可选)

  • java中基础语法和c语言中基础语法并没有太大区别,所以可以类比学习,则会事半功倍
  • 对于书上描述感觉模糊不清之处,或者碰到自己左右摇摆不能确定的地方,还是通过与实践相结合的方式来学习效果会更好,即多动手,这样印象也会更深刻

 

学习进度条

|

 

 

代码行数(新增/累积)

博客量(新增/累积)

学习时间(新增/累积)

重要成长

目标

3500行

28篇

300小时

 

第一周

150/150

1/1

20/20

 

第二周

200/350

2/2

40/40

 

第三周

 

 

 

 

第四周

 

 

 

 

参考资料

posted on 2016-03-12 13:43  20145319钟轲  阅读(222)  评论(4编辑  收藏  举报