第四章 流程控制和数组
这一章网上有试读,大家可以去下载了看,也可以看我以下的总结。
顺序结构:这个没什么好说的,是门编程语言就有。
分支结构:也就是if...else,太简单,就是写条件语句有个原则:一定要先处理包括范围更小的情况。eg,你要先判断你是男人,再判断你是人,不然就永远到不了你是男人这个条件。
然后就是switch语句后面的表达式类型只能是byte,short,char和int。还有case后面不要忘了break。
循环语句:循环最怕的就是进入死循环这个大家要注意。使用for时要记住:不管是否使用continue来结束本次循环,迭代语句一样是会执行的。
java标签的使用,这个一般大家不太会用,其实也是满好用的,就是加在循环语句前(名字加冒号),使用时break或continue加标签名。这和vb等语言的goto有点相似,但还是有差别的,java只用在循环语句中。
接下来讲数组,数组在java中只能放同种数据类型,但如果你吧数组定义成object,那其实数组中什么对象都可以放。
数组默认分配初始值:
(byte,short,int,long)为0
(float,double)为0.0
(char)为/u0000
(boolean)为false
引用类型为null
JDK1.5后提供了foreach来遍历数组和集合,一般用在输出时使用方便,赋值什么会出现问题,还是老老实实用for为妙。
数组的本质,其实数组在栈存了指针指向堆中的实际数组。
这就是为什么会产生数组可变的假象,eg
- public static void main(String[] args)
- {
- //定义并初始化数组,使用静态初始化
- int[] a = {5, 7 , 20};
- //定义并初始化数组,使用动态初始化
- int[] b = new int[4];
- //输出b数组的长度
- System.out.println("b数组的长度为:" + b.length);
- //循环输出a数组的元素
- for (int i = 0 ; i < a.length ; i++ )
- {
- System.out.println(a[i]);
- }
- //循环输出b数组的元素
- for (int i = 0 ; i < b.length ; i++ )
- {
- System.out.println(b[i]);
- }
- //因为a是int[]类型,b也是int[]类型,所以可以将a的值赋给b。
- //也就是让b引用指向a引用指向的数组
- b = a;
- //再次输出b数组的长度
- System.out.println("b数组的长度为:" + b.length);
- }
书中举的一个数组使用实例
- public class Num2Rmb
- {
- private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
- "伍" , "陆" , "柒" , "捌" , "玖"};
- private String[] unitArr = {"十" , "百" , "千"};
- /**
- * 把一个浮点数分解成整数部分和小数部分字符串
- * @param num 需要被分解的浮点数
- * @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分。
- */
- private String[] divide(double num)
- {
- //将一个浮点数强制类型转换为long,即得到它的整数部分
- long zheng = (long)num;
- //浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到2位小数
- long xiao = Math.round((num - zheng) * 100);
- //下面用了2种方法把整数转换为字符串
- return new String[]{zheng + "", String.valueOf(xiao)};
- }
- /**
- * 把一个四位的数字字符串变成汉字字符串
- * @param numStr 需要被转换的四位的数字字符串
- * @return 四位的数字字符串被转换成的汉字字符串。
- */
- private String toHanStr(String numStr)
- {
- String result = "";
- int numLen = numStr.length();
- //依次遍历数字字符串的每一位数字
- for (int i = 0 ; i < numLen ; i++ )
- {
- //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
- //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
- int num = numStr.charAt(i) - 48;
- //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
- if ( i != numLen - 1 && num != 0)
- {
- result += hanArr[num] + unitArr[numLen - 2 - i];
- }
- //否则不要添加单位
- else
- {
- result += hanArr[num];
- }
- }
- return result;
- }
- public static void main(String[] args)
- {
- Num2Rmb nr = new Num2Rmb();
- //测试把一个浮点数分解成整数部分和小数部分
- System.out.println(Arrays.toString(nr.divide(236711125.123)));
- //测试把一个四位的数字字符串变成汉字字符串
- System.out.println(nr.toHanStr("609"));
- }
- }