第三部分 常用类

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,373评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,732评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,163评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,700评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,036评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,425评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,737评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,421评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,141评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,398评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,908评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,276评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,907评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,018评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,772评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,448评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,325评论 2 261

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,292评论 18 399
  • 第05天API 今日内容介绍 ·Object类& System类 ·日期相关类 ·包装类&正则表达式 ·Date对...
    chcvn阅读 365评论 0 1
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 8,383评论 3 93
  • 下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题...
    独念白阅读 1,220评论 0 3
  • 总觉得还会再见 13岁那年。 六年级。 对于毕业这个词儿,懵懵懂懂。 知道毕业意味着分离,但也没有太伤感。 13岁...
    脆琳咯吱脆阅读 196评论 0 0