一、重点知识
自己手写的equals方法最好先判断一下需要判断的参数是否为空,不然可能会出现空指针异常。
善用super. 调用父类写过的方法,使代码更简洁
重写父类的得equals方法,可以使用super.调用父类的equals方法,这样重复的属性就不用再重新判断了,提高了代码的简洁性
字符串常量池不允许存储相同的字符串
String中比较地址用 == 比较内容用 equals
api文档中方法没标明权限修饰符,一般就是默认是public
String类中的split("")切割方法""里的都算一个切割符,在切割时切割符会被除去,切割符在开头,中间都可以,但是在末尾不会再切割,多少个切割符在末尾都会被忽略
str2.replace("!","");
replace方法还可以去掉指定的字符,用一对双引号里面什么都不加来代替原来的字符。
切记,在二维数组内层数组分配空间之前,绝对不能直接通过下标调用内层数组,否则就会出现空指针异常
二、重点问题
1、file类的判断问题
public boolean isDirectory():判断是否是文件目录
public boolean isFile() :判断是否是文件
判断的前提,该文件是否存在在硬盘中,不存在就返回false,所以可以先用exsits判断是否存在
public boolean renameTo(File dest):把文件重命名为指定的文件路径
注意,要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。想改变的文件放前面,指定位置放参数中
2、String字符串的null 和 ""的区别
在string中 null和" "是有区别的
string s1 = new string();
System.out.print(s1)//结果为空白
" "对象是创建好了的,只是字符串常量池中啥也没存,没输出地址,是因为string重写了tostring方法
string s2 = null
System.out.print(s2)//结果为null
s2压根就没开辟内存,对象创建只有声明,但没有对应的内存空间,对象此时不算存在,直接访问属性或者方法会报错
三、课堂知识
能够表示字符串:String类,StringBuffer类,StringBuilder类。
String类:字符串内容不可以改变。
StringBuffer和StringBuilder:内容可以改变。但是StringBuilder的效率更高,因为他是线程不安全的
3.1、String类:内容不能更改
3.1.1 字符串常量
字符串的数据是常量,存储在字符串常量池中,字符串的数值是不能更改的。字符串池中不允许存储重复的字符串。因为复用性。
字符串:0-多个字符的序列。使用双引号引起来的内容。
"",字符串对象存在,但是里面没有字符
"a",字符串中有一个字符
"abc",
"hello world",
注意:'a'和"a"
char c = 'a';//基本数据类型
String s = "a";//引用类型,String类的
3.1.2 null和""
null,是指字符串对象压根就不存在,内存中没有
"",空字符串:字符串对象存在的,开辟内存,但是内容是空的。
3.1.3 字符串下标
字符串中的每个字符,其实都有固定的下标,index,从0开始,到长度减1。超出范围就下标越界。同数组类似。
3.1.4 String类的常用方法
1、创建字符串:
//1.直接创建
Strings1="abc";
//2.通过构造方法
Strings2=newString();//""
//3.其他的构造方法
newString("abc");
newString(byte[]);
newString(byte[] ,offset,length);
newString(char[])
newString(char[] ,offset,count);
//....
2、常用方法:
A:搜索类
indexOf(int)-->int
indexOf(String)-->int
indexOf(int,fromIndex)-->int
indexOf(String,fromIndex)-->int
lastIndexOf(int)
lastIndexOf(String)
lastIndexOf(int,fromIndex)
lastIndexOf(String,fromIndex)
B:判断类
contains()-->boolean,是否包含指定内容
equals()-->boolean,判断字符串的字面值,是否相等,重写Object类
equalsIgnoreCase()-->boolean,忽略大小写的比较
startsWith()-->boolean,是否以指定内容开头
endsWith()-->boolean,是否以指定内容结尾
C:获取新的字符串
concat()-->String,拼接,作用同+
subString(fromIndex)--->String,截取子串
subString(fromIndex,endIndex)-->String,包含fromIndex,不包含endIndex
replace(oldchar,newchar)-->String,替换
replace(CharSequence,CharSequence)-->String
trim()->String,忽略首尾空格
toLowerCase()-->String,转小写
toUpperCase()-->String,转大写
D:获取其他
length()-->int,获取长度
getBytes()-->byte[],获取字节数组
toCharArray()-->char[],获取字符数组
charAt(index)-->char,根据下标获取指定的字符
split(切割符)-->String[],切割
网友评论