zoukankan      html  css  js  c++  java
  • API-Object-equals方法和toString方法 Strinig字符串和StingBuffer类

    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("	houyi");
            //sbu.append("	wangzhaojun");
            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());
  • 相关阅读:
    LeetCode数学系列(3)——快速幂算法(50题)
    LeetCode树系列(3)——200题岛屿数量
    Arrays.sort()详解
    图表示学习系列(1)——GCN学习笔记:第一部分,详细讲解GCN
    LeetCode动态规划系列(3)——编辑距离问题求解
    深度学习系列(9)——node2vec算法中的alias采样介绍
    LeetCode数学系列(2)——解决约瑟夫问题
    Java数据结构系列(4)——队列常用方法
    LeetCode树系列(1)——广度搜索应用,图的BFS
    LeetCode树系列(2)——深度搜索运用:LeetCode695题详解
  • 原文地址:https://www.cnblogs.com/yelena-niu/p/9075795.html
Copyright © 2011-2022 走看看