1.Objece类(equals)
D15.
1.
接口不继承Objece,只有类继承
引用对象==表示比较对象的内存地址
person p1=new person ("张三",20);
person p2=new person ("李四",21);
p1.equals(p2);
public boolean equals(Object obj){
this==obj; //比较对象的内存地址是否相等,new的对象内存地址都不相同
}
2.自定义比较年龄
public boolean equals(Object obj){ //发生了类型提升,person类提升为Object类Object obj=p2
person p=(peroson)obj; //多态中,父类无法调用子类的特有功能,需要向下转型
this.age==p.age;
}
3.存在的风险
public boolean equals(Object obj) //参数是Object,表示任何类都可以接受,存在风险
if(obj instanceof person){ //判断Obj是否为person类
........
}
if(obj == null){
return false;
}
2.String类
1.immutable
不可变字符串(immutable),字符串对象不变,str指向的内存发生变化
字符串是常量private final char value [ ];
String str="itcast";
sop(str);
String str="ithe";
sop(str);
startwith();
endwith();
contains();
indexOf();
3.StringBuffer类的方法
reverse();
toString();
append();6
indexOf();
delete();
insert();
replace();
4.StringBuilder和StringBuffer
StringBuilder是线程不安全的StringBuffer类,运行速度比StringBuffer快
StringBuffer线程安全的类,运行速度慢
1.匹配规则 (
D16
)
// 第一个为转义字符,将第二个转为普通的斜线
[.] 匹配任意字符
/d 0-9
/w 字母和数字
String str="11 22 33 44";
String [] a=str.split(" +"); //只要出现了空格,无论几个
String str="192.168.1.1";
String [] a=str.split(" \\.+"); //.匹配任意字符,需要将.转为普通字符
@前:字母,数字,下划线
@后:小写字母,数字
.后:字母
String str="abv@163.com.cn";
boolean b=str.match("[a-zA-z0-9_]+@[a-z0-9]+(\\.[a-z]+)+"); //邮箱匹配规则,(\\.[a-z]+)+表示.加字母的形式可以出现多次
2.Date类
1.构造方法和方法:
1.构造方法:
1.date(); //获取当前操作系统对应的时间
2.方法:
1.long system.currentTimeMillis(); //当前日期时间对应的毫秒值
2.longdate.getTime();//返回值为Long,将date表示的日期(当前时间)转化成毫秒值
3.void date.setTime(long time); //毫秒值转换成日期,将日期设置成指定的毫秒值 和date(long l)作用相同
2.DateFormat类(E11)
1.日期格式化
创建SimpleDateFormat对象,在类构造方法中写入字符串的日期格式
2.转换
1.
format();Date => String Sun Dec 09 21:21:21 CST 2018 =>2018-12-9
SimpleDateFormat调用format对日期进行格式化
String format(Date date)传递日期对象,返回字符串
eg:
SimpleDateFormat sdf=new SimpleDateFormat ("yyyy年MM月dd日 HH点mm分ss秒");
String date = sdf.format(new date());
2.
parse(); String => Date 2018-12-9 =>Sun Dec 09 21:21:21 CST 2018
SimpleDateFormat sdf=new SimpleDateFormat ("yyyy-MM-dd");
Date date = sdf.parse(new date());
4.Calendar类(13)
抽象类,实现子类为 GregorianCalendar
不需要new子类对象,而是通过静态方法直接获取
1.getInstance();
Calendar c=Calendar.getInstance();
2.get(); //获取时间字段
Calendar c=Calendar.getInstance();
int year=c.get(Calendar YEAR);
int month=c.get(Calendar MONTH)+1;
3.set(); //更改时间字段
set(int field,int value); //将field字段更改为
set(Calendar.MONTH,4); //将MONTH设置为5月
set(int year,int month,int day); //直接设置年月日
4.getTime(); //日历对象转换成date日期对象
Calendar c=Calendar.getInstance(); //java.util.GregorianCalendar[time=12412414124,areFieldsSet=true,lenient=true]
Date date=c.getTime();
sop(date); //Sun Dec 09 21:21:21 CST 2018
5.计算是否是闰年
//日历设置的指定年的3月1日,使用add()方法,向前偏移1天,获取天数,以此判断是否是闰年
Calendar c=Calendar .getInstance();
c.set(year,,2,1);
c.add(Calendar.Day_Of_Month,-1);
int day=c.get(Calendar.Day_Of_Month);
if(day==29){
return true;
}
return false;
1.Integer类(
D16
)
1.转换
1.int a=Integer.parseInt("123"); //字符串必须是数字格式的,将数字类型的字符串 变为基本类型int
2.int => String
任何类型+""变成String类型
Integer中的静态方法toString(int i);
toString(int i, int radix)将i转为radix进制
2.装箱和拆箱
自动装箱:基本数据类型直接变成对象
自动拆箱:对象中的数据变为基本数据类型
Integer in=1; => Integer in=new Integer(1);
in=in.intValue()+1=2
in=in+1; 自动拆箱
3.exercise
=======================================
Integer a=500;
Integer b=500;
a==b; //false,自动装箱,相当于Integer a=new Integer(500);
a.equals(b); //true
=======================================
Integer a=127;
Integer b=127;
a==b; //true,数据范围在bytes(-128-127)以内,JVM不会new新的对象
a.equals(b); //true
2.System类
1.
arraycopy(Object src,int srcPos,Object dest, int destPos, int length)
Object src:要复制的源数组
int srcPos:源数组起始索引
Object dest:复制的目标数组
int destPos:目标数组起始索引
int length:复制的长度
3.Math类
1.Array工具类(
D17
)
1.Arrays.sort(); //实现数组升序排列
2.Arrays.binarySearch(数组,被查找的元素) //如果元素不存在返回(-插入点-1)
3.Arrays.toString(int [] a) //将数组转换为字符串
2.BigInterger类
1.构造方法
BigInterger(String val); // 字符串没有范围限制,推荐使用
2.方法
add();
subtract();
multiply();
divide();
3.BigDecimal类
1.构造方法
BigDecimal(String val);
2.
add();
subtract();
multiply();
divide();
devide(BigDecimal divisor, int scale,RoundingMode roundingMode) //设定精确范围和小数舍入模式