Java基础随笔

  • Java大部分情况下是通过new关键词新建一个对象,跟C++类似,也是将标识符当作一个指针,指向堆中的实际空间。如果直接像C++一样在栈中给对象分配空间,是不行的,没有实际空间。

  • Java的new关键词会给类中变量赋初始值(类似C++中的全局变量),而C++不会。

  • Java有构造函数,但他没有析构函数。

  • 可以将多个类定义在一个.java文件中,但只能有一个类是public。

  • this指针可以代替类的构造函数。

  • Java只能单根继承,C++可以多重继承。

  • 不写extends,默认继承java.lang.Object类,所以Java的类存在一些默认方法。

  • super()是指向父类的应用,类似于this指针。如果子类没有调用父类构造函数,在子类构造函数中会默认调用super(),即调用父类默认构造函数。

  • Java抽象类需要关键字abstract,他没有办法被new,他的子类必须实现父亲们的所有抽象方法,不然也要变成抽象类。

  • 如果一个类中都为抽象函数,那么这个类定义为接口(interface|没有class关键字),一个类可以实现多个接口(implement),接口可以继承多个接口,继承和实现不冲突,接口的方法默认public,可以不写。

  • 子类可以进行类型转换成父类,父类在一定条件下也可以转换为子类(父类本身由子类得来)。

  • Java中多态不用virtual关键字。不用像C++实现多态用基类指针或者是用函数中的基类引用调用,直接用基类名字就可以实现多态。

  • 静态变量和方法可以直接通过类名调用,静态方法不能引用非静态方法,不能使用非静态变量。

  • 类中方法执行顺序:static代码块(new之前,只执行一次) > 匿名代码块(new之后) >构造函数(new之后)

  • 单例模式:一个类有且只有一个对象

    在Java中通过private隐藏构造函数(只用来new内部的那个static对象),用一个静态方法返回一个自身的static对象来实现单例模式。

  • final类不能被继承

    final方法子类不可修改

    final变量不能更改他的值

    final对象不能修改他的指针,但是可以修改对象里面的值

  • import放在package后面

    package用来给java文件打包,一般用路径作为包名申明在开头

    import用来引用包

  • Java的bool值默认为false,C++中永远不要让编译器帮你决定。除此之外int的默认值为0,String的默认值为null

  • 可以用instanceof方法来判断一个对象是不是某个类的子类对象。

  • interface可以定义静态字段,但是必须为final类型,因为是必须的,所以可以省略,编译器会自动加上。

  • 字段或者方法没有private等修饰词,那么他就是包作用域的字段和方法,修饰词为default

  • 字符串相比较应该用equals()方法,不能用==

  • 重写父类方法不能降低访问权限,可以提高访问权限。

  • String类中==比较的是两个变量的引用是否相同,比较要用.equals()

posted @ 2019-08-05 11:13  夜烛灯花  阅读(145)  评论(0编辑  收藏  举报