Think in Java 笔记【2-4章】

第二章

  • java操纵内存中元素:由于一切皆对象,可以单一语法,标识符只是一个引用,并不是对象本身。 ex:String s;
  • RAM中的堆栈 存储对象的引用,堆中存放对象本身(存储分配和清理可能笔堆栈需要更多时间)new 出来的
  • 基本类型的变量直接存储“值”在堆栈中,因为更高效,基本类型都有对应包装类对象 存在堆中 JDK5中加入自动装拆包
  • BigInteger BigDecimal 支持任意精度 以速度换精度
  • class 包含:fields(基本类型有默认赋值;基本类型数组也有默认赋值) contractor method 组成
  • 方法签名 = 方法名称 + 参数列表(有序) 但不包括返回值 但是子类中从父类中有返回值类型改成void 编译回报错
  • java中 参数传递 是:值传递 基本类型 = 实际存储的“值” 引用类型 = 指向堆内存中的引用
  • java2开发时遇到问题,所有packageName都是小写字母
  • static关键字 被修饰的field 和 method 不和包含它的class的实例关联在一起,static修饰的field只有一份,class所有实例共享
  • javadoc命令采用了部分来自Java编译器的技术,查找注释标记,将毗邻注释的类名或方法名提取出来输出HTML 文件
  • javadoc只能给public 和 protected成员进行注释
  • javadoc便签:
    • @since 最早开始使用的版本
    • @see 在文档中加入一个超链接的“See Also”
    • @version 版本信息
    • @deprecated 表示被修饰的对象已经改进,未来可能会被摒弃

第三章

  • 操作符接受一个或多个参数,并生成一个新值

  • 赋值 基本类型赋值(是直接将一个地方的内容复制到另一个地方) 引用类型(将我的引用复制给你)

  • == 与 equals()方法

  • 直接常量 or 字面值 Integer Long 的方法 toBinaryString() 可以看二进制

  • 按位操作符 对整数的二进制表示,每一位去做 1和0 的逻辑运算 ex: 6 & 11 = 2 --> 6(0110) & 11(1011) = 2(0010)

    • 按位与 a & b
    • 按位或 a | b
    • 按位异或 a ^ b 相同为false 不同为true
    • 按位取反 ~a
    • 左移 a << b
    • 带符号右移 a >> b
    • 无符号右移 a>>> b
  • | 与 || 、& 与 && 的不同:当两个操作数是数字时,|,&是按位操作

  • 移位操作符

    • 待补充
  • 使用操作符常见错误

    • while(x = y) {} 在C++中这个代码不会出错(y非零 赋值语句左边返回值为true),但是java中赋值语句返回的是右边的值,编译报错
    • 基本类型转换 基本数据类型隐式转换
  • 类型转换

    • 窄化转换 高转低 可能造成精度丢失,需要强制类型转换

      • 浮点型 -> 整型 截尾
      double d1 = 2.39f;
      double d2 = 2.99f;
      int aInt = 0;
      int bInt = 0;
      
      System.out.println(aInt = (int) d1);
      System.out.println(bInt = (int) d1);
      //outPut:
      2
      2
      
    • 扩展转换 低转高 不会造成丢失,隐式类型转换

      • 基本类型算术运算or按位运算(char byte short)会自动转换成int
    • java允许任何基础类型转换成别的基础类型,除布尔型

    • 通常,表达式中最大的数据类型决定表达式最后的数据类型

    • 如果对两个足够大的int 值执行乘法运算,结果值就会溢出

        int big = 0x7fffffff; // max int value
        prt("big = " + big);
        int bigger = big * 4;
        prt("bigger = " + bigger);
        }
        static void prt(String s) {
        System.out.println(s);
        }
      

      第四章

      • for 知道循环次数 while 不知道循环次数
      • while 和 do while 后者多执行一次
      • JDK5引入foreach
      • break退出循环,continue开始下一次迭代
      • switch语法 [java5增加的 enum 可以放入条件表达式中使用]
          Integer integer = 0;
          switch (integer) {
              case 1:
                  System.out.println("false");
                  break;
              case 2:
                  System.out.println("true");
                  break;
              default:
                  System.out.println("error");
          }
      
      • switch条件中能够包含[1.5 enum, 1.7 String(不能为null), byte, short, int, char]
posted @ 2018-10-10 13:38  拷贝程序员_厚厚北  阅读(115)  评论(0编辑  收藏  举报