代码改变世界

API-Object-equals方法和toString方法 Strinig字符串和StingBuffer类

2018-05-23 10:57  yelena  阅读(217)  评论(0编辑  收藏  举报

equals方法:用来比较两个对象(引用变量类型)是否相等,比较的是对象的地址;

一般要对equals进行重写,因为equals(Object obj)方法中传的参数Object类型,重写的时候需要调用子类独有的属性值进行判断,这就需要向下转型(用instanceof判断类型是否匹配)

public boolean equals(Object obj) {
        // TODO Auto-generated method stub
         if(obj==this){
             return true;
         }
         if(obj instanceof Person){
             Person p = (Person)obj;
             return p.age == this.age;
         }
        return false;
    }

toString方法:返回该对象的字符串(对象类型@内存地址);

一般对toString方法也要重写

@Override
    public String toString() {
        // TODO Auto-generated method stub
         String str = this.name +"..." +this.age;
        return str;
    }

 String:本质是字符(char)的数组  常量池的存在让数组可以免new

通常的定义方式:String str = "abcdeg";

String  str = new String("abdefg");这是两个对象:双引号里面是一个字符串,在new的字符串里加入第一个字符串的地址,再把地址赋给str

构造方法:空参构造   String str = new String(); 是一个空字符串

有参构造:传byte数组和字符数组

byte数组里面是数字:在字符串里显示   正数为英文字母(65表示大写A,97表示小写a),负数为汉字(两个数字表示一个汉字,单个数字返回?)

char(字符)数组里面是一个一个的字符,用‘单引号’:在字符串中显示连续的字符

//电脑默认GBK编码,正数走ASCII表,如果是负数,就是汉字
        byte[] bytes = {-65,-70,-66,-67,-68,-69};
        String str1 = new String(bytes);
        System.out.println(str1);//汉字
        String str2 = new String(bytes,1,2);
        System.out.println(str2);//第2个数字和第3个数字组成的汉字
        char[] chars = {'d','o','g'};
        String str3 = new String(chars);
        System.out.println(str3);//不传str3的地址,因为用了toString方法(String类已经重新写了equals和toString方法)
        String str4 = new String(chars,1,2);
        System.out.println(str4);//第2个字符和第3个字符:og
        String str5 = "chengyaojin";
        String str6 = new String(str5);//两个对象
        System.out.println(str6);

String方法的使用

字符串指定位置的字符:charAt() 返回的是一个字符char

字符串的长度:length();

字符串的截取:substring(n)截取n之后的字符串,substring(n,m)截取n和m之间的字符串,不包括m

字符串的开始和结束:startswith("a")判断字符串以a开始吗,endwith("a")判断字符串以a结束吗,a可以换成任意字符串

字符串包含某个字符串:contains();

字符串某个字符串第一次出现的地方:indexof()  有字符串换回正数,没有返回-1

String str = "i love java,java love me";
        //字符串的长度
        System.out.println(str.length());
        //字符串的截取
        System.out.println(str.substring(6));
        System.out.println(str.substring(3,6));
        //字符串以什么开始和结束
        System.out.println(str.startsWith("a"));
        System.out.println(str.endsWith("a"));
        //判断字符串中是否包含love
        System.out.println(str.contains("love"));
        //获取java在字符串中第一次出现的索引(没有就返回-1)
        System.out.println(str.indexOf("java"));

将字符串转换成byte数组:getBytes()方法 返回的是一个byte数组

byte[] bytes = str.getBytes();
        for(int i = 0;i<bytes.length;i++){
            System.out.println(bytes[i]);
        }

将字符串转换成字符数组:toCharArray()方法返回的是一个字符数组

char[] chars = str.toCharArray();
        for(int i = 0;i<chars.length;i++){
            System.out.println(chars[i]);
        }

字符串是否相等:equals()已经重写   equalsIgnoreCase()忽略大小写

String str1 = "love";
        String str2 = "LOVE";
        //判断字符串是否相等
        System.out.println(str1.equals(str2));
        //判断字符串是否相等(忽略大小写)
        System.out.println(str1.equalsIgnoreCase(str2));
        String str3 = "你好";
        System.out.println(str3.length());

 

 

StringBuffer类 :  字符串缓冲区,一个长度可变的字符串

StringBuffer sbu = new StringBuffer();

方法的使用

添加:append() 因为这个方法的返回值类型依然是一个StringBuffer类,所以可以在方法后面再加方法如   append().append()无限加

append()括号中可以添加 boolean值、 字符、 字符数组、 double、 float、 int、 long、 Object、 String、 StringBuffer类型

删除:delete(n,m)   删除n和m之间的字符串,不包括m

指定位置上的字符:charAt();

删除指定位置上的字符:deleteCharAt();

插入:insert();

替换:replace();

反转:reverse();

StringBuffer sbu = new StringBuffer("wangzherongyao");
        System.out.println(sbu);
        //字符串添加
        sbu.append("\thouyi");
        //sbu.append("\twangzhaojun");
        System.out.println(sbu);
        sbu.append("wangzhaojun").append(123).append(2.3);
        System.out.println(sbu);
        //字符串删除
        sbu.delete(3,6);
        System.out.println(sbu);
        //指定位置插入
        sbu.insert(3,"lanlingwang");
        System.out.println(sbu);
        //替换指定
        sbu.replace(0, 2, "222");
        System.out.println(sbu);
        //反转
        System.out.println(sbu.reverse());