API-Object-equals方法和toString方法 Strinig字符串和StingBuffer类
2018-05-23 10:57 yelena 阅读(223) 评论(0) 编辑 收藏 举报equals方法:用来比较两个对象(引用变量类型)是否相等,比较的是对象的地址;
一般要对equals进行重写,因为equals(Object obj)方法中传的参数是Object类型,重写的时候需要调用子类独有的属性值进行判断,这就需要向下转型(用instanceof判断类型是否匹配)
public boolean equals(Object obj) { // TODO Auto-generated method stub if(obj==this){ return true; } if(obj instanceof Person){ Person p = (Person)obj; return p.age == this.age; } return false; }
toString方法:返回该对象的字符串(对象类型@内存地址);
一般对toString方法也要重写
@Override public String toString() { // TODO Auto-generated method stub String str = this.name +"..." +this.age; return str; }
String:本质是字符(char)的数组 常量池的存在让数组可以免new
通常的定义方式:String str = "abcdeg";
String str = new String("abdefg");这是两个对象:双引号里面是一个字符串,在new的字符串里加入第一个字符串的地址,再把地址赋给str
构造方法:空参构造 String str = new String(); 是一个空字符串
有参构造:传byte数组和字符数组
byte数组里面是数字:在字符串里显示 正数为英文字母(65表示大写A,97表示小写a),负数为汉字(两个数字表示一个汉字,单个数字返回?)
char(字符)数组里面是一个一个的字符,用‘单引号’:在字符串中显示连续的字符
//电脑默认GBK编码,正数走ASCII表,如果是负数,就是汉字 byte[] bytes = {-65,-70,-66,-67,-68,-69}; String str1 = new String(bytes); System.out.println(str1);//汉字 String str2 = new String(bytes,1,2); System.out.println(str2);//第2个数字和第3个数字组成的汉字 char[] chars = {'d','o','g'}; String str3 = new String(chars); System.out.println(str3);//不传str3的地址,因为用了toString方法(String类已经重新写了equals和toString方法) String str4 = new String(chars,1,2); System.out.println(str4);//第2个字符和第3个字符:og String str5 = "chengyaojin"; String str6 = new String(str5);//两个对象 System.out.println(str6);
String方法的使用
字符串指定位置的字符:charAt() 返回的是一个字符char
字符串的长度:length();
字符串的截取:substring(n)截取n之后的字符串,substring(n,m)截取n和m之间的字符串,不包括m
字符串的开始和结束:startswith("a")判断字符串以a开始吗,endwith("a")判断字符串以a结束吗,a可以换成任意字符串
字符串包含某个字符串:contains();
字符串某个字符串第一次出现的地方:indexof() 有字符串换回正数,没有返回-1
String str = "i love java,java love me"; //字符串的长度 System.out.println(str.length()); //字符串的截取 System.out.println(str.substring(6)); System.out.println(str.substring(3,6)); //字符串以什么开始和结束 System.out.println(str.startsWith("a")); System.out.println(str.endsWith("a")); //判断字符串中是否包含love System.out.println(str.contains("love")); //获取java在字符串中第一次出现的索引(没有就返回-1) System.out.println(str.indexOf("java"));
将字符串转换成byte数组:getBytes()方法 返回的是一个byte数组
byte[] bytes = str.getBytes(); for(int i = 0;i<bytes.length;i++){ System.out.println(bytes[i]); }
将字符串转换成字符数组:toCharArray()方法返回的是一个字符数组
char[] chars = str.toCharArray(); for(int i = 0;i<chars.length;i++){ System.out.println(chars[i]); }
字符串是否相等:equals()已经重写 equalsIgnoreCase()忽略大小写
String str1 = "love"; String str2 = "LOVE"; //判断字符串是否相等 System.out.println(str1.equals(str2)); //判断字符串是否相等(忽略大小写) System.out.println(str1.equalsIgnoreCase(str2)); String str3 = "你好"; System.out.println(str3.length());
StringBuffer类 : 字符串缓冲区,一个长度可变的字符串
StringBuffer sbu = new StringBuffer();
方法的使用
添加:append() 因为这个方法的返回值类型依然是一个StringBuffer类,所以可以在方法后面再加方法如 append().append()无限加
append()括号中可以添加 boolean值、 字符、 字符数组、 double、 float、 int、 long、 Object、 String、 StringBuffer类型
删除:delete(n,m) 删除n和m之间的字符串,不包括m
指定位置上的字符:charAt();
删除指定位置上的字符:deleteCharAt();
插入:insert();
替换:replace();
反转:reverse();
StringBuffer sbu = new StringBuffer("wangzherongyao"); System.out.println(sbu); //字符串添加 sbu.append("\thouyi"); //sbu.append("\twangzhaojun"); System.out.println(sbu); sbu.append("wangzhaojun").append(123).append(2.3); System.out.println(sbu); //字符串删除 sbu.delete(3,6); System.out.println(sbu); //指定位置插入 sbu.insert(3,"lanlingwang"); System.out.println(sbu); //替换指定 sbu.replace(0, 2, "222"); System.out.println(sbu); //反转 System.out.println(sbu.reverse());