如果不用import引用类,以后每次使用的是都都要打类的全名, java.util.Array.
除了java.lang包里的都要引入
Object:所有类的超类(数组,字符串等引用类型)
1.equals()
用于检测一个对象是否等于另一个对象,在Object类中,这个方法判断两个对象是否具有相同的引用 。在子类中定义equals方法时,首先调用超类equals,如果检测失败返回false,如果为true则需要比较子类的实例域(大多数重写)
public boolean equals(Object otherObject){
if(!super.equals(otherObject))
{return false;}
else{Manager other==(Manager)otherObject;}
return bonus==other.bonus;}
若两个参数不属于同一个类
(为了实现对称性:对称性x.equals(s)和s.equals(x)返回值相同)
(1).如果子类有自己相等概念则用getClass(),此时用到了子类的特有信息,所有要找到对象直接所属的类
o1.getClass().equals(A.class) //getClass实现了e1.equals(e2)和e2.equals(e1)都正确的对称性
当比较一个雇员对象(父类)和经理(子类对象),如果雇员对象的基本信息与经理对象的基本信息相同,
当调用雇员.equals(经理)的时候,这时调用的是雇员里的equals方法,所以比较的是雇员的信息,这时是true,
但是调用经理.equals(雇员),调用的是equals的方法,比较经理的信息,这时返回true
而getClass直接找到两个对象是否是同一对象,不是则直接返回false
注:这里指的父类就是父类引用引用父类对象,对于多态没有上述的对称性的影响,因为多态会自动选择子类重写的方法
o1 instanceof A //用于检测属于该类或者其子类
public boolean equals(Object otherObject){
if(this==otherObject)return true;//看两个对象是不是相等对象
if(otherObject==null)return false;
if(getClass!=otherObject.getClass())return false; //同一个
Employee other=(Employee)otherObject //强制转换
return salary==other.salary
}
hashcode,字符串的hashcode由它的内容决定,其它类,是由对象存储地址决定
Equals相等,hashcode必须相等,equals重写hashcode也必须重写
hashcode相等,对象并不一定相等()
2.toString()
返回该对象的字符串表现形式, 大多数要重写 //打印对象的数据,使得打印数据打印的不是地址
public String toString(){
return "类名[name="+name+",salary="+salary"]";
return getClass().getName()+"[name="+name+",salary="+salary"]";
}
如果超类使用了getClass().getName,子类调用super.toString()就行了
如果直接输入对象名,相当于输入了对象.toString()
最好每一个类都重写toString()方法
String类
不可直接修改内容,只能通过当前引用引用另一字符串进行修改,两个字符串相加得到的是一个新的字符串
常用方法构造方法:
String s=new String(char[]) 字符数组变成字符串
String s=new String(char[],offset,count) 一部分转换为字符串
常用方法
1.
2.截取字串
3.表判断的方法
4.转换
char[] toCharArray() 转换为字符数组
byte[] byt ="java".getBytes();
5.
1.compareTo(2) 两字符串比较,若1>2,返回正数,反之,返回负数
String[]split=s.split(",")根据逗号将字符串转换为数组
StringBuilder:使用前先创建对象
用来操作字符串的类,在操作字符串的时候是在原有的字符串的基础之上添加的,由此证明使用StringBuilder来操作字符串比String效率快
构造方法可以将字符串转换为StringBuilder StringBuilder s=new StringBuilder(String st)
1.添加,删除
2.修改
3.查找
4.获取字符串
StringBuffer:和StringBuilder方法相同,用于多线程,安全
小量数据用String,单线程用StringBuilder效率高,多线程用StringBuffer安全
Math
不能被创建对象,因为其构造对象是私有的,其方法由于都是执行相同的工作,与其实例无关,所以都被修饰为静态的
round(double x) //四舍五入
random() 返回介于0.1-1.0之间的双精度浮点数
abs(参数) 返回绝对值
cbrt(参数)返回参数的立方根
min(参数1,参数2) 返回两个参数中小的数
max(参数1,参数2) 返回两个参数中大的数
ceil(double d)向上取整
floor(double d) 向下取整
pow(参1,参2)返回第一个参数第二个参数的值
基本类型包装类(类似拿一个东西将基本类型包在里面)
为什么有包装类:因为基本类型无法参与面向对象的开发(不能调用方法)
把基本类型包装成对象
Boolean
Character
Byte
Short
Integer
Long
Float
Double
在以前需要自己进行包装,现如今出现了autoboxing,实现了自动打包和自动解包的机制,也就是包装类和基本类型可以自动转换了(自动打包其实调用的是valueOf()方法,自动解包调用的是intValue()方法)
字符串转为Integer 可以通过构造函数或者parseInt转换
Random 方法
nextInt()输入int型随机数,范围为int的范围
nextInt(index) 输入区int型随机数,范围为【0,index)也就是【0,index-1】
一次要想获得0-50间的随机数,包括0和1就要使用nextInt(51)
System
System.exit () :退出虚拟机
setIn(InputStream in) 设置输入值在哪 setOut(PrintStream out) 设置输出值在哪
System.arraycopy(src, srcPos, dest, destPos, length);
第一个是要复制的数组,第二个是从要复制的数组的第几个开始,第三个是复制到那,四个是复制到的数组第几个开始,最后一个是复制长度
Scanner
//Scanner in=new Scanner(System.in) 键盘输入
nextInt()
nextDouble()
next() 不识别空格 hasNext() 是否还有其它单词
nextLine() 可识别空格
console()用于获取密码
枚举类()每一种类型必须取某些特定值
public enum 类名{
选择1,选择2,选择3......
}
方法 (1)values 返回枚举类数组 Size[] values=Size.values()
(2)toString 返回枚举类常亮名称 ,例如 Size.SMALL.toString()返回 SMALL
(3)枚举类 对象=Enum.valueOf(枚举类.class,String型)
(4)ordinal返回枚举类常量位置,例如类名.选择1.ordinal()返回的是1
(5)compareTo(E other).若枚举常量出现在other前,返回负值,相等返回0,否则返回正值
{
public static void main(String[] args)
{Size size=Enum.valueOf(Size.class,"SMALL");
System.out.println(size);
System.out.println(size.getAbbreviation());
}
}
enum Size{
SMALL("S"),LARGE("L"); //
private Size(String abbreviation){
this.abbreviation=abbreviation;}
public String getAbbreviation(){return abbreviation;}
private String abbreviation;
}
Date 类
实例有一个状态表示特定时间点(时间是用距离某个特定点的毫秒数表示的,这个点是纪元):用来表示时间点,不推荐用这个类获取特定年月日,不能设置时间
1.日期变毫秒 Date d=new Date(); long time1=d.getTime()
2.毫秒变日期 long time=2156515; Date d=new Date(); d.setTime(time)
GregorianCalendar子类 /Calendar抽象类:
日历表示法(Calendar是一个抽象类,所以常用其子类)
Calendar是一个抽象类,所以常用其子类,Calendar c=Calendar.getInstance;
new GregorianCalendar() 用来表示对象构造时的时间
字段:
Calendar.Year / Calendar.Month/ .DAY_OF_MONTH /HOUR_OF_DAY 等等
构造方法
new GregorianCalendar(年,月,日,时,分,秒) 构造某个特定时间的日历对象,
月份从0开始,11表示12月,Calendar.DECEMBER也表示12月
普通方法
getActualMaximum可以获得本月有多少天
//已知年月日,想创建一个包含此年月日的Date对象,必须用GregorianCalendar转换
GregorianCalendar calendar=new GregorianCalendar(year,month,day)
Date hireDay=calendar.getTime()
//如果想获得Date对象的年月日单独的信息,就要把Date对象的时间信息,设置到GregorianCalendar中,然后再获取
GregorianCalendar calendar=new GregorianCalendar()
calendar.setTime(hireDay)
int year=calendar.get(Calendar.YEAR)
SimpleDateFormat
该类是用来使日期类型与字符串类型之间相互转换的类
构造函数:SimpleDateFormat(String pattern) 用来制定转换的规则
format可以用来格式化日期对象,按照你想要输出的形式输出,而parse可以将字符串转换成Date对象,之后你可以使用Date的方法