Java基础01-面向对象-字符串创建机制-static关键字

1.数据类型转换

1.1 从小到大

byte(1字节) , short(2字节) , char(2字节) ------ int(4字节) ----- long(8字节) ----- float(4字节) ----- double(8字节)

1.2 从大到小(强制转换)

目标数据类型 变量名 = (目标数据类型) 被转换的数据

赋值运算符 += 隐含了自动强制转换

面试题:

short s = 1
s += 1;

2.Java程序初始化的顺序

父类静态变量 > 父类静态代码块 > 子类静态变量 > 子类静态代码块 > 父类非静态变量 > 父类非静态代码块 > 父类构造函数 > 子类非静态变量 > 子类非静态代码块 > 子类构造函数

3.面向对象技术

主要特征:

  • 抽象
  • 继承
  • 封装
  • 多态
抽象类

如果一个类中有抽象方法,该类必须是抽象类

特点:

  • 必须有关键字abstract修饰
  • 抽象类中不一定有抽象方法
  • 抽象类不能实例化
  • 抽象类的子类是具体类,这个子类必须重写抽象类中的所有抽象方法

抽象类的实例化其实是靠具体的子类实现的,是多态的方式 例如Animal cat = new Cat();

小小问答题:

  1. 抽象类有构造方法,不能实例化,构造方法有什么用?

    用于子类访问父类数据的初始化

  2. 一个类如果没有抽象方法,却定义为抽象类,为什么?

    为了不创建对象

继承

使用关键字extends

  1. 子类只能继承父类的非私有成员变量和方法
  2. 子类和父类的成员变量同名或者成员方法具有相同的方法名,参数个数和类型时,子类会覆盖父类的不会继承
  3. 子类最多只能有一个父类,可使用多个接口达到多继承的目的
多态

多态表示当同一个操作作用在不同对象时,会有不同的语义

多态的实现机制:

  • 方法的重载
    同一类中出现方法名相同,参数列表不同的现象
  • 方法的覆盖(重写)
    在子类中出现与父类相同的方法声明现象

重载和覆盖有什么区别

重载(overload)覆盖(override)
重载是同一个类中方法之间的关系(水平关系)覆盖是子类和父类之间的关系(垂直关系)
重载要求参数列表不同覆盖要求参数列表相同
重载是根据调用时实参表和形参表选择方法体覆盖是根据对象的类型(对象对应存储空间类型)来决定

多态中的转型

  • 向上转型(从子到父)

    Fu f = new Zi();
    

    提高程序的扩展性

  • 向下转型(从父到子)

    Zi z = (Zi) f; // 要求f必须能转换为Zi
    

    把父类的引用强制转换为子类的引用

多态的好处:

  • 提高代码的维护性
  • 提高代码的扩展性

4.instanceof有什么作用

是一个二元运算符,作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口,抽象类,父类)的实例

用法:如果object是class的一个实例就返回true

result = object instanceof class

5.字符串创建与存储机制

  1. 只有用到new总会生成新的对象

    • 对于String s1 = new String("abc")String s2 = new String("abc") 引用的是同一常量池的对象
  2. JVM中存在一个字符串池,其中保存很多String对象并可以被共享使用

    • 对于String s1 ="abc"String s2 ="abc" 引用的是同一常量池的对象

    • 当创建一个字符常量时,会先在常量池中查看是否已经有相同的字符串被定义,判断依据是String类的equals(Object obj)方法的返回值

      • 若已经定义直接获取对其应用,不需要创建对象
      • 若没有定义,首先创建对象,然后把它加入到字符串池中,再将引用返回
  3. String是不可变类,一旦创建好了就不能被修改

笔试题:new String(“abc”) 创建了几个对象

答:一个或者两个,如果常量池原来有"abc",只创建一个对象;若没有就创建两个对象

6.static关键字

特点:

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所以对象共享
  • 可以通过类名调用

注意事项:

  1. 在静态方法中没有this对象

    静态是随着类的加载而加载,this随着对象的创建而存在,静态比对象先存在

  2. 静态只能访问静态

静态变量与成员变量的区别:

区别静态变量成员变量
所属不同属于类,类变量属于对象,对象变量
内存位置不同方法区的静态区堆内存
生命周期不同随着类的加载而加载,消失而消失随着对象创建而存在,消失而消失
调用不同对象名,类名调用只能对象名调用
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值