Java读书笔记04 控制流程 大数值 数组

    

  本文是Java基础知识部分 关于控制流程、大数值和数组。  

 

控制流程

 

与C++不同的地方:

  在C++中可以在嵌套的块中重定义一个变量,内层覆盖外层,但是Java不允许在嵌套的两个块中声明同名的变量。

  Java的控制流程和C++的控制流程基本一样,只有很少例外的情况。没有goto语句,但break可以带标签,可以利用它以达到从内层循环中直接跳出外层循环的目的。

控制流程:

  条件语句:if else

  循环:while、 do while、for、

  多重选择:switch

  中断控制流程语句:

  Java提供了一种带标签的break语句,用于跳出多重循环

  注意:标签必须放在最外层的循环之前,并且必须紧跟一个冒号。

  也可以将标签放在语句块前面,这样可以在该语句块中用break跳出到该语句块的后面。

  continue语句将控制转移到内层循环的首部,用在for循环中时,跳到循环更新部分(for的第三部分),还有带标签的continue语句,跳到与标签匹配的循环首部。

 

大数值

  当基本的整数和浮点数精度不能满足需求,可以使用java.math包中的BigInteger和BigDecimal

  使用静态的valueOf方法把普通数值转换为大数值:

  BigInteger a = BigInteger.valueOf(100);

  与C++不同,Java没有提供运算符重载功能。

  大数值需要使用add、subtract、multiply、divide方法实现加减乘除。

  计算商必须给出舍入方法,RoundingMode.HALF_UP是四舍五入

 

数组

  声明数组的两种形式

  int[] a;

  int a[];

  创建数组用new运算符:

  int[] a = new int[100];

  []运算符会检查数组的边界,超出数组界限访问元素时会引发异常。

  没有指针运算,即不能进行指针的加减。

  a.length得到元素个数。

  数组不能改变大小,如果需要在运行过程中扩展数组的大小,应该使用ArrayList

 

循环遍历:

  Java提供了一个类似于C#中的foreach语句

  for(variable:collection) statement;

  循环集合中的每一个元素,而不需要使用下标值。

  集合表达式必须是一个数组或者一个实现了Iterable接口的类。

  例如:

  for(int element:a)

  System.out.println(element);

 

数组拷贝:

  数组变量用=拷贝的时候,两个变量将引用同一个数组。

  如果希望将一个数组的所有值拷贝到另一个数组去,需要使用System类的arraycopy方法

  System.arraycopy(from,fromIndex,to,toIndex,count)

 

main方法参数:

  main方法参数String[] args接收一个字符串数组

  执行java ClassName 后跟字符数组即可。

 

Arrays类中的方法:

  java.util.Arrays

  排序:static void sort(type[] a);

  使用Arrays.sort(a);

  这个方法使用了优化的快速排序算法。

  查找:static int binarySearch(type[] a, type v)

  使用二分搜索算法查找值v,找到则返回相应下标,否则返回一个负值。a为有序数组,返回的-r~1为保持有序v应插入的位置。

  数组填充:fill。比较数组:equals。

 

多维数组:

  多维数组其实被解释为数组的数组,所以可以构造不规则的数组。

posted @ 2012-08-15 20:48  圣骑士wind  阅读(1097)  评论(0编辑  收藏  举报