API:
开发人员写好的类当我们要使用这些方法时
静态方法:类名.方法名
成员方法:对象.方法名
Object
当一个类没有直接继承某个类时,该类都是object的子类
-
toString()
-
直接打印对象引用时,默认调用了toString方法
-
继承了object,所以拿来重写
-
Math类
ceil:向上取整
floor:向下取整
random:随机数0-1之间
Random类
生成随机数int范围之间的整数,可以在bound自定义范围
Random().nextInt(bound)
String类
常用方法
String构造方法
-
不可变性
-
字符串底层使用一个用fnal修饰的char类型数组进行存储的,一旦初始化,就不能改变
-
字符串存储在字符串常量池中,每当改变字符串变量时,常量池中会开辟一个新的字符串的空间,此时变量指向新的空间,达到值改变的效果
-
-
字符串的初始化
-
直接声明
-
通过构造函数进行初始化
-
字符串的比较
-
“==”比较
-
基本数据类型:比较的是内容
-
引用数据类型:比较地址
-
-
equals比较
-
object类中的声明方法,使用的是“==”进行比较的,比较的是地址
-
在字符串中比较的时候比较的是内容,因为在String类中重写了父类object中的equals方法,使其比较的是字符串的内容
-
-
String的常用方法
-
charAt()返回指定下标字符
charAt(int idnex):返回指定下标字符 例: String str = "123vasd"; str.charAt(3);//获取第三个数字为v
-
concat()拼接字符串到末尾,返回一个新的字符串
String str2 = str.concat("789");//"123vasd789”
-
endWith()判断字符串指定的字符串结尾
str.endWith("asd")//true
-
startWith(String suffix) 判断字符串是否以指定的字符串开头
str.startWith("123")//true
-
equalsImnoreCase(String anotherString):忽略大小写比较 ABC abc
str.equalsIgnoreCase(str3)//true
-
indexOf ( )返回指定字符串在源字符串中第一次出现的下标
str.indexOf(va)//3
-
lastIndexOf(String str) 返回指定字符串在源字符串中最后一次开始出现的下标
str.lastIndexOf("va")//3
-
replace() 字符串的替换,返回一个新字符
str.replace("va","av")//va替换成av
-
split()字符串分割
String str4 = "民族、富强、和谐"; str4.split("、");//转换成数组[富强, 民族, 爱情]
-
subString()从下表index开始对字符串进行截取
String str = "123vasd"; System.out.println(str.substring(2));//3vasd
-
toCharArray():将字符串转换成字符数组
char [] c = str.toCharArray(); System.out.println(Arrays.toString(c));//[1, 2, 3, v, a, s, d]
-
trim():去除两端字符串空白
String str3 =" hello "; System.out.println(str3.trim());//hello
StringBuffer
可以存储操作字符串,存储的字符串值是可变的,可以堪称一个字符缓冲,在频繁操作字符串的时候节省空间
原因:在StringBuffer中用于存储字符串的Char【】没有使用final修饰,说明初始化后,值是可变的,当我们改变字符串的值时,不会开辟新的空间,直接在原有的空间上改变字符串的值,所以节约空间消耗
-
append(String str):拼接
StringBuffer s = new StringBuffer("Java"); s.append(" nihao ");//Java nihao
-
replace(int start,int end,String str)指定下标位置进行替换,左闭右开
StringBuffer s = new StringBuffer("Java"); String str = "**"; s.replace(2,5,str);//Ja**
-
setCharAt替换指定下标
StringBuffer s = new StringBuffer("Java"); s.setCharAt(2,'b');//Jaba
-
toString()把StringBuffer类型转换成String类型
StringBuffer s = new StringBuffer("Java"); s.toString();//Java
-
reverse() 翻转
s.reverse();//abaJ
StringBuffer之间的比较
-
不能使用equals去比较StringBuffer,因为没有从写equals方法,调用了object中的方法,是==
-
比较时,转换成String类型使用equals比较
-
Date类
获取并操作时间的类
getTime()标识1970年1月1日 到现在的毫秒值
SimpleDateFormat类
-
格式化日期
-
使用SimpleDateFormat格式化日期
-
使用format将指定日期格式转换成日期字符串
-
Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年" + "MM月" + "dd日" + "HH时" + "ss分"); String time = sdf.format(date); System.out.println(time);//2022年11月29日15时32分
parse(String s):指定的日期字符串转换成Date类型对象。
注意:字符串所标识的日期,格式必须和构造函数传递 的格式一致
Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时ss分"); String time = sdf.format(date); String dateStr ="2018年12月25日11时24分"; Date d = sdf.parse(dateStr); System.out.println(d);
递归
方法自己调用自己,可以实现一些功能或者得到某些数据
根据公式
递归的的使用注意事项
方法不能一直调用自己,必须加上方法结束的自调条件,否则会造成栈异常,消耗栈内存
不要去递归构造函数(会无限创造对象)
递归次数不宜太多
方法调用的时候,会压栈
出栈的条件
执行return的时候出栈
方法从上往下执行出栈
总结数学公式,找到递归结束条件