Java概念-03
1. 数组:
数组是一组相关变量的集合,数组的最大缺陷就是长度不可改变(制约了数组的 使用环境,可以使用类级代替);
2. String的特点:
a) 字符串采用“””来定义,字符常量不属于基本数据类型,而是属于String类的匿名对象;
b) String类对象有两种实例化模式:
i. 直接赋值:开辟一块内存空间,会自动入池,供下次使用;
ii. 使用关键字new进行对象实例化,会开辟两块内存空间,其中一块会成为垃圾,并且不会自动入池,需要使用intern()手工入池;
c) 字符串常量一旦申明不可改变,但是字符串对象可以修改引用实现内容的变更,但是频繁修改会造成大量垃圾的产生;
d) 字符串的常量池分为两种:
i. 静态常量池:直接进行字符串的定义和使用“+”进行连接,最终的效果是相同的;
ii. 动态常量池:内容由执行的时候动态决定,即时内容与其他常量相同,也会重复开辟堆内存空间;
3.. 覆写(重写):
a) 发生在两个类之间,有继承才会有覆写;
b) 覆写指的是保留父类方法的定义,不同的子类针对于同一方法有不同的实现;
c) 被覆写的方法不能拥有比父类更加严格的访问权限;
4. final关键字;
a) 修饰的类不能有子类,修饰的方法不能被覆写,修饰的变量属于常量;
5. Object类:
a) Object是所有类的父类,可以接受所有的数据类型,包括基本数据类型和引用数据类型
6. 注解:与配置问价相结合,进行程序中动态配置使用;
a) Java内置的三个注解:@Override(覆写方法)、@Deprecated(过期操作)、@ SuppressWarnings(压制警告;
7. abstract关键字:
a) abstract修饰的类为抽象类,抽象类必须要有子类,并且通过子类覆写抽象方法;
b) abstract修饰的方法为抽象方法,抽象方法没有方法体,通过不同的子类,实现不同的覆写;
c) 抽象类不一定有抽象方法,但拥有抽象方法的一定是会抽象类;
d) 在开发中,建议不要直接去实现一个接口,而是通过抽象类来间接实现,一些公共的操作可以放在抽象类中,子类可以通过super来进行调用;
8. 包装类:
a) 实现基本数据类型和引用数据类型直接的自动转换;
b) 在JDK1.5提供自动拆箱和自动装箱,好处,Object类可以直接接受基本数据类型;
c) Byte、Short、Integer、Long、Float、Double、Char、Boolean
9. 接口:
a) 接口就是一个标准,是一系列方法和常量的集合,通过interface关键字修饰;
b) 接口中的方法为抽象方法,属性为常量;
c) 接口必须有子类进行继承,子类要覆写接口的所有抽象方法;
d) 一个接口无法去继承一个父类,但可以继承多个父接口
e) 在开发中,接口的使用有两种模式:工厂模式、代理模式;
10. 内部类:
a) 指的是在一个类的内部定义另一个类,属于类结构的嵌套;
b) 内部类最大的特点在于可以方便外部类与内部类进行私有属性的访问;
c) 如果内部类用static定义,则为外部类;如果内部接口用static定义,则为外部接口;
d) 常见的内部类:Map.entry<Object,Object>
11. 函数式接口:
a) 用@FunctionalInterface定义的接口为函数式接口,函数式接口只允许有一个抽象方法;
b) 函数式接口可以用lamber表达式进行操作;
12. 链表:
a) 数组的优点是,因为有下标的存在可以方便的进行数据的查找,时间复杂度为“1”;缺点是数组的定长的;
b) 而链表是一组动态的对象数组,没有长度限制,但是链表根据索引进行查找时,时间复杂度为“O(n)”;
c) 在没有任何优化的前提下,数组和链表在进行内容判断时,时间复杂度都是“O(n)”;