1. JAVA控制流程
这部分和C++基本上一样,分支结构可以用if、else,也保留了switch语句,语法和C++一样;循环结构也保留了C++的while、do-while和for循环,不过在java1.5版本增加了for each语句,一般用于访问数组的每一个元素,调用方法是:
for(type element : type[] array)
作用类似于Python的
for element in array:
依然可以用break和continue语句来跳出循环(或代码块),但JAVA提供了一种带标签的break语句,功能上有点类似于C++的goto语句,一般用于直接跳出最外层循环(或是跳出到想要跳出的循环外层),用法是在希望跳出的循环之前加上标签,格式如同C++(标识符 : ),然后调用(break 标签)语句即可。
2. JAVA数组
(1)数组的声明和初始化
JAVA中数组标准的声明方法是使用new运算符:
int[] a = new int[100];
tip:也可以沿用C++风格的int a[],但是提倡使用JAVA风格的int[] a,因为这样就把类型名int[]和变量名分开了。
沿用了C++风格的初始化,如:
int[] a = {1,2,3,4,5};
使用array.length可以得到数组的长度,如以上数组,a.length的值为5。
(2)数组的拷贝
可以直接把一个数组变量赋值(=)给另一个数组变量,但此时它们指向(引用)同一个数组,若要将一个数组的值复制到另一个数组,可以调用Arrays.copyOf或Arrays.copyOfRange方法(后者带下标上下限)。
(3)数组排序
可以直接调用Arrays.sort方法,这个方法使用了优化的快速排序算法。
(4)一些常用的Arrays类的方法(java.util.Arrays)
Arrays.toString(数组变量):将数组转化为字符串,并加上方括号和分隔符,常用于输出整个数组。
Arrays.deepToString(多维数组变量):将多维数组转化为字符串。
Arrays.binarySearch(数组变量,查找值)或Arrays.binarySearch(数组变量,下限,上限,查找值):
使用二分查找法查找指定值,若成功则返回其下标,若失败则返回一个负数r,-r-1是保持数组有序该值应该插入的位置。
Arrays.fill(数组变量,值):将数组的所有元素值设置为指定值。
Arrays.equals(数组变量1,数组变量2):判断两个数组是否长度以及下标相同的元素都相等。
tip:关于JAVA多维数组,实际上是一维数组的嵌套,其中每个数组元素的长度可以不相等,元素类型也可以不同(也就是广义表)。
补充:
Math类中的random方法,Math.random()会产生一个[0 , 1) 的随机数,使用
(int) (n * Math.random);
即可从0~n-1抽取一个随机数(很实用的功能)。
math包中的大数值类(注意是java.math包,区别于java.lang.Math类):
常用的有BigInteger(大整数)和BigDecimal(大浮点数)。