《Java程序设计》第三章-基础语法

20145221《Java程序设计》第三章-基础语法 总结

教材学习内容总结

类型、变量与运算符

类型

  • Java可区分为基本类型(Primitive Type)和类类型(Class Type),其中类类型也叫参考类型(Reference Type)。
  • 字节类型,也叫byte类型,长度为1字节,一般在需要逐字节处理数据时(如图形处理、编码处理等)。
  • 整数又可细分为4种,按照在内存中占用空间的大小可分为:short整数(占2字节)、int整数(占4字节)与long整数(占8字节)。例如,int类型的十进制3其实是以000000000 00000000 00000000 00000000 00000011形式存储在内存中。
  • 浮点数用来表示小数,可分为float型(占4字节)和double型(占8字节)。
  • 字符char类型则用来存储一些字符符号,每个字符占2字节,汉字字符与英文字符在Java中都是用双字节储存。
  • 布尔:只有true和false两种表示。
  • 在JDK5之后,有了printf(),这比较类似C语言中的打印输出语句,其用法也和C语言中的基本一致,需要通过一些格式控制符号来对输出的格式类型进行设置。

变量

  • 变量也好理解,就是在内存中取一个空间,并对其声明类型和命名,而这个空间就是我们说的变量,可以储存相应类型的数据。
  • 关于变量的命名,一般按照驼峰式(Camel Case)命名的方法,以小写字母开始,并在每个单字开始时第一个字母使用大写。
  • 关于变量的使用,在调用变量之前,一定要对该变量进行初始化,即给变量要指定值后才能使用;如果不想后面的操作对变量的值进行更改,在赋值时应该在赋值语句前加上final,例如:final double PI = 3.141596,则后续的操作就不能对其进行重新赋值,否则编译时会报错。
  • 在表示数字常量时,用0b表示二进制数,用0x表示十六进制数。

运算符

  • 在逻辑运算符中,&&的特点在于如果&&左边为假,则不论右边真值如何,其逻辑判断返回结果为假;同样的,||的特点在于如果||的左边为真,则不论右边真值如何,其逻辑判断返回结果为真。这在一定的程度上还是能提高代码的编译执行效率。
  • 在递增、递减运算符中,就要注意运算符是放在变量的左边还是右边,如果运算符在变量左边,则先改变变量值再进行运算,如果运算符在变量右边,则先进行运算再对变量进行相应的加减变化。

类型转换

  • 类型与变量看似简单,但是很多时候编译不通过,可能就是这些细节不注意。Java中对变量类型区分是非常严格的,在不特别指明的情况下,整数一般为int类型,小数则默认为double型,如果不特别注意这些就容易犯错,例如: float PI = 3.14,3.14默认为double型,不能把double型的小数赋给float型,这样就会丢失精度,编译时就会报错。
  • 另一种情况,就是不同类型的操作数在进行运算时要遵循一些原则。如果操作数都是不大于int的整数,则自动全部提升为int类型进行运算;如果运算时,类型不相同,则运算时会以最长的类型为主。

流程控制

if...else条件式

  • 需要注意的是一定要把执行的语句用花括号括起来,否则,默认的是只执行if后的第一句。

switch条件式

  • switch有点像多个分支的if语句,但在某些情况下,用switch可以提高代码的效率,书本上也有相应的例子,不用进入每个if语句去判断,可以通过待判断的值直接进入相应的case,只是注意switch一般都会配以break一起使用,编写代码时不能忘记这一点。

for循环

  • 与C语言中的for循环基本一样,写代码时养成先写##for(;😉##的习惯,这样不会漏必要的元素,如果判断部分没有任何说明,则默认是true,即是一个无限循环。

while循环

  • 当型循环:while(条件式){描述句},先判断条件式的布尔类型,如果成立,则执行描述句。
  • 直到型循环:do{描述句}while(条件式);,特点是先执行一遍描述句,再判断条件,如果条件成立就再执行一遍描述句,直到条件不成立为止。
  • 需要注意的是:while的两种类型的区别,在写法上,注意当型while后没有分号,第二种有分号。

