equals,toString和String类,StringBuffer类
1 equals方法
equals方法,用于比较两个对象是否相同。
2 toString方法
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
3.重写equals方法和toString方法
public class Person {
private String name;
private int 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;
}
//重写equals方法
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
//向下转型
if(obj instanceof Person){
Person p=(Person) obj;
return this.age==p.age;
}
return false;
}
//重写toString方法
public String toString() {
return "姓名为"+name+"年龄为"+age;
}
}
3 String类的概述
字符串的本质是一个字符的数组。
public class Demo01 {
public static void main(String[] args) {
//""——>String 类对象
//字符串是常量
String str="abc";
String s2=new String("abc");
System.out.println(str==s2);//false
System.out.println(str.equals(s2));//true
}
}
String方法
public class Demo02 {
public static void main(String[] args) {
//String(byte[]bytes)
//字节如果为正数走ASCII
//如果为负数则为汉字,一个汉字为两个字节
byte[]bytes={
49,50,48
};
String s1=new String(bytes);
System.out.println(s1);
char[]ch={
'a','5','e','你'
};
String s2=new String(ch,2,2);
System.out.println(s2);
//获取字符串长度
String s3="I love java";
System.out.println(s3.length());
//截取字符串,包头不包尾
String s4="How are you";
String s44=s4.substring(3);
System.out.println(s44);
//判断字符串以谁开头,以谁结尾
String s5="I am five.java";
System.out.println(s5.startsWith("I"));
System.out.println(s5.endsWith(".java"));
//判断字符串中是否包含另一个字符串
String s6="oh my god";
System.out.println(s6.contains("god"));
//返回该字符串第一次在大字符串中的索引
System.out.println(s6.indexOf("my"));
//字符串——>字节数组
byte[]b=s6.getBytes();
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
//字符串——>字符数组
char[]c=s6.toCharArray();
for(int j=0;j<c.length;j++){
System.out.println(c[j]);
}
//忽略大小写比较两个串的内容
String s7="abc";
}
}
public class Demo03 {
public static void main(String[] args) {
//判断空字符串
String s1="";
System.out.println(s1.isEmpty());
//获取该字符串中指定位置上的字符
String s3="change";
System.out.println(s3.codePointAt(3));
//转化为小写字符串
String s4="CHANGE";
System.out.println(s4.toLowerCase());
//转化为大写字符串
String s5="change";
System.out.println(s5.toUpperCase());
//在该字符串中,将给定的旧字符,用新字符替换
String s6="aaa";
System.out.println(s6.replace("aaa", "bbb"));
System.out.println(s6.replace('a', 'b'));
//去除收尾空白
String s7=" change ";
System.out.println(s7.trim());
}
}
练习:题目一:获取指定字符串中,大写字母、小写字母、数字的个数
public class Demo01 {
public static void main(String[] args) {
// 题目一:获取指定字符串中,大写字母、小写字母、数字的个数
String s1="fdafaDFADF3344";
int Asum=0;
int asum=0;
int nsum=0;
for(int i=0;i<s1.length();i++){
char c=s1.charAt(i);
if('A'<=c&&c<='Z'){
Asum+=1;
}
else if('a'<=c&&c<='z'){
asum+=1;
}
else if('0'<=c&&c<='9'){
nsum+=1;
}
}
System.out.println("大写字母个数为:"+Asum+"个,小写字母个数为:"+asum+"个,数字个数为:"+nsum+"个。");
}
}
题目二:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。
public class Demo02 {
public static void main(String[] args) {
// 题目二:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。
String s="ffAAADF";
String s1=s.substring(0,1);
String s2=s.substring(1);
String s3=s1.toUpperCase().concat(s2.toLowerCase());
System.out.println(s3);
}
}
题目三:查询大字符串中,出现指定小字符串的次数。
public class Demo03 {
public static void main(String[] args) {
//题目三:查询大字符串中,出现指定小字符串的次数。
//如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。
String s="hellojava,nihaojava,javazhenbang";
int count=-1;
int index=0;
while(index!=-1){
index=s.indexOf("java");
s=s.substring(index+1);
count++;
}
System.out.println(count);
}
}
4 StringBuffer类
字符串缓冲区支持可变的字符串
1. StringBuffer的方法使用:
public class Demo01 {
public static void main(String[] args) {
StringBuffer str=new StringBuffer();
//链式调用
str.append("小猪佩奇").append(true).append(1.2);
System.out.println(str);
//删除(包头不包尾)
str.delete(2, 6);
//插入
str.insert(2, "熊大");
System.out.println(str);
//替换
str.replace(2, 7, "How are you");
System.out.println(str);
//反转
System.out.println(str.reverse());
}
}