1 什么是API
API(Application Programming Interface,应用程序接口) 是一些预先定义的函数.目的是提供应用
程序与开发人员基于某软件可以访问的一些功能集,但又无需访问源码或理解内部工作机制的细节.
API是一种通过功能集,有事公司会将API作为其公共开发系统,也就是公式指定自己的系统接口标准,当需要进行系统整合,自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码
2 Object
2.1 概念
Object类是所有java类的祖先,也就说我们所说的"顶级父类"
它存在于java.lang.Object,这个包不需要我们手动导包
需要注意的是:每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法.
在不明确给出超类的情况下,java会自动把Object类作为要定义类的超类
2.2 常用方法介绍
toString()
本方法用于返回对应对象的字符串表示
hashCode()
本方法用于返回对应对象的哈希码值
哈希码值的得出是通过一种算法,意在让不同的对象具有不同的哈希码值,用于区分不同的对象.
但是有时候也存在不同对象哈希码值相同的特殊情况,我们称之为"哈希碰撞"现象
equals()
本方法用于指示其他某个对象是否与当前对象"相等"
3 Sting
3.1 特点
String是一个封装char[]数组的现在,字符串不可变
通过下图中的底层实现可以看出:被final修饰,是常量
String str = "abc"; 等效于: char data[] = {'a','b','c'};
3.2 创建String对象的方式
方式一:
String(char[] value) 分配一个新的String,使其表示字符数组参数中当前包含的字符序列.
方式二:String str = "abc";
1.如果是第一次使用字符串,java会在字符串堆中常量池创建一个对象
2.再次使用相同的内容时,会直接访问堆中常量池中存在的对象.
3.3 常见方法
4 StringBuilder/StringBuffer
4.1 特点
1.封装了char[] 数组
2.是可变的字符序列
3.提供了一组可以对字符内容修改的方法
4.常用append()来代替字符串做字符串连接+
5.内部字符数组默认初始容量是16: super(str.length()+16);
6.如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充需要的
容量大小,int newCapacity = value.length*2+2;
7.StringBuffer 1.0出道线程安全,StringBuilder1.5出道线程不安全
5.1 ==和equals的区别
1.当使用==比较时,如果相比较的两个变量是引用类型,那么比较的是两者
的物理地址(内存地址),如果相比较的两个变量都是数值类型,那么比较的是具体数值是否相等.
2.当使用equals()方法进行比较时,比较的结果实际上取决于equals()方法的具体实现
众所周知,任何类都继承Object类,因此所有的类均具有Object类的特性,比如String,integr等,
他们在自己的类中重写了equals()方法,此时他们进行的是数值的比较,而在Object类的默认实现
中,equals()方法的底层是通过==来实现的.
5.2 StringBuilder和StringBuffer的区别
1.在线程安全上;
--stringBuffer是旧版本就提供的,线程安全的.@since JDK1.0
--StringBuilder是jdk1.5后产生的.@since 1.5
2.在执行效率上, StringBuffer>StringBuffer>String
3.源码体现:本质上都是在调用父类抽象AbstractStringBuilder来干活,只不过Buffer把代码加了同步
关键字,使得程序可以保证线程安全问题.