1、检测字符串是否相等,可以使用equals方法检测,相等返回true,否则返回false。一定不能用==运算符检测,原因是这个运算符只能够确定两个字符串是否放置在同一个位置上。当然如果字符串放置在同一个位置上,他们必然相等,但是,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。实际上虚拟机中只有字符串常量是共享的(即放置在同一个位置),而用+或substring等操作产生的结果并不是共享的。所以很可能会产生那种随机产生的间歇性的bug。
2、if/else语句的流程图:
上图是if - elseif - else语句流程图,switch是另外一种变种的if - elseif - else 语句
3、while的流程图
4、do-while的流程图:
5、for语句的流程图
注:图片为网络拷贝的,如有侵权请告知
6、java中的标签
Java 中的标签是为循环设计的,是为了在多重循环中方便的使用break 和coutinue 。以下实例当在循环中使用 break 或 continue 循环时跳到指定的标签处:
public static void main(String[] args) {
// 标签名:
// 标签是配合continue和break来使用,break out; 在标签名为out的后面的所有循环终止
// continue out; 跳过后面的所有内容,从标签名为out处开始下一次迭代循环
// 标签后面必须是循环
// 一般适用于嵌套循环
boolean b = true;
int i = 0;
System.out.println("外层循环开始执行");
out: while (b) {
i++;
System.out.println("内层循环开始执行");
int j = 0;
in: while (b) {
j++;
if (j == 5) {
System.out.println("内层continue");
continue;
}
if (j == 10) {
System.out.println("内层break");
break in;
}
System.out.println("j=" + j);
}
if (i == 3) {
System.out.println("外层continue");
continue;
}
if (i == 5) {
System.out.println("外层break");
break;
}
System.out.println("i=" + i);
}
System.out.println("程序结束");
}
7、数组的一些api
System.arrayCopy(Object from,int fromIndex,Object to,int toIndex,int count)
将第一个数组中的元素拷贝到第二个数组中,就是把from中的元素从from开始拷贝count个元素到to数组的toIndex后
from 任意类型的数组
fromIndex 原始数组中待拷贝元素的起始下标
to 与from同类型的数组
toIndex 目标数组中放置拷贝元素的起始下标
count 拷贝元素数量
Arrays中操作数组的方法
copyOf(type[] a ,int start,int end)
和上面的方法作用类似
toString(type[] a)
返回a中数据元素的字符串,这些数据元素被放在括号内,并用逗号分隔,这个常用于一维数组,如果多维数组的会要用deepToString
sort(type[] a)
对a数组进行排序,采用的是优化的快速排序法
binarySearch(type[] a,type v)
采用二分搜索算法查找值v,如果查找成功返回响应的下标值,失败返回负数
8、方法参数,值调用表示方法接收的是调用者提供的值,而引用调用表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的值,而不能修改传递值调用所对应的变量值。值得注意的是,对象引用采用的也是值传递,如果想通过一个方法去交换两个对象的引用是不可能成功的,如:
swap(Employee a, Employee b){
Employee temp = a;
a = b;
b = temp;
}
这个是不能成功的,传递进来的a和b只是一个对象引用拷贝,这个只能交换两个对象的引用拷贝,在方法介绍后,a和b被抛弃。
总结:一个方法不能修改一个基本数据类型的参数
一个方法能修改一个对象参数的状态
一个方法不能实现让对象参数引用另一个新的对象