zoukankan      html  css  js  c++  java
  • 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);
            
        }
    
    }
  • 相关阅读:
    SSH 连接超时解决办法
    alter system switch logfile和alter system archive log current 的区别
    Oracle 删除归档日志脚本
    Oracle 11g 新特性简介
    Oracle sqlplus 常用命令总结
    Oracle 11g 新特性简介
    计算文件的MD5值上传到服务器 下载验证文件是否被篡改
    看不下去的代码放这有机会用手机看。。。
    C++ Primer第一章学习笔记——C++初邂逅
    OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui
  • 原文地址:https://www.cnblogs.com/lzw123-/p/9397933.html
Copyright © 2011-2022 走看看