Object类和String类

Object类

  Object类是Java语言中的根类,即所有类的父类。

equals方法

  返回值类型为:boolean类型

  用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。

例子:

package com.oricle.object;

public class Person extends Object{
    private String name;
    private int age;
    public Person(){
        
    }
    public Person( String name,int age){
        this.age=age;
        this.name=name;
    }
    //复写父类的equals方法,实现自己的比较方式
    public boolean equals(Object obj) {
        //判断对象是否为空
        if(obj ==null){
            return false;
        }
        //判断当前调用equals方法的对象和传递进来的对象是否是同一个
        if(obj ==this){
            return true;
        }
        //判断传递进来的对象是否是Person类型
        if(obj instanceof Person){
            //将obj向下转型为Perosn引用,访问其属性
            Person p=(Person)obj;

            return this.age==p.age;
        }
        return false;
    }
    
    
    
}

测试类:

package com.oricle.object;

import java.util.ArrayList;

public class Demo01 {

    public static void main(String[] args) {
        Person p1=new Person("江小鱼",3);
        Person p2=new Person("花无缺",3);
        System.out.println(p1==p2);//判断两个对象地址相等
        System.out.println(p1.equals(p2));//重写后判断内容相等
        
    }

}

  注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

toString方法

  返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

  由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。如下:

package com.oricle.object;

public class Person extends Object{
    private String name;
    private int age;
    public Person(){
        
    }
    public Person( String name,int age){
        this.age=age;
        this.name=name;
    }
    //复写父类的equals方法,实现自己的比较方式
    public boolean equals(Object obj) {
        //判断对象是否为空
        if(obj ==null){
            return false;
        }
        //判断当前调用equals方法的对象和传递进来的对象是否是同一个
        if(obj ==this){
            return true;
        }
        //判断传递进来的对象是否是Person类型
        if(obj instanceof Person){
            //将obj向下转型为Perosn引用,访问其属性
            Person p=(Person)obj;

            return this.age==p.age;
        }
        return false;
    }
    //重写toString方法
    public String toString() {
        
        return "name:"+name;
    }
    
}

测试类:

package com.oricle.object;

import java.util.ArrayList;

public class Demo01 {

    public static void main(String[] args) {
        Person p1=new Person("江小鱼",3);
        Person p2=new Person("花无缺",3);
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
         //重写toString方法
        System.out.println(p1.toString());

    }

}

结果如下:

 String类

 构造方法

把字节数组作为对象的内容

package com.oricle.String;

public class Gouzao {

    public static void main(String[] args) {
        //48为0,97为a,65为A
        byte[] bytes={
            97,98,99,100
        };
        String str =new String (bytes);
        String str2 =new String (bytes,1,2);//创建String对象,把一部分数组元素作为字符串的内容,
            //参数offset为数组元素的起始索引位置,参数length为要几个元素

        System.out.println(str);
        System.out.println(str2);

    }

}

结果:

创建String对象,把字符串数组元素作为字符串的内容

    char[] chs = new char[]{'a','b','c','d','e'};
        String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
        String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,
            //参数offset为数组元素的起始索引位置,参数count为要几个元素
System.out.println(s4); System.out.println(s5);

结果:

创建String对象str,字符串内容为sre,判断是否与已存在字符串ss相等,

String ss="sre";
        String str=new String("sre");
        System.out.println(ss.equals(str));

结果为true,String类进堆,优先创建内存,然后调用内容相同已经有的字符串地址,不会再开新的内存,节省空间

String类中的方法查找

package com.oricle.String1;

public class Demo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char[] ch={'a','b','c','d','e'};
        String str=new String(ch);
        System.out.println(str);
        int len=str.length();
        System.out.println(len);
        //截取
        String s1=str.substring(2);//从起始位置一直截取到最后
        System.out.println(s1);
        //总起始位置截取到结束位置(包头不包尾,顺序不能乱)
        System.out.println(str.substring(2, 4));
        //检索开头字母
        String st="IloveJava";
        String s2="Il";
        String s3="Java";
        System.out.println(st.startsWith(s2));//开头
        System.out.println(st.endsWith(s3));//结尾
        //判断字符串中是否包含子字符串
        String s4="i love java java";
        String s5="java";
        System.out.println(s4.contains(s5));
        //indexof 如果没有该字符串则返回-1
        System.out.println(s4.indexOf(s5));
        //将字符串转成字节/字符数组
        String s6="你是人则很难";
        /*byte[] b1=s6 .getBytes();
        for(int i=0;i<b1.length;i++){
            System.out.print(b1[i]+"");
        }
        char[]c1=s6.toCharArray();
        for(int i=0;i<c1.length;i++){
            System.out.println(c1[i]+"");
        }*/
        
        for(int i=0;i<s6.length();i++){
            byte[] b1=s6 .getBytes();
            System.out.print(b1[i]+"");
            char[]c1=s6.toCharArray();
            System.out.println(c1[i]+"");
        }
        
        
        
        //判断字符串内容是否相同
        String s8="Oricle";
        String s9="oricle";
        System.out.println(s8.equals(s9));
        System.out.println(s8.equalsIgnoreCase(s9));
        //tostring
        System.out.println(s8.toString());
        
        //tolowercase
        System.out.println(s8.toLowerCase());
        //touppercase
        System.out.println(s9.toUpperCase());
        
    }
    
}

练习题目:

package com.oricle.String1;

public class Demo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        getnum("ORIclee12345");
        getword("fainlFAF");
        getci();
    }
    //1.获取指定字符串中,大写字母、小写字母、数字的个数。
    public static void getnum(String str){
        int big=0,
            small=0,
            number=0;
//        String s10="ORIcle1234";
//        char[]c2=s10.toCharArray();
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
//            System.out.println(c);
            if (c>='A' && c<='Z') {
                big++;
            } else if (c>='a' && c<='z') {
            small++;
            } else if (c>='0' && c<='9') {
                number++;
            }

        }
        System.out.println("大写字母个数:"+big);
        System.out.println("小写字母个数:"+small);
        System.out.println("数字个数:"+number);

      }
    //将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串
    public static void getword(String str){
        String head=str.substring(0,1);
        String body=str.substring(1);
        String neww=head.toUpperCase()+body.toLowerCase();
        System.out.println(neww);
    }
    //查询大字符串中,出现指定小字符串的次数。如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。
    public static void getci(){
        String s1="hellojava,nihaojava,javazhenbang";
        String s2="java";
        int count=0;//出现次数
        int index=-1;//出现位置下标
        while((index=s1.indexOf(s2)) != -1){
            count++;
            s1=s1.substring(index+s2.length());
            System.out.println(s1);
        }
        System.out.println(count);
        
    }

}
原文地址:https://www.cnblogs.com/lzw123-/p/9397933.html