String类

 

Object类中的equals方法内部使用的就是==比较运算符。

不重写eques方法比较的是地址(默认的)

重写eques方法比较的是字符串内容;

toString返回的是默认地址,需要得到字符串内容需要重写toString方法

 

建立person

package com.oracle.demo01;
public class Person {
        private  String name;
        private int age;
        //空参构造
        public Person() {}

       public Person(String name, int age) {
           super();
           this.name = name;
           this.age = age;
       }
       public String getName() {
           return name;
       }
       public void setName(String name) {
           this.name = name;
       }
       public int getAge() {
           return age;
       }
       public void setAge(int age) {
           this.age = age;
       }
       @Override
       public boolean equals(Object obj) {
       // TODO Auto-generated method stub
           //如果传的是NULL;
           if(obj==null) { return false;}
           //如果传的是本类对象直接返回turn;
           if(obj==this) {
              return true;
           }
           //向下转型,比较内容
          if( obj instanceof Person) {
              Person  p=(Person)obj;
         return p.name.equals(this.name)&&p.age==this.age;
          }
          return false;
       }
       public String toString() {
           return "Person [name=" + name + ", age=" + age + "]";
       }
       /*public String toString() {
    return "我叫"+name+",今年"+age+"岁了";
       }*/}

 

测试类

package com.oracle.demo01;
public class Demo01 {
public static void main(String[] args) {

     Person  p1=new Person("灵芝",222);

     //p1存的就是地址,打印时 默认调用tostring方法

     Person  p2=new Person("乌拉草",222);

     //自定义类,从object继承的equls方法,如果没有重写则比较的是地址。想用就要重写。想要比较内容则重写。

     //==两边是引用型数据类型比较的一定是类型存的地址,==两边是值比较的是值。

     //已经写好的方法,无需重写

     //如果重写了equals方法比较的是内容,

    System.out.println(p1.equals(p2));  //true

    System.out.println(p1==p2);//false  比的是地址

    System.out.println(p1);//打印一个的时候是默认调用tostring

     

 

     //自定义类,从tostring继承的equls方法,如果没有重写则比较的是地址。

     //System.out.println(p1.toString());默认tostring方法//结果为地址

     //System.out.println(p1);//p1 默认的是 tostring方法结果为地址

     System.out.println(p1.toString());

     System.out.println(p2.toString());

}

}

 

1.1      String类构造方法

package com.oracle.demo02;

 

public class Demo01 {
   public static void main(String[] args) {
      //创建byte数组
      byte[] bytes={-65,-66,-67};
      //当byte数组中的值为正数时走的时ASCII
      //当byte数组中的值为负数时走的时中文码表
      //byte数组->字符串
      String str=new String(bytes,1,2);//从下标为1的开始,转2个
      System.out.println(str);//ABC
      //char数组-》字符串
      char[] ch= {'','','h','e','l','l','o'};
      String str2=new String(ch,2,5);
      System.out.println(str2);// hello
      String str3=new String("小哪吒");
      System.out.println(str3);// 小哪吒          
}
}

 

 

1.2      String类的方法查找

package com.oracle.demo02; 
public class Demo02 {
    public static void main(String[] args) { 
      String str="hellojava,java你好.java";
      //获取字符串长度
     System.out.println(str.length());  //21
     //截取字符串
     System.out.println(str.substring(10));//开始一直截到最后  java你好.java
     System.out.println(str.substring(5, 9));//包头不包围,最后一个值的下标得+1   java
     //判断字符串以什么开头
     System.out.println(str.startsWith("hello"));//true
     //判断字符串以什么结尾
     System.out.println(str.endsWith(".java"));//true
     //判断大字符串中是否包含小字符串
     System.out.println(str.contains("hello"));//true
     //获取小字符串在大字符串中第一次出现的索引
    System.out.println(str.indexOf("java"));//5

//将字符串转字节数组 byte[] bytes=str.getBytes(); for(int i=1;i<bytes.length;i++) { System.out.println(bytes[i]); } //字符串-》字符数组 char[] ch=str.toCharArray(); for(int i=0;i<ch.length;i++) { System.out.println(ch[i]); } //判断两个字符串是否内容相同,布尔 String s="a"; String s2="A"; System.out.println(s.equals(s2));//false //忽略大小写 System.out.println(s.equalsIgnoreCase(s2));//true } }

 

 

 字符串缓冲区

package com.oracle.demo02; 
public class Demo03 {
        public static void main(String[] args) {
            StringBuffer sf=new StringBuffer ();
            //添加字符串  链式调用
            sf.append("aa").append(564);
            sf.append("bbb");
            sf.append(true);
           sf.append(123456);
           // System.out.println(sf);//aa564bbbtrue123456
            //删除指定字符串  包头不包围
            sf.delete(0, 3);
            System.out.println(sf);//64bbbtrue123456
            //在指定位置插入指定的值
            sf.insert(0, "哪吒");
            System.out.println(sf);//哪吒64bbbtrue123456
           //在指定位置替换指定的值,包头不包尾
            sf.replace(2, 7, "你你好");
            System.out.println(sf);//哪吒你哈true123456
            //反转,逆序
            sf.reverse();
            System.out.println(sf);//654321eurt好你你吒哪
            //将StringBuffer——》字符串,不能在更改,进常量池
            String str=sf.toString();
            System.out.println(sf);
       }
}

 

posted @ 2019-08-14 10:16  腊月出去玩  阅读(143)  评论(0编辑  收藏  举报