20145206 《Java程序设计》第2周学习总结
教材学习内容总结
一、类型
- Java可区分为基本类型和类类型两大类型系统,其中,类类型也称为参考类型。
- 在Java中的基本类型主要可区分为整数、字节、浮点数、字符与布尔。整数:可细分为short 整数(占两字节)、int 整数(占4字节)与long整数(占8字节);字节:byte类型顾名思义,长度就是一字节,若用于表示整数,byte可表示-128~127的整数;浮点数:主要用来储存小数数值,可分为float浮点数(占4字节)与double浮点数(占8字节);字符:每个字符类型占2字节,汉字字符与英文字符在Java中同样都是用双字节储存;布尔:boolean类型可表示true与false,分别代表逻辑的“真”与“假”
- 批注问题:单行批注“//”;多行批注“/”与“/”。
- System.out.println(),这会在标准输出中显示文字后换行,如果使用System.out.print()则输出文字后不会换行,其中f就是format的意思,也就是格式化。
二、变量
- 基本规则:变量在命名时有一些规则,它不可以使用数字作为开头,也不可以使用一些特殊字符;而变量名称不可以与Java的关键字同名,也不可以与Java保留字同名;命名习惯,通常会以小写字母开始,并在每个单字开始时第一个字母使用大写,这种命名方法称为驼峰式命名法。在Java中,不可以声明局部变量后未指定任何值给它之前就使用变量;如果在指定变量值之后,就不想再改变变量值,可以在声明变量时加上final限定。
- 字面变量:在Java中写下一个值,该值称为字面常数;要表示字符的话,必须使用“'”符号括住字符。
- 数字常量表示法:有时候,想要以二进制方式表示某个值,则可以用0b作为开头。
三、运算符
- 算数运算:“+、-、*、/”;模数运算符:%;算数运算符使用上与学过的加减乘除一样,也是先乘除后加减。
- 比较、条件运算:“>、>=、<、<=、==、!=",比较条件成立时以boolean类型true表示,比较条件不成立时以false表示。条件运算符:条件式?成立返回值:失败返回值。
- 逻辑运算:“&&、||、!”&&与||有所谓快捷方式运算:只要左操作数评估为false,就会直接返回false,对||来说,只要左操作数评估为true,就会直接返回true,就不会再去运算右操作数。
- 位运算:“&、|、^、~”“<<、>>"左移被挤出去的位会被丢弃,右边补0;右移被挤出去的位会被丢弃,如果左边原来是什么就补什么;“>>>”这个运算符在右移后,最左边一定补0.
- 递增、递减运算:将++或——写在变量前,表示先将变量值加或减一,再返回变量值;将++或--写在变量后,表示先返回变量值再对变量加或减一。
- 指定运算:“+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>="
四、类型转换
整数中默认类型为int型;小数中默认类型为double型;如果表达式中包括不同类型数值,则运算时以长度最长的类型为主,其他数值自动提升类型。
五、if...else条件式、switch条件式、for循环、while循环、break、continue
这一部分在C语言学习时就已经了解,在这里只总结一下自认为不太熟悉的知识点。
switch在效率上比if...else要好;for循环中,在一个描述区块中若想写两个以上的描述语句,则使用逗号做分隔;do...while:后测试循环;break与continue还可以配合标签使用。
教材学习中的问题和解决过程
问题一:在视频学习中,发现有这样一段代码:System.out.println(60);运行结果是打印出60这个数字,于是产生困惑,为什么不用加双引号呢?就像System.out.println(“Hello World"); 解决过程:问了一些同学,但现在还没有明确的解释。
问题二:byte b=2;这个赋值语句,2默认为int型,按理来说不能赋值给byte型啊,这样会丢失精度的。 解决过程:看了视频,觉得了解一些,但对类型转换这方面还是有些不熟练,需要继续巩固。
代码调试中的问题和解决过程
在IDE中进行书上代码调试:
代码一:
代码二:
代码三:
总结:其中第三个代码要特别注意空格问题,之前由于没有注意这个问题导致运行了很多次,出现的效果都连在一起,无法分辨每一个的结果,后来经过调整成功了。
其他(感悟、思考等,可选)
本章的学习感觉虽然知识点较多,比较琐碎,但内容还是比较简单的,很多知识在学习C语言时就已经掌握了,比起第一二章抽象的东西觉得第三章比较容易理解,但还是有一些小的知识点理解的不够透彻,比如说类型转换,比如说break与continue还可以配合标签使用,还需要多花时间在这上面,毕竟本章的内容是基础,学好基本语法才能在以后的学习中不吃力。
课后练习题:
操作题1:
public class Zuida { public static void main(String[] args) { int m=1000,n=495,i; for(i=n;i>=1;i--) { if(m%i==0&&n%i==0) break; } System.out.println(i); } }
运行结果:
操作题2:
public class amu { public static void main(String[] args) { int i,m,n,p,q,w; for(i=100;i<=999;i++) { m = i % 10; n = (i - m) % 100; p = (i - m - n) % 1000; q=n/10; w=p/100; if (m * m * m + q*q*q + w*w*w == i) System.out.println(i); } } }
运行结果:
总结:第一个操作题因为在C语言时就已经练习编写过,所以容易一些;在进行第二个操作题时,在分离百位、十位、个位时出错,导致运行不出结果,后来经过修改成功执行。
托管代码:
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/2 | 10/15 | 编译helloworld程序 |
第二周 | 100/200 | 2/4 | 15/30 | 会使用IDE并成功运行代码 |