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()); ; } }