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

1、检测字符串是否相等,可以使用equals方法检测,相等返回true,否则返回false。一定不能用==运算符检测,原因是这个运算符只能够确定两个字符串是否放置在同一个位置上。当然如果字符串放置在同一个位置上,他们必然相等,但是,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。实际上虚拟机中只有字符串常量是共享的(即放置在同一个位置),而用+或substring等操作产生的结果并不是共享的。所以很可能会产生那种随机产生的间歇性的bug。

2、if/else语句的流程图:

05114642_kTap.jpg

05114642_7RPo.jpg

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

3、while的流程图

05114642_Hey3.jpg

4、do-while的流程图:

05114642_PfBE.jpg

5、for语句的流程图

05114642_ae4j.jpg

 

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

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被抛弃。

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

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

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

转载于:https://my.oschina.net/u/3470849/blog/1922710

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值