0
点赞
收藏
分享

微信扫一扫

Android成长系列~Java基础一

认真的老去 2022-04-27 阅读 80
javaandroid

**Android成长系列 Java篇 **

  1. Android成长系列~Java基础一

博客创建时间:2022.04.01
博客更新时间:2022.04.02

以Android studio build=7.0.0,SdkVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已


前言

Java基础是Android开发成长阶梯,基础越牢固高楼才能建的越高。该博客将是自身知识体系的基石部分,不断地学习总结才能构建自身心中的那颗Android技能树。

java中==和equals和hashCode的区别?

1. ==
1)在8种基本数据类型中,使用比较的是值
2)在引用类型中使用
,比较的是内存中的存放地址

2. equals
1)如果equals()方法没有重写,都是调用Object类的equals方法,比较的是内存地址
2)如果重写了equals()方法,则根据重写设定的条件判断

3. hashCode
通过hash算法获取到的对应物理地址值,hashCode()与equals()需要同步进行重写与否,否则报错。(一般判断两个类equals,其实暗藏一个条件就是hashCode也需要相等)

内部类及其作用

将一个类定义在一个类或者一个方法里面,这样的类称着内部类

  1. 成员内部类
  2. 静态内部类
  3. 匿名内部类
  4. 局部内部类

内部类与普通类相比最大的作用其实封装性,限制此类的访问权限。 内部类其他的作用其实普通类都能达到。

抽象类和接口区别?

  1. 抽象类要被子类继承,接口要被类实现。
  2. 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
  3. 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  4. 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
  5. 抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
  6. 一个类可以实现多个接口,但只能继承一个抽象类。

接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。
而抽象类在代码实现方面抽象类别,可以实现代码的重用

java多态的理解

从字面上理解,多态就是一个事物在不同情况下有多种状态。
从多态的3个前提:

  1. 存在继承关系
  2. 重写方法
  3. 父类引用指向子类

作用:理清层级关系、减少代码

String、StringBuffer、StringBuilder区别

  1. 三者都是final类,不允许被继承
  2. StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能。StringBuilder的方法中使用大量的synchronized 同步锁
  3. 运行速度:StringBuilder > StringBuffer > String。String为字符串常量,执行中不断创建新变量及进行垃圾回收
  4. String实现了三个接口:Serializable、CarSequence、Comparable,
    StringBuilder 与 StringBuffer 只实现了前两个接口,仅String可以使用compareTo方法

Math常用的几种方法

  1. Math.round():四舍五入,+0.5后向下取整Math.round(11.5)=12,
    Math.round(-11.5)= -11,float返回int,double返回long
  2. Math.sqrt():开方
  3. Math.rint():四舍五入,遇0.5则取偶数(Math.rint(11.4)=11.0, Math.rint(11.5)=12,Math.rint(10.5)=10)
  4. Math.floor():不大于它的最大整数(Math.floor(11.5)=11, Math.floor(-11.5)=-12)
  5. Math.ceil():不小于他的最小整数(Math.ceil(11.5)=12,Math.ceil(-11.5)=-11)
  6. Math.abs():绝对值(Math.abs(11.5)=11.5,Math.abs(-11.5)=11.5)
  7. Math.max():最大值(Math.max(-11.5, -11.4)=-11.4)
  8. Math.min():最小值(Math.min(-11.5, -11.4)=-11.5)
  9. Math.random():0.0-1.0之间的随机数
  10. Math.pow(x, y):x的y次幂
  11. Math.sqrt():开方

静态属性和静态方法是否可以被继承?是否可以被重写?

想一想,静态方法是类所有,所有的子类都是共有的,所以今天方法是不能被重写的。

静态方法和属性是可以被继承的。

final,finally,finalize的区别

final:
修饰符,修饰后的类不可被继承。修饰的变量或方法不能被改变,只读。

finally:
try catch 的最终处理标识字段。

finalize:
Java Object类中提供的一个方法,该方法确保垃圾回收执行前触发,可以在该方法中编写一些代码,进行保活、监控等操作。

Serializable 和Parcelable 的区别

Parcelable是android特有的序列化API,一般只用于内存数据的序列化或反序列化,如果强制适用于网络传输或本地保存,因不同Android版本的Parcelable实现也是不一样的,序列化和反序列化会有问题。(将数据拆分为多个Intent支持的基本数据类型)

Serializable 将Java对象转换成二进制文件进行网络通信或本地保存。但是它的序列化和反序列化效率较低,使用了反射机制,过程中会创建很多临时对象。


相关链接

博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !

举报

相关推荐

0 条评论