字符的相关操作
1.equals:在没有重写系统提供的equals方法时,其实比较的是地址;
2.toString:返回的是该对象的String的表现方式,默认打印一个的对象的时候实际上调的是这个对象的toString()方法
3.字符串的本质是字符数组
4.public static void main(String[]args){
Person p1=new Person();
Person p2=new Person();
System.out.println(){p1.equals(p2)}自定义的类需要重写equals;系统提供的基本数据类型不需要重写因为系统都已经重写好了如(String,Scanner类)
System.out.println(p1==p2); 如果没有重写equals方法只能比较地址,相当于==
System.out.println(p1.toString()); 打印一个对象的时候会默认调用这个对象的toString方法;重写toString方法后再打印p对象就是字符串不是地址了
System.out.println(p2.toString());}
5.public boolean equals(Object obj){
//如果传的是null返回false
if(obj==null){ return false;}
如果传的是自己返回true
if(obj==this){return true;} 这里判断是不是传的自己,this就是本类的意思就是指自己;通过判断地址来确定
这里是多态因为object是父类Person是子类,子类将自己赋值给父类就是多态
但是这里的name是Person子类独有的属性;object没有所以得向下转型
if(obj instraceof Person){ 重写equals方法得向下转型要用instraceof进行判断是否是同一类型
Person p=(Person)obj //这里是向下转型,实际上Person p就是Object obj;p=obj;p就是obj;是方法传递过来的类;
return p.name.equals(this.name)&&p.age==this.age;
所以p.name和this.name本类的name比;因为传过来的是Objec类不能和Person类比得先转一下
//写好的equals方法后Person实例化的对象,p1和p2谁调就是谁的方法;
return false; }
6.public static void main(String[] args) {
String str="abc";//值abc是常量;str是变量存的是abc的地址;所以赋的abc的值不会变但是str存的地址是会改变的
String str2="abc";
System.out.println("999");//实际上打印的是System.out.println("999".toString());
System.out.println(str==str2);//true;因为abc是常量在内存里面同样的内容所有对象都调用同一个地址;所以这俩的地址一样
System.out.println(str.equals(str2));//true;自定义的类用equals方法需要重写,系统定义的类不需要重写因为已经写好了(Sting类,Scanner类)
}
7.当字节类型byte转成字符类型String会自动根据阿卡斯码表进行转换:byte数组中的值是正数时走ASCII码表;负数时走中文码表;
8.数字0-9:48-57;A-Z:65-90;a-z:97-112;
9.byte转String时负数转成汉字必须要2个数才行因为一个汉字占两个字节
10.char ch={a,b,c}字符转成字符串:String str=new String(ch,2,5);把字符转成了字符串;ch,2,5从第三(因为是数组所以下标2就是第三个)个开始转5个字符
11.获取长度:数组:length属性;集合:size()方法;字符串:length()方法
12.字符串操作(String)
截取字符串:str.substring();str.substring(10);是从下标10开始以后全是;str.substring(5,9);截取小标从5到9的字符串
判断字符串以什么开头;str.startsWith("java");判断以什么结尾:str.endsWith("java")
判断大字符串是否包含小字符串:str.contains("java");
判断小字符串第一次出现在字符串的位置:str.indexOf("java")
将字符串转为字节:byte[] by=str.getBytes(); 这个转后字符会转成数字
将字符串转为字符数组:char[] ch=str.tocharArray();
判断两个内容是否一致:a.equals(b); 判断内容是否一样且不分大小写:a.equalsIgonreCase(b)
13.StringBuffer的相关操作;是可变长度的字符串
StringBuffer sb=new StringBuffer();
添加数据:sb.append(值)
删除指定位置的字符:sb.delete(0,2);0是开始的下标,2是结束的下标
在指定位置插入指定值:sb.insert(0,"哪吒");0是指定的下标
在指定位置修改或替换:sb.replace(2,6"你好")
反转;就是字符串反过来打印:sb.reverse();
将StringBuffer转成String型那么就不能再修改值了:String str=sb.toString();
字符的相关操作
boolean equals(Object obj) 判断两个字符串中的内容是否相同
boolean equalsIgnoreCase(String str) 判断两个字符串中的内容是否相同, 忽略大小写
boolean contains(String str) 判断该字符串中 是否包含给定的字符串
boolean startsWith(String str) 判断该字符串 是否以给定的字符串开头
boolean endsWith(String str) 判断该字符串 是否以给定的字符串结尾
boolean isEmpty() 判断该字符串的内容是否为空的字符串 ""
int length() 获取该字符串的长度
char charAt(int index) 获取该字符串中指定位置上的字符
String substring(int start) 从指定位置开始,到末尾结束,截取该字符串,返回新字符串
String substring(int start,int end) 从指定位置开始,到指定位置结束,截取该字符串,返回新字符串
int indexOf(int ch ) 获取给定的字符,在该字符串中第一次出现的位置
int indexOf(String str) 获取给定的字符串,在该字符串中第一次出现的位置
int indexOf(int ch,int fromIndex) 从指定位置开始,获取给定的字符,在该字符
byte[] getBytes() 把该字符串 转换成 字节数组
char[] toCharArray() 把该字符串 转换成 字符数组
String replace(char old,char new) 在该字符串中,将给定的旧字符,用新字符替换
String replace(String old,String new) 在该字符串中, 将给定的旧字符串,用新字符串替换
String trim() 去除字符串两端空格,中间的不会去除,返回一个新字符串
String toLowerCase() 把该字符串转换成 小写字符串
String toUpperCase() 把该字符串转换成 大写字符串
int indexOf(String str,int fromIndex) 从指定位置开始,获取给定的字符串,在该字符串中第一次出现的位置