java笔记03

Java第一阶段总复习(基础API)

1,Object

1)是所有类的超类,Java中的类都直接或者间接的继承了Object

2)如果一个类没有明确指定父类,那么默认继承Object

3)Object处于java.lang包之下,不需要导包可以直接使用

4)toString()–我们日常使用最频繁的打印语句底层就调用了这个方法

如果没有重写这个方法,使用的是Object的默认实现,打印的是对象的地址值

如果重写以后,以重写的逻辑为准,比如String打印的是串的具体内容,比如ArrayList,打印的是[集合元素]

5)hashCode()–用于返回对象对应的哈希码值

如果是一个对象多次调用这个方法,返回的是同一个哈希码值

如果是不同的对象调用这个方法,应该返回的是不同的哈希码值

6)equals()–用于比较当前对象与参数对象是否相等

重写之前的默认实现比较的是两个对象的地址值

重写之后取决于重写的逻辑,比如String比较的是两个串的具体内容,比如自定义对象比较的是类型+属性值

7)equals()与hashCode()应该保持一致【要重写都重写】

解释:equals()底层默认实现比较的是==比较,地址值,重写后我们一般比较的是对象的类型+属性值

hashCode()不同的对象生成的哈希码值不同,那么与equals()的逻辑不匹配,所以也应该重写

重写后,是根据对象的类型与属性值来生成哈希码值,这样二者就一致了

  1. String

1)String底层维护的是一个char[],而且String不可变,因为源码中的数组被final修饰了

2)创建方式:

char[] vlaues = {‘a’,‘b’,‘c’}; String s = new String(values);

String s = “abc”;有高效的效果,因为串存在堆中的常量池,第二次使用时就不再新建了

3)常用方法:

int hashCode() 返回此字符串的哈希码。
boolean equals(Object anObject) 将此字符串与指定的对象比较,比较的 是重写后的串的具体内容
String toString() 返回此对象本身(它已经是一个字符串!)。

int length() 返回此字符串的长度。

String toUpperCase() 所有字符都转换为大写。

String toLowerCase() 所有字符都转换为小写

boolean startsWith(String prefix) 测试此字符串是否以指定的元素开 头。

boolean endsWith(String suffix) 测试此字符串是否以指定的字符串结束

char charAt(int index) 返回指定索引/下标处的 char 值/字符

int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。

int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索 引。

String concat(String str) 将指定字符串连接/拼接到此字符串的结尾,注 意:不会改变原串

String[] split(String regex) 根据给定元素来分隔此字符串。

String trim() 返回去除首尾空格的字符串

byte[] getBytes() 把字符串存储到一个新的 byte 数组中

String substring(int beginIndex) 返回一个新子串,从指定下标处开始, 包含指定下标

String substring(int beginIndex, int endIndex) 返回一个新子串,从执 定下标开始,到结束下标为止,但不包含结束下标

static String valueOf(int i) 把int转成String

  1. StringBuilder与StringBuffer

String的:

1)特点:

创建之后长度内容是不可变的,每次拼接字符串,都会产生新的对象

2)优缺点:

优点:String类提供了丰富的关于操作字符串的方法,比如:拼接、获 取对应下标处的字符、截取子串等等

3)缺点:在进行字符串拼接+=的时候,效率比较低

String转StringBuilder:

String s = “abc”; StringBuilder sb = new StringBuilder(s);

StringBuilder的:

1)特点:

StringBuilder是一个长度可变的字符串序列,在创建的时候,会有一 个长度为16的默认空间

当拼接字符串的时候,是在原对象的基础之上进行拼接,如果长度不够 就扩容

所以StringBuilder在创建之后,对应的操作一直是用一个对象

2)创建方式:

StringBuilder sb = new StringBuilder();//创建一个长度为16的 StringBuilder对象

StringBuilder sb = new StringBuilder(“abc”);//以指定字符串内 容为“abc”的方式创建一个StringBuilder对象

3)优缺点:

优点:在拼接的时候,不会产生新的对象,就避免了因为拼接频繁生成 对象的问题,提高了程序的效率,使用的是append()

4)缺点:对于字符串的操作,不太方便

StringBuilder转String:

StringBuilder sb = new StringBuilder();

sb.append(“abc”);

String s = sb.toString();

总结一句话,拼接多用StringBuilder,用完转回String用String丰富 的方法

  1. 包装类

1)基本类型只存值,也没有丰富的功能

所以包装类型是对基本类型做了包装,并提供了很多方便的方法,所以包装 类的对象是引用类型的对象

2)创建方式:

Integer i1 = Integer.valueOf();数据只要在-128~127有一个高效的效果

Integer i2 = new Integer(4);没有高效的效果,只是创建了一个包装类的 对象

  1. 自动装箱与自动拆箱

1)自动装箱:

编译器会自动把基本类型int5,包装成包装类型Integer

然后交给Integer类型的引用类型变量i3来保存

自动装底层发生的代码:Integer.valueOf(5)

valueOf()的方向:int–>Integer

2)自动拆箱:

编译器会自动把包装类型的i1拆掉”箱子“,变回基本类型的数据127

然后交给基本类型int的变量i4来保存

自动拆箱底层发生的代码:i1.intValue();

intValue()的方向:Integer-> int

package cn.tedu.api;

/*本类用于测试自动装箱与自动拆箱*/

public class TestNumber2 {

    public static void main(String[] args) {

        //1.定义包装类型的数据

        Integer i1 = new Integer(127);

        Integer i2 = Integer.valueOf(127);

        //2.现在的方式:

        Integer i3 = 5;//不会报错,这个现象就是自动装箱

        int i4 = i1;//不会报错,这个现象就是自动拆箱

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值