java自学程序员

第三部分 常用类

2017-11-04  本文已影响10人  孙浩j

如果不用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的方法

上一篇 下一篇

猜你喜欢

热点阅读