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