object和string方法详解

一、Object
        Object是Java中的顶级父类,Java中所有的类都默认直接或者间接的继承Object。Object是Java中唯一没有父类的类,任何一个类的对象都可以用Object对象接住。

重要方法
1.Clone();  克隆对象。

        克隆完成之后会产生一个新的对象,这个新对象和原对象的地址不同但是属性值是一样的。
        一个对象要想被克隆,那么这个对象对应的类必须实现Cloneable接口,Cloneable接口中没有任何的方法和属性,仅仅用于标识这个类产生的对象可以被克隆。

2.equals(Object o);!!!
       判断两个对象是否一致。默认比较的是对象的地址,即使用的是==运算符,在开发中要求能够手动重写。Eclipse中右键Sourec中有自动生成。
书写步骤:
1.判断地址是否一样,即直接使用==运算符。
2.判断对象是否为空。
3.判断对象的创建类型是否一致。
4.判断属性值是否一致。判断之前要将对象强转为顶级父类。判断属性值的时候注意String类型的判断。
Public boolean equals(Object obj){
        if (this == obj)                        //1.判断地址是否一致
            return true;
        if (obj == null)                        //2.判断参数是否为空
            return false;
        if (getClass() != obj.getClass())        //3.判断类型是否一致
            return false;
        Person other = (Person) obj;            //4.强制转换类别
        if (age != other.age)                    //5.判断属性是否一致
            return false;
        if (gender != other.gender)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

3.finalize();  通知gc回收垃圾对象,但是垃圾回收器不一定执行。即使gc开始运行,也只回收当前对象而不回收其他对象。
4.GetClass();!!!  获取对象的实际类型(创建类型)。

5.hashCode();
       返回对象的哈希码值的十进制。哈希码是一串32位的二进制数据,由于出现相同的数值的概率非常低,所以可以认为是唯一的。(不建议手动重写)
       重写hashCode的时候,当equals值为true的时候,哈希码必须一致。但是哈希码一致equals不一定为true。
       native关键字修饰的是本地方法,底层是用c语言写的。

6.toString();
        对象的字符串形式,默认返回对象的地址。当打印对象的时候默认是调用了这个对象的toString方法。一般会重写。


二、String---final String Class
2.1特点
    1.String是一个最终类,代表字符串的一个类,所有的字符串都是String的对象。
    2.字符串是一个常量;字符串可以被共享。
    3.字符串存储在方法区。
    4.注意不同的方式创建的对象的个数。有几个对象,就看内存中有几个存储的是地址。

          
     String中“+”拼接字符创建对象的个数,和StringBuiler的append对比?
         

    在拼接多个字符串的时候最好使用StringBuilder,如果拼接的字符串个数比较少,可以使用+进行拼接
2.2 String的构造方法
  1、String(); 创建一个字符串对象。

   
  2、String(byte[] bs); 将字节数组按照系统默认编码转化为字符串。

 
  3、String(byte[] bs, Charset ch);  将字符串按照指定的编码编译。
  4、String(byte[] bs,int index,int size,Charset ch); 将字节数组按照指定的编码ch,从下标index开始,转化size个。
  5、String(char[] ch); 将字符数组中的元素拼接成一个字符串。

 
  6、String(char[] ch, int i, int k); 表示从字符数组的指定下标i开始将指定的个数k拼成字符串。

 
  7、String(int[] codePoints,int offset,int count);
  8、String(StringBuffer buffer); 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。该字符串缓冲区的内容已被复制,后续对它的修改不会影响新创建的字符串。
  9、String(StringBuilder builder); 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。该字符串缓冲区的内容已被复制,后续对它的修改不会影响新创建的字符串。

2.3重要的方法
  1、charAt(int index); 表示获取这个字符串指定下标index位置上的字符。

  2、length();  获取字符串的长度。
       注意数组中的length是一个属性,字符串的length();是个方法。

 

  3、compareTo(String str); 比较两个字符串的大小。根据返回值的正负来确定大小

   底层过程:

        按照升序规则比较两个字符串

        1. 将两个字符串转化为两个字符数组。

        2. 对象字符串对应的字符数组的对应位置的字符 -/减 参数字符串对应的数组对应位置的字符。

        3. 如果差不为0,那么直接返回。 如果差为0,则下一位对应的字符继续相减。

        4. 如果对应位置的字符全部减完,依然没有返回的话,那么就会返回对象字符串-参数字符串的长度之差。如果返回的是一       个正数,说明对象字符串要大一些,如果返回的是一个负数,说明参数字符串要大一些。

     

  4、compareToIgnoreCase(String str); 不区分大小写比较两个字符串的大小。

  5、contains(String str); 判断是否包含指定的子串

  6、endsWith(String s); 判断字符串是否以指定字符结尾。经常用于筛选。

 

  7、equals(Object o); String中已经对equals做了重写。判断两个字符串是否相等,判断的是实际值。

 

 

  8、getBytes(); 将字符串转化为字节数组,如果不指定编码,会按照默认的系统平台码转化。

  9、getBytes(Charset ch); 将字符串按照指定编码转化为字节数组。

    编码:按照某种规则将字符映射成字节---记录这种规则的形式---编码表

           ASCII--- 0-127---不完全的码表

          ISO-8859-1---西欧码表--- 一个字符一个字节

          gb2312--- 一个字符2个字节 --- 包含了常见的基本简体汉字以及部分的繁体汉字 --- gbk

          Unicode编码体系--- utf-8---一个字符3个字节 --- 常见语言的常见字符

          后续的所有码表默认兼容西欧码表---只要是英文,永远是一个字符对应一个字节

练习:截取字符串指定字节

输入一个字符串和一个数字,数字表示字节个数,然后按照指定的字节个数来截取字符串

中文english国 5 -> 中文e   6 -> 中文en  2 -> 中  3 -> 中 12-> 中文english?

  10、hashCode();  String中的hashCode方法做过了重写,同一个字符串在任何情况下的哈希码都是一样的。

 

  11、indexOf(char c/String s);  获取指定字符c在字符串中的第一次出现的位置,如果找不到该字符会返回一个-1。

 

练习

输出字符在字符串中的出现的位置

输入一个字符串和一个字符,输出这个字符出现的所有位置。

  12、isEmpty();  判断字符串长度是否为0.

  13、lastIndexOf(char ch/String s); 表示最后一次出现的位置。

  14、lastIndexOf(char ch,int indexfrom); 从指定下标开始向前寻找最后一次出现的位置。

  15、replace(char oldch,char newch); 返回一个新字符串,替换。

        Java中的范围包前不包后,包左不包右,包小不包大。

  16、startsWith(char ch); 判断是否指定参数作为开头。作为筛选使用。

  17、subString(int index); 从指定下标开始截取。

  18、subString(int beginIndex,int endIndex); 从指定位置开始截取,截取到指定位置的前一位。

  19、toCharArray(); 将字符串转化为字符数组。

  20、toLowerCase() ; 转化为小写。

    底层

  1. 现将字符串化为字符数组。
  2. 便利数组,判断每一位是否是一个大写字母。
  3. 如果是一个大写字母,这以为加上32然后在强转回char类型,再赋值给原位置。
  4. 将字符数组转化为字符串。

  21、toUpperCase(); 转为大写。

  22、toString(); 返回本身。

  23、trim(); 去掉字符串前后的空白符。

  24、valueOf(int i/char c/boolean b/long l/Object o); 返回参数的对应字符串形式。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值