Java SE内容

###Object equals方法:public boolean equals(Object obj),是比较对象与给定对象内容是否一致。内容相等取决于业务逻辑需要,可以自行定义比较规则。

直接将Object转为子类是存在风险的,不能保证Object和要比较的对象是同一个类型的,这可能会引起ClassCastException【类造型异常】重写equals时首先是进行安全验证,确保给定的对象不是null,若是空说明引用变量没有指向任何对象,会引起NullPointerException【空指针异常】;再次是要判断给定的对象是否和当前对象是否为同一类型,不是同类直接返回false,不具备可比性。

equals和“==”区别,equals比较两个对象的内容是否一样;“==”比较是否为同一个对象。

###String特性:

String是引用类型,String对象是保证该对象的内容自创建开始就不可变!对字符串的任何变化都会创建新的对象。

编程习惯:当一个字符串变量和一个字面量进行比较,应该使用字面量的.equals方法和变量进行比较,这样不会引起NullPointerException。

String的常用方法:

String toLowerCase()---返回字符串的小写形式

String toUpperCase()---返回字符串的大写形式

String trim()---返回字符串为原始字符串去掉前导和后继的空白(空格,\t,\n,\r...)

boolean startsWith(String prefix)---判断字符串是否以参数字符串开头

boolean endsWith(String suffix)---判断字符串是否以参数字符结尾

int length()---返回字符串字符序列的长度

char charAt(int index)---返回字符串中索引index位置的字符

String substring(int start,int end)---截取字符串从start位置到end(不包含end)

byte[] getBytes(String charsetName)---用于将字符串以指定的编码集转换字节数组

String[] split(String regex)---将字符串按照特定的分隔符拆分成字符串数组。

String replaceAll(String regex,String replacement)---将字符串中匹配正则表达式的字符串替换成replacement

编码:将数据以特定格式转换为字节

解码:将字节以特定格式转换为数据

###正则表达式

作用:约束字符串的格式

[abc]---匹配a,b,c中的其中一个

[^abc]---除了a,b,c的任意字符

[a-z]---a到z中的任意一个字符

x?---表示0个或1个x

x*---表示0个或任意多个x

x+---表示1个到任意多个x(>=1个x)

x{n,m}---表示n个到m个x(>=n个且<m个x)

+的作用代表前面描述的内容出现1次以上等同于{1,}

[]---描述一个字符;():将一组字符看为一个整体

.---任意一个字符

\d---任意一个数字字符,相当于[0-9]

\D---任意一个非数字字符,相当于[^0-9]

\s---空白字符,相当于[\t\n\x0B\f\r]

\S---非空白字符,相当于[^\s]

\w---任意一个单词字符,相当于[a-zA-Z_0-9]

\W---任意一个非单词字符,相当于[^\w]

^ ---表示字符串必须以其后面约束的内容开始

$ ---表示字符串必须以其前面约束的内容结尾

若正则表达式不书写^或者$,代表匹配部分内容,都加上则表示全匹配。

使用java的字符串去描述正则表达式的时候,会出现一个冲突。如何描述正则表达式的“.”

起因:在正则表达式中描述一个“.”,但其在正则表达式中有特殊的含义,代表任意字符,所以在正则表达式中想描述“.”的原意就要写成“\.”。但是用java的字符串去描述正则表达式的时候,因为“.”在java字符串中没有特殊含义,所以java认为我们书写String s = "\.";是语法错误,因为"."不需要转义,这就产生了冲突。

目的:是在java字符串中描述"\.",所以要转义\,正确的写法:String s = "\\.";

###Commons-lang简介

commons-lang是Apache Commons项目中的一个组建,commons-lang针对JDK官方的java.lang包中的类提供了一些使用的补充,在实用中应用广泛

StringUtils是commons-lang包中提供的,针对字符串操作的工具类,该类提供了一系列静态使用方法:

String repeat(String str,int repeat)---重复字符串若干次

String join(Object[] array,String separator)---将一个数组中的元素连接成字符串

