Android面试题准备

Java相关

1.Java的特性(封装、继承、多态)

封装

1. 封装就是把一个类的内部信息隐藏在类的内部,使得外部程序无法直接访问,需要通过该类的方法实现对隐藏信息的操作和访问。

2. 封装是怎么实现的呢?

   a. 需要修改属性的访问控制符(修改为private);

   b. 创建getter/setter方法(用于属性的读写);

   c. 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);

继承

继承是类与类之间的关系,一个类可以继承另一个类。在Java中继承只能是单继承,也就是说一个类只能有一个父类。列如,狮子属于动物,可以看做是狮子继承于动物,动物是父类(基类),狮子是子类(派生类)。子类继承父类的相关属性,方法,同时子类也可以有自己的属性和方法。父类的私有属性子类无法继承。

多态

多态指的是对象的多种形态。多态有两种,分别是引用多态和方法多态。继承是多态的前提。    

多态的三个条件:1.要有重写   2.要有继承  3.父类的引用指向子类的对象

多态的好处:

1.可替换性(substitutability):多态对已存在的代码具有可替换性。

2.可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。

3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。

5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

1. 引用多态

父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。


2. 方法多态

创建父类对象时,调用的方法是父类的方法;

创建子类的对象时,调用的是方法是子类重 写的方法或者继承自父类的方法。


2. Java String

String 字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使

用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。

Java.lang.StringBuffer线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用

可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。

StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地

将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加

到缓冲区的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容是“start”的字符串缓冲区对

象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包

含“starlet”。

StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。

java.lang.StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证

同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。



 

你可能感兴趣的:(Android面试题准备)