zoukankan      html  css  js  c++  java
  • java核心技术 卷1 基础知识—对象与继承

    《Java核心技术 卷1 基础知识》第4-5章

    在Java中没有类就无法做任何事情

    new操作符的返回值是一个引用

    在Java中,如果使用一个未初始化的指针,运行系统会产生一个运行时错误。

    Date 用来表示时间点
    LocalDate 日历表示法
    不推荐使用Date类来处理日历
    推荐使用LocalDate来处理日历

    每一个拥有名字的类都会被编译生成对应的class文件

    所有的Java对象都是在堆中构造的,构造器总是随着new操作符一起使用

    在Java中,所有的方法都必须在类的内部定义,但并不表示它们是内联方法,是否将某个方法设置为内联方法是Java虚拟机的任务

    建议使用类名来调用静态方法

    每个类都可以有一个main方法,这是一个常用于对类进行单元测试的技巧

    要完整描述一个方法,需要给出方法名以及参数类型。这也叫做方法的签名
    返回类型不是方法签名的一部分

    默认初始化:
    数值为0 布尔值为false 对象引用为null

    可以为任何一个类添加finalize方法。该方法将在垃圾回收器清除对象之前调用。
    在实际应用中,不要依赖于finalize方法回收任何短缺的资源,这是因为很难知道这个犯法什么时候才能够调用

    不允许扩展的类被称为final类

    包含一个或者多个抽象方法的类本身必须被声明为抽象的

    类即使不含有抽象方法,也可以将类声明为抽象类

    抽象类不能被实例化

    Java中的protected对所有子类和同一个包中的所有其他类都可见,与C++中的保护机制稍有不同
    Java中的protected的安全性较差

    Object类是所有类的超类
    Object类型的变量可以引用任何类型的对象
    在Java中只有基本类型不是对象,例如数值、字符和布尔类型的值都不是对象

    Object的equals方法:用于检测一个对象是否等于另一个对象,即判断这两个对象是否具有相同的引用
    Object的hashCode方法,由对象导出哈希值,即返回对象的散列码
    Object的toString方法,返回对象值的字符串
    Object的getClass方法,返回包含对象信息的类对象
    Object的getName方法,返回这个类的名字
    Object的getSuperclass方法,返回这个类的超类信息

    尽管Java允许在运行时确定数组的大小,但没有完全解决运行时动态更换数组的问题,
    一旦确定了数组的大小,改变它就太不容易了,于是就有了ArrayList类,它具有自动调节数组容量的功能

    ArrayList是一个使用类型参数的泛型类,为了指定数组列表保存的元素对象类型,需要用已对尖括号将类名括起来加在后面
    类似于 C++的vector模板,都是泛型类型

    但ArrayList的元素访问比较复杂,需要使用set或者get实现改变或者访问数组元素的操作

    所有的基本类型都有一个与之对应的类,这些类称为包装器
    自动装箱或者自动打包:指基本类型自动转换为对应的类的实例
    装箱和拆箱是编译器认可的,而不是虚拟机,编译器在生成类的字节码时,插入必要的方法调用,虚拟机只是执行这些字节码

    java设计者还将一些基本方法放置在包装器中,如将字符串转换为整形
    int x = Integer.parseInt(s);
    这里与Intger对象没有任何关系,parseInt是一个静态方法,但Integer类是放置这个方法的一个好地方。

    lambda表达式就是一个代码块,以及必须传入代码的变量规范
    即 参数,箭头(->)以及一个表达式。
    ()->代码块;
    但有时()会被省略,但不建议省略。

    对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式的接口,这种接口称之为函数式接口。
    例子:
    Comparator就是只有一个方法的接口,所以可以提供一个lambda表达式的值
    Arrays.sort(words,(first,seccond)->first.length()-second.length())

  • 相关阅读:
    Codeforces Round #251 (Div. 2) A
    topcoder SRM 623 DIV2 CatAndRat
    topcoder SRM 623 DIV2 CatchTheBeatEasy
    topcoder SRM 622 DIV2 FibonacciDiv2
    topcoder SRM 622 DIV2 BoxesDiv2
    Leetcode Linked List Cycle II
    leetcode Linked List Cycle
    Leetcode Search Insert Position
    关于vim插件
    Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
  • 原文地址:https://www.cnblogs.com/ASE265/p/12236824.html
Copyright © 2011-2022 走看看