一,概念:
API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件可以访问的一些功能 集。
二,Object类
1,Object是所有java类的祖先,是顶级父类,存在于java.lang.Object
①toString()
重写前:cn.tedu.api.Student@1b6d3586地址值;
重写后:对象的类型与属性值Student{name='Xxx', age=X};
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
②HashCode()
我们可以大致理解成不同对象的哈希码值就是不同的
③equals()
本方法底层的判断逻辑是==比较,==比较比较的是左右两边的值
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
三,String
①特点:
String是封装char[]数组的对象,字符串不可变
通过下图中的底层实现可以看出:被final修饰,是常量
②常见方法:
int hashCode():返回此字符串的哈希码。
boolean equals(Object anObject)将此字符串与指定的对象比较
比较的是重写后的串的具体内容
String toString():返回此对象本身;
int length():返回此字符串的长度;
String toUpperCase()所有字符串都转换成大写
String toLowerCase()所有字符串都转换成小写
boolean startsWith(String s)测试此字符串是否以指定元素开头
boolean endsWith(String s)测试此字符串是否以指定元素结束
char charAt(int index)返回指定索引/下标处的char值
int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。
String concat(String str) 将指定字符串连接/拼接到此字符串的结尾,注意:不会改变原串
String[] split(String regex) 根据给定元素来分隔此字符串
String trim() 返回去除首尾空格的字符串
byte[] getBytes() 把字符串存储到一个新的 byte 数组中
String substring(int beginIndex) 返回一个新子串,从指定下标处开始,包含指定下标
String substring(int beginIndex, int endIndex) 返回一个新子串,从执定下标开始,到 结束 下标为止,但不包含结束下标
五,StringBuffer和StringBuilder
1.特点:
①封装了char[]数组
②是可变的字符序列
③提供了一组可以对字符内容修改的方法
④常用的append()来代替字符串连接‘+’
⑤StringBuffer 线程安全,StringBuilder线程不安全
2.常见方法
append();
3.字符串连接练习
public class Demo02 {
public static void main(String[] args) {
String s="sdadvsbvadciaxasdxcxz";
//method1(s);
method2(s);
}
private static void method2(String s) {
StringBuffer sb = new StringBuffer();
StringBuilder sb1 = new StringBuilder();
long t1= System.currentTimeMillis();
for (int i=0;i<10000;i++){
sb.append(s);
}
long t2 = System.currentTimeMillis();
System.out.println(sb);
System.out.println(t2-t1);
}
//字符串的拼接
private static void method1(String s) {
String result = "";
for (int i=0;i<1000;i++){
result = result+s;
}
System.out.println(result);
}
}
面试题:==和equals的区别:
比较时,如果相比较的两个变量是引用类型,那么比较的是两者的物理地值(内存地 址),如果相比较的两个变量都是数值类型,那么比较的是具体数值是否相等。
四,StringBuilder和StringBuffer的区别
1.在线程安全上 :
StringBuffer是旧版本就提供的,线程安全的。@since JDK1.0
StringBuilder是jdk1.5后产生,线程不安全的。@since 1.5
2. 在执行效率上,StringBuilder > StringBuffer > String
六,正则
正则的规则:
常用来判断用户输入的内容是否符合格式的要求,注意是严格区分大小写的
看图:
七.包装类
八,Number(数字包装类)
提供了各种获取值的方式
九,自动装箱和自动拆箱
public class Demo05 { Integer i1 = new Integer(127); Integer i2 = Integer.valueOf(127); /*自动装箱:编译器会自动把基本类型int5,包装成包装类型Integer * 然后交给Integer类型的引用类型变量i3来保存 * 自动装箱底层的代码:Integer。valueOf(5) * valueOf()的方向:int--》Integer * */ Integer i3 = 5;//不会报错,这个现象就是自动装箱 }
十,BigDecimal(常用来解决精确的浮点数运算不精确的问题)
import java.math.BigDecimal; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { f1(); //f2(); } private static void f2() { //提示并输入用户接受的两个小数 System.out.println("请输入您要计算的两个小数"); double a =new Scanner(System.in).nextDouble(); double b =new Scanner(System.in).nextDouble(); System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b); } private static void f1() { System.out.println("请输入您要计算的两个小数"); double a =new Scanner(System.in).nextDouble(); double b =new Scanner(System.in).nextDouble(); //创建工具类对象 BigDecimal bd1 = new BigDecimal(a+""); BigDecimal bd2 = new BigDecimal(b+""); //使用工具类对象进行运算 BigDecimal db3; //进行加法运算 db3=bd1.add(bd2); System.out.println(db3); //减法运算 db3=bd1.subtract(bd2); System.out.println(db3); //乘法运算 db3=bd1.multiply(bd2); System.out.println(db3); //除法运算Divide(BigDecimal bd) : 做除法运算,除不尽时会抛异常 //Divide(BigDecimal bd,保留位数,舍入方式) : 除不尽时使用 db3=bd1.divide(bd2,5,BigDecimal.ROUND_HALF_UP);//BigDecimal.ROUND_HALF_UP:四舍五入 } }