0524 API、Object、toString String类、构造方法、StringBuffer、StringBuilder

API

Java的API(Application(应用) Programming(程序) Interface(接口))

Java的API就是jdk中提供给我们使用的类,这些类将底层代码封装起来,我们不需要关心如何实现,只管知道如何使用

Objec是所有 类 的父类 。不是接口(interface)的父类,它是特殊的类

Object类

1.equals(Object obi)方法:内部使用 == 比较运算符比内容

equals方法如果不重写是没有任何意义

    private String name;
    private int age;
    //有参构造方法
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    //空参构造
    public Person() {
        super();
    }
    //
    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;
    }
    //重写父类的equals方法
    public boolean equals(Object obj) {
        if(obj==this){
            return true;
        }
        //向下转型
        if(obj instanceof Person){
            Person p=(Person)obj;
            return this.age==p.age;            
        }
        return false;
    }    
}
-----------------------------------------------------
package com.oracle.demo01;
//测试
public class Demo {
    public static void main(String[] args) {
        Person p1=new Person("胸大",22);
        Person p2=new Person("胸二",26);
        //多态
        System.out.println(p1.equals(p2));//false
        System.out.println(p1==p2);
    }
}

2.toString方法

Alt+Shift+s  --toString 快捷

//重写   打印的是内容
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
-------------------------------------------------
package com.oracle.demo01;
//测试  toString
public class Demo01 {
    public static void main(String[] args) {
        Person p=new Person("琪琪国王",22);
        //如果不重写打印的是地址
        System.out.println(p.toString());
        System.out.println(p);
        String a="你好";
        //重写 打印的是内容
        System.out.println(a.toString());
    }
}

重写打印内容    没重写打印地址

String类

代表字符串,字符串的本质就是一个char数组

public class Demo02 {
    public static void main(String[] args) {
        String s="abc";
        String s2=new String("abc");
        //==比的是地址
        System.out.println(s==s2);//false
        //equals 比的是内容
        System.out.println(s.equals(s2));//true
    }
}

 

PM

Byte

package com.oracle.demo02;
//构造方法摘要
public class Demo01 {
    public static void main(String[] args) {
    //String 构造方法
        byte[] bytes={65,66,67,68,69};
        //正数 走ASCII码表 负的走字节
        //A----65
        //a----97
        //0----48
        /*String str=new String(bytes);
        System.out.println(str);*///BCDE
    //String构造方法2
        String str =new String(bytes,1,4);//1和4 1:从哪个下标开始  4:代表取几个
        System.out.println(str);
    }
}

char数组用构造方法转成串

package com.oracle.demo02;
//构造方法 char数组转成串
public class Demo02 {
    public static void main(String[] args) {
        char[] ch={'a','e','0','b'};
        String str=new String(ch);
        //字符转字符串
        System.out.println(str);        //ae0b
        String str2=new String(ch,1,2);
        System.out.println(str2);        //e0
    }
}

字符串功能

  字符串中有多少字符  int length()   求字符串长度 用length方法

  获取部分字符串

 

  字符串是否以指定字符串开头。结尾同理

  字符串中是否包含另一个字符串:判断字符串是否包含另一个字符串

 

  将字符串转成一个字符数组。或者字节数组

    判断两个字符串中的内容是否相同

  获取该字符串对象中的内容

 

 1 package com.oracle.demo02;
 2 
 3 public class Demo03 {
 4     public static void main(String[] args) {
 5         String str="nihaojava";
 6         //求字符串长度 用length方法
 7         System.out.println(str.length());
 8         //截取字符串截取java
 9         String s=str.substring(5);//5:代表从哪开始
10         System.out.println(s);
11         //截取字符串nihao (包头不包尾)
12         String s2=str.substring(0,5);
13         System.out.println(s2);//nihao
14         //判断字符串是否以http开头
15         String str2="https://www.baidu.com";
16         //判断字符串是否以http开头  用startsWith
17         System.out.println(str2.startsWith("http"));
18         //判断字符串是否以.com结尾 用endsWith
19         System.out.println(str2.endsWith(".com"));
20         //判断字符串中是否包含另一个字符串
21         System.out.println(str2.contains("www"));
22         String str1="nihaoyuanyimingnihao";
23         //获取nihao在大字符串中第一次出现的位置
24         System.out.println(str1.indexOf("yuanyiming"));//5s
25         //字符串-->字节数组
26         byte[] bytes=str.getBytes();
27         for(int i=0;i<bytes.length;i++){
28             System.out.println(bytes[i]);
29         }
30         //将字符串-->字符数组
31         char[] ch=str.toCharArray();
32         for(int j=0;j<ch.length;j++){
33             System.out.println(ch[j]);
34         }
35         String str3="IloveJava";
36         //忽略大小写判断两个字符串内容是否相同
37         System.out.println(str3.equalsIgnoreCase("ilovejava"));//true
38         System.out.println();
39     }
40 }

   StringBuffer类

