HeadFirstJava

基本类型 & 引用

  1. 对于一个给定的JVM, 所有引用的大小都相同, 不论他们引用什么对象

  2. 基本类型变量值就是这个变量值的二进制位, 引用变量值也是二进制位

  3. 一个类可以有任意多个 实例变量, 获取方法, 设置方法, 方法

    只有设置方法能更新 实例变量

数学

生成随机数

// 返回 0 - 4之间的一个数
int randNum = (int)(Math.random() * 5);

Math.random() 方法返回0 - 1(不包括1) 之间的一个数, 注意强制转换

也可以用 java.util.Random的nextInt()方法, 这种不需要强转

Java API

“我怎么知道API里有什么?” – 成功的关键

  1. 对一个项目或库的整体组织有帮助, 不再是一大堆杂乱的类, 可以分组到特定功能的包中
  2. 包会提供一个命名作用域, 如果和其他人都创建了一个同名的类, 需要告诉JVM想使用的是哪个包的类
  3. 提供一层安全性, 使得只有同一个包中的其他类能访问那些代码
  4. import 可以让少敲代码, 只是为java提供类全名的方法 运行速度不会因此变慢,也不会膨胀

ArrayList

add(E, e)

将指定元素增加到列表末尾

remove(int index)

删除指定位置上的元素

remove(Object o)

删除指定元素的第一次出现

contains(Object o)

如果列表中还有指定元素, 返回true

indexOf(Object o)

返回元素的第一个索引 或者 -1

get(int index)

返回指定位置的元素

import java.util.ArrayList;

ArrayList <Egg> myList = new ArrayList<Egg>();

// 增
Egg egg1 = new Egg();
myList.add(egg1);
// 查
boolean isIn = myList.contains(egg1);

// 找
int idx = myList.indexOf(egg1);

// 删
myList.remove(egg1);

继承 & 多态

  1. 如果类B扩展类A => 类B是类A
  2. 编译器检查的是引用变量的类, 而不是引用指向的具体对象的类
  3. 如果没有显示扩展另一个类, 所有这样的类都隐含扩展了Object
class Object
{
    boolean equals(); // 确认两个对象是否相等
    Class getClass(); // 返回那个对象的类类型, 即他是从哪个类实例化得来的
    int hashCode(); //  打印对象的一个散列码
    String toString(); // 打印一个字符串, 包含这个类名+数字
}

接口(interface定义 implements实现) & 抽象类

  1. 如果不希望实例化一个类, 就用abstract标记抽象类
  2. 所有抽象方法必须在继承树种的第一个具体子类中实现
  3. 抽象方法没有方法体, 而且声明以一个分号结尾
  4. Java中的每个类要么是类Object的直接子类, 要么是他的间接子类
  5. 如果不做强制类型转换, Object类型的引用变量不能赋给任何其他引用类型
    Dog d = (Dog) x.getObject(aDog);
    
  6. 不能多重继承, 会带来"致命的死亡菱形", 一个类只能有一个直接超类

构造器 & 垃圾回收

  1. 构造器: 调用new时所运行的代码
  2. 构造器没有返回值
    public Duck{
       System.out.println("Quack");
    }
    
  3. 构造器不能继承
  4. 两个构造器不能有相同的参数列表(包括类型和顺序)
  5. super()语句必须放在第一行
  6. 每个构造器可以有一个super()或者this()调用
    import java.awt.color;
    
    class Mini extends  Car{
    private Color color;
    
        // 无参数构造器提供一个默认的color, 并调用重载的实际构造器(调用super()的那个构造器)
        public Mini(){
            this(Color.RED);
        }
    
        // 完成初始化对象具体工作(包括调用super())的实际构造器
        public Mini(Color c){
            super("Mini");
        }
    
        // ERROR  不能同时有super()和this()因为他们都必须位于第一条语句
        public Miini(int size){
            this(Color.RED);
            super(size);
        }
    }
    
  7. “你的父母, 在你之前先到来”

一个对象的超类部分必须先完成构建, 之后新的子类对象才可能存在
8. 寿命

实例变量的寿命与他的对象相同

异常处理

  1. 异常 是一个Exception类型的对象
  2. 抛出异常的方法必须声明它可能抛出异常
  3. 如果要准备处理异常, 把调用包在一个try/catch中, 并把异常处理/恢复代码放在catch块中
  4. 如果无法从异常恢复, 至少使用printStackTrace()得到一个栈轨迹
  5. 编译器不该耐心RuntimeException类型的异常
  6. try成功 => catch块中的代码就不会运行, 转到finally块, 然后再运行方法的其余部分
    try失败, 则try中其余代码不会运行, 转到catch块, catch块完成时, finally块开始运行, 然后再继续运行方法的其余部分
    如果try/catch块中有一个return语句 => finally块还是会运行
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值