java笔记01

条件运算符

x?y:z

其中x为boolean类型表达式,先计算x的值,若为true,则运算结果为表达式y的值;否则整个运算结果为表达式z的值。

构造方法:

  1. 通过new关键字调用;
  2. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里面用return返回某个值;
  3. 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加;
  4. 构造器的方法名必须和类名一致。
  5. 构造方法的第一句总是super(),可不写。

创建一个对象分为如下四步:

  1. 分配对象空间,并将对象成员变量初始化为0或空或false;
  2. 执行属性值的显式初始化;
  3. 执行构造方法;
  4. 返回对象的地址给相关的变量。

this 的本职就是“创建好的对象的地址”。由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。this不能用于static方法中

static关键字

  1. 在类中,用static声明的成员变量称为静态成员变量,也称为类变量。类变量的生命周期与类相同,在整个应用程序执行期间都有效。

final关键字

  1. 修饰变量:被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值;
  2. 修饰方法:该方法不可被子类重写。但可以重载;
  3. 修饰类:修饰的类不能被继承。比如Math、String

继承extends

  1. java中类只有单继承,接口有多继承
  2. 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有的属性和方法)
  3. 定义一个类,没有调用extends时,则它的父类是:java.lang.Object

instanceof运算符

  1. 左边是对象,右边是类;当对象是右边类或子类所创建的对象是时,返回true;否则,返回flase。

==和equals方法

  1. == 代表比较双方是否相同。如果是基本类型则表示值相同,如果是引用类型则表示地址相等即是同一个对象
  2. equals 默认比较两个对象的hashcode

super关键字

  1. super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性
    public class TestSuper01 { 
        public static void main(String[] args) {
            new ChildClass().f();
        }
    }
    class FatherClass {
        public int value;
        public void f(){
            value = 100;
            System.out.println ("FatherClass.value="+value);
        }
    }
    class ChildClass extends FatherClass {
        public int value;
        public void f() {
            super.f();  //调用父类对象的普通方法
            value = 200;
            System.out.println("ChildClass.value="+value);
            System.out.println(value);
            System.out.println(super.value); //调用父类对象的成员变量
        }
    }

  2. 构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。
    public class TestSuper02 { 
        public static void main(String[] args) {
            System.out.println("开始创建一个ChildClass对象......");
            new ChildClass();
        }
    }
    class FatherClass {
        public FatherClass() {
            System.out.println("创建FatherClass");
        }
    }
    class ChildClass extends FatherClass {
        public ChildClass() {
            System.out.println("创建ChildClass");
        }
    }

封装使用细节:类的属性的处理:

      1. 一般使用private访问权限。

      2.  提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头!)。

      3. 一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰。

多态

  1. 多态指的是同一个方法的调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同;
  2. 多态是方法的多态,不是属性的多态
  3. 多态的存在要有三个必要条件:继承,方法重写,父类引用指向子类对象
  4. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

抽象类abstract

  1. 有抽象方法的类只能定义为抽象类
  2. 抽象类不能实例化,既不能用new来实例化抽象类
  3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用
  4. 抽象类只能用来被继承
  5. 抽象方法必须被子类实现
  6. 抽象方法只有声明,没有实现

接口interfact

  1. 接口只有常量、抽象方法
  2. public static final   常量定义默认关键词
  3. public abstract 方法默认关键词

String、StringBuffer、StringBuider

  1. String  不可变类,不可变字符序列
  2. StringBuffer  线程安全,效率低
  3. StringBuilder 线程不安全,效率高

猜你喜欢

转载自blog.csdn.net/weixin_42230478/article/details/81316912