break continue

  • break:结束当前循环。
  • continue: 跳过当前循环一次。
  • break、continue还可以和标签一起配套使用。break与标签配套时,则结束该标签包含的所有语句;continue与标签配套时,则跳过该标签包含的所有语句。

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

  • 这一章内容还算基础,很多地方可以类比C语言进行学习。
  • 在本章开始讲述变量类型时,可能因为没学数据结构的原因,对字节了解的还不是很清楚,所以就在百度百科上了解了一下字节的定义,然后又通过Java的学习视频,学习与字节相关的课程。在课程中,毕老师把一个字节比做一个碗,存储变量体现为盛饭这一过程,很好的解释了字节的含义,又有助于帮助我理解丢失精度溢出等概念。
  • 在介绍break和continue与标签搭配使用这一功能时,还不能太理解,不知道书本上文字描述是什么意思。所以,我照着书上的代码敲在了电脑上,通过不同的搭配(break和continue与标签搭配),反复的编译执行,从屏幕上打印的结果,明白了这些功能的异同。

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

九九乘法表

  1. 代码:
	public class TimeTable{
		public static void main(String[] args){
			int i,j;
			for(j = 1; j < 10; j++){
				for(i = 1; i <= j ; i++){
					System.out.printf("%d*%d=%2d ",i,j,i*j);
				}
				System.out.println();
			}
		}
	}
  1. 运行结果:

  2. 总结:两个for循环的嵌套使用,使打印形式呈现乘法口诀表的格式。由于前面几条口诀乘法(3*3之前)的结果为个位数,与后面的十位数相比差一位,为了左右能对整齐显得美观,故选择控制为%2d,使得不论结果是几位数,都使其占用2个字符的宽度。

课后操作题1

  1. 代码:
	public class Gcd{
		public static void main(String[] args){
			int m = 1000, n = 495, temp;
			while(n != 0){
				temp = m % n;
				m = n;
				n = temp;		
			}
			System.out.println("The gcd of 1000 and 495 is : "+m);
		}
	}
  1. 运行结果:

  2. 总结:以辗转相除法为程序的算法,通过中间变量temp使除法反复执行,最后选取m为最大公因子的值。其中输出语句可以这样输出,也可以通过printf();控制输出格式来输出。

课后操作题2

  1. 代码:
	public class AmstrongNum{
		public static void main(String[] args){
			int i, j, k;
			System.out.print("All of the Amstrong Numbers : ");
			for(int num = 100; num < 1000; num++){
				i = num / 100;
				j = (num / 10) % 10;
				k = num % 10;
				i = i * i * i;
				j = j * j * j;
				k = k * k * k;
				if(i + j + k == num){
					System.out.print(num+" ");
				}
			}
			System.out.println();
		}
	}
  1. 运行结果:

  2. 总结:通过类型转换中的一些特点,提取出任意一个三位数的各位数字,然后再对这些数字进行相应运算,用if语句控制输出,满足条件则输出;否则,进入下一个循环。

其他

  • 这一章的内容总体比较简单,可以类比C语言的知识进行学习。只是要仔细区别两者的异同,不能混淆。对不熟练的知识点要反复巩固,反复练习。
  • C语言中我们一般这样写表示无限循环“while(1)”,因为之前有了“非零为真”这一观念。但在Java中,这样写了编译时则会报错,提示“错误: 不兼容的类型: int无法转换为boolean”,所以在Java程序设计中,条件式一定要是布尔型,非true即false。如果要无限循环,可以这样写“while(true)”。
  • 对书中描述不是很清楚的地方,完全可以把代码敲在电脑上,自己编译几遍,就能弄懂相应的知识点了。如果没有代码,可以自己设置一个情景,编写一个简单的代码,来验证书中的知识点,既学到了知识,也熟练了编程这一过程。

参考资料

posted @ 2016-02-12 13:58  20145221高其  阅读(722)  评论(7编辑  收藏  举报