字符串缓冲区

package com.oracle.demo02;
//String  buffer的
public class Demo04 {
    public static void main(String[] args) {
        //StringBuffer
        StringBuffer buffer=new StringBuffer();
        //添加字符串
        buffer.append("abc").append("bcd").append("123");
        System.out.println(buffer);
        //删除子字符串 (0开始,包头不包尾)
        buffer.delete(2,5);
        System.out.println(buffer);
        //在指定位置插入子字符串
        buffer.insert(0, "袁一鸣");
        System.out.println(buffer);
        //将指定位置字符串替换为新的字符串 (包头不包尾)
        buffer.replace(1, 2,"三丰");
        System.out.println(buffer);//袁三丰鸣abd123
        //反转字符串
        buffer.reverse();
        System.out.println(buffer);
        //StringBuffer-->String
        String str2=buffer.toString();
        System.out.println(str2);
        //
    }
}

StringBuffer和StringBuilder类的区别

StringBuilder > StringBuffer

  String最慢的原因:

  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,StringBuilder对象创建之后该对象是不可更改的,但StringBuffer的对象是变量,是可以更改的。

1 String str="abc";
2 System.out.println(str);
3 str=str+"de";
4 System.out.println(str);

 

练习

package com.oracle.day01;
    //练习
public class lianxi {
    public static void main(String[] args) {
        //判断该字符是否为空字符串
        String a="shifoukongzifu";
        boolean b=a.isEmpty();
        System.out.println(b);
        //获取给定的字符,在该字符串中第一次出现的位置
        int c=a.indexOf("d");
        System.out.println(c);
    //获取该字符串中指定位置上的字符
        String d=a.substring(2, 4);
        System.out.println(d);
    //把该字符串转换成 小写字符串
        String e=a.toLowerCase();
        System.out.println(e);
    //把该字符串转换成大写字符串
        String f=a.toUpperCase();
        System.out.println(f);
    //在该字符串中,将给定的旧字符,用新字符替换
        String g=a.replace("ban","Gg");
        System.out.println(g);
    //在该字符串中,将给定的旧字符,用新字符替换
        String h=a.replace("Hh","ban");
        System.out.println(h);
    //去除字符串两端空格,中间的不会去除,返回一个新字符串
        String i=a.trim();
        System.out.println(i);
    //判断大小写
        String zongti="small big 01234";
        int big=0;
        int small=0;
        int num=0;
        char[] ch=zongti.toCharArray();
        for(int p=0;p<ch.length;p++){
            System.out.println(ch[p]);
//大写A 是ascII值
     char ch=97;//对应的ASCII值
if(ch[p]>='A' && ch[p]<='Z'){ big++; } else if(ch[p]>='a' && ch[p]<='z'){ small++; } else if(ch[p]>='0' && ch[p]<='9'){ num++; } } System.out.println("大写"+big); System.out.println("小写"+small); System.out.println("数字"+num); //获取第一部分为字符串 String start = zongti.substring(0,1); //获取第二部分为字符串 String end = zongti.substring(1); String big1 = start.toUpperCase(); String small1 = end.toLowerCase(); System.out.println(big1+small1); StringBuffer m=new StringBuffer(); m.append("abcdefghijk"); System.out.println(m); String Q=m.toString(); String q=Q.substring(2,8); System.out.println("截取c——h:"+q); int[] arr={34,12,89,68}; StringBuffer v=new StringBuffer(); v.append("["); for (int ii = 0; ii < arr.length; ii++) { if(ii!=arr.length-1){ v.append(arr[ii]+","); }else{ v.append(arr[ii]+"]"); } } System.out.println(v.toString()); ; } }

 

posted @ 2019-05-24 09:34  zhansen521  阅读(199)  评论(0编辑  收藏  举报