读书笔记——《Java核心编程》

一、检测字符串是否相等,可使用equals方法检测,相等返回true,不然返回false。必定不能用==运算符检测,缘由是这个运算符只可以肯定两个字符串是否放置在同一个位置上。固然若是字符串放置在同一个位置上,他们必然相等,可是,彻底有可能将内容相同的多个字符串的拷贝放置在不一样的位置上。实际上虚拟机中只有字符串常量是共享的(即放置在同一个位置),而用+或substring等操做产生的结果并非共享的。因此极可能会产生那种随机产生的间歇性的bug。java

二、if/else语句的流程图:算法

上图是if - elseif - else语句流程图,switch是另一种变种的if - elseif - else 语句api

三、while的流程图数组

四、do-while的流程图:网络

五、for语句的流程图优化

 

注:图片为网络拷贝的,若有侵权请告知设计

六、java中的标签code

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("程序结束");
}

七、数组的一些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,若是查找成功返回响应的下标值,失败返回负数

八、方法参数,值调用表示方法接收的是调用者提供的值,而引用调用表示方法接收的是调用者提供的变量地址。一个方法能够修改传递引用所对应的值,而不能修改传递值调用所对应的变量值。值得注意的是,对象引用采用的也是值传递,若是想经过一个方法去交换两个对象的引用是不可能成功的,如:

swap(Employee a, Employee b){
  Employee temp = a;
  a = b;
  b = temp;
}

这个是不能成功的,传递进来的a和b只是一个对象引用拷贝,这个只能交换两个对象的引用拷贝,在方法介绍后,a和b被抛弃。

总结:一个方法不能修改一个基本数据类型的参数

一个方法能修改一个对象参数的状态

一个方法不能实现让对象参数引用另外一个新的对象

相关文章
相关标签/搜索