String leftPad(String str,int size,char padChar)---向左边填充指定字符以达到指定长度

String rightPad(String str,int size,char padChar)

StringBuilder,该类用于对谋个字符串频繁的编辑操作,使用StringBuilder可以在大规模修改字符串时不开辟新的字符串对象,从而节约内存资源,所以,对以有着大量操作字符串的逻辑中,不应该使用String而应该使用StringBuilder。

StringBuilder append(str)---向字符串中追加内容,return this

StringBuilder insert(int offset,char c)---在offset的位置插入char c,原位置的内容依次往后移。

StringBuilder replace(int start,int end,String str)---替换start至end范围的内容为str,范围是>=start,<end

StringBuilder delete(int start,int end)---删除start到end范围的内容,范围是>=start,<end

##StringBuilder与StringBuffer---效果是一样的,

区别:StringBuilder不是线程安全的,效率高于StringBuffer;StringBuffer是线程安全的,但效率相比之下低于StringBuilder

###日期处理

Date类,描述一个日期

Calendar类,不存在千年虫问题,并且方便计算日期。封装了日历信息,其主要作用在于其方法可以对时间分量进行运算。Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历),是绝大多数国家/地区使用的标准日历系统。

通过Calendar的静态方法(getInstance())获取一个实例,该方法会自行决定时区,创建Calendar类型实例。

calendar.set()

calendar.add()

calendar.get()

SimpleDateFormat类,用于字符串和日期类型间的相互转换

parse方法用于按照特定格式将表示时间的字符串转换为Date对象。

format方法用于将Date对象转换为表示时间的字符串。

###基本类型的包装类

类型间转换及Bigdecimal的常用方法

Bigdecimal数学运算:add(加法)/subtract(减法)/multipl y(乘法)/divide(除法)<除法需要注意规定精确度,否则会进入无限循环直至报错>

.valueOf(Integer x)是将整数的基本数据类型转换为Bigdecimal的实例

###Collection框架及List集合

Collection是集合的顶级父类,是一个接口,其下有两个子类:List和Set

List:元素可重复,equals为true,有序;常见的子类实现:ArrayList和LinkedList

List的其他操作:取子集subList(int fromIndex,int toIndex),若对子集修改,原集合元素也会被修改。

Set:元素不可重复,equals为false,大部分是无序的

###java泛型机制:本质是参数化类型,在类,接口和方法的定义过程中,所操作的数据类型被传入的参数指定。

ArrayList<E>,E为泛型,在创建对象时,可以将类型作为参数传递,此时,类定义所有的E将被替换成传入的参数

泛型可以在使用某个类的时候向传递参数一样来向这个类中某些内容传递一个类型。动态的决定这个被创建出来的类的实例的方法参数和返回值,属性的类型,从而提高程序的灵活性。需要注意,泛型是java1.5以后提供的新特性

java1.5的另一个新特性:新循环(增强for循环),专为遍历数组和集合设计的。

for(ElementType element:ArrayOrCollection){……},遍历数组或集合(ArrayOrCollection),将每一个元素依次赋值给element后进入循环体,直到所有元素均被迭代完毕后退出循环。

###数据结构

Queue队列,先进先出。Queue接口:offer(将元素放入队列);poll(从队列中取元素,获取的是最早offer的元素,该元素会从队列中删除);peek(获取队首的元素,但不删除元素)。LinkedList是队列的子类。

栈(Deque),先进后出。Deque接口方法:push(向栈中存储数据);pop(从栈中取出数据);peek(获取栈顶位置的元素,但不取出),LinkedList是栈的子类。

Collection是集合的接口

Collections类是集合的工具类,提供了对集合操作的若干方法,sort():对集合中的元素做自然排序。

Comparator比较器,是一个接口,实现该接口的类需要实现一个抽象方法 int compareTo(E o1,E o2)。比较器可以用于比较集合中的元素。Collections提供了sort的重载方法,支持传入一个比较器对集合进行比较。

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

推荐阅读更多精彩内容