前面多次提到了正则串.正则表达式,那么正则表达式究竟是符合什么定义的字符串呢?正则表达式是编程语言处理字符串格式的一种逻辑式子,它利用若干保留字符定义了形形色色的匹配规则,从而通过一个式子来覆盖满足了上述规则的所有字符串.正则表达式的保留字符主要有:圆括号.方括号.花括号.竖线.横线.点号.加号.星号.反斜杆等等,这些保留字符的作用详见前一篇博文,下面再简单总结一下它们的用途:圆括号“()”:把圆括号内外的表达式区别开来.方括号“[]”:表示方括号内部的字符互相之间是或的关系.花括号“{}”:花…
前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true”和“false”的布尔值,并非123之类的数字,因此还需专门的包装类型Boolean来包装boolean.Boolean作为包装类型,与数值包装类型相似,它也拥有三种变量初始化方式.由于布尔包装类型的初始化代码雷同数值包装类型,这里不再赘述,具体代码示例如下: // 初始化包装变量的第一种方式:直…
前面介绍了类的基本用法,主要是如何封装一个类的各项要素,包括成员属性.成员方法.构造方法等,想必大家对类的简单运用早已驾轻就熟.所谓“物以类聚,人以群分”,之所以某些事物会聚在一起,乃是因为它们拥有类似的品性.那么面向对象的目的,就是将一群事物之间共同的行为特征提炼出来,从而归纳为具有普适性的类型.像日常生活中说的昆虫.鱼类.鸟类,便是人们把外表相似.习性相近的一系列动物归类的结果.以鸟类为例,按照科学家的定义,它们是动物界→脊索动物门→鸟纲下面所有动物的总称.倘若按照大众的观点,鸟类为长着一对…
前面介绍了抽象方法及抽象类的用法,看似解决了不确定行为的方法定义,既然叫唤动作允许声明为抽象方法,那么飞翔.游泳也能声明为抽象方法,并且鸡类涵盖的物种不够多,最好把这些行为动作扩展到鸟类这个群体,于是整个鸟类的成员方法都可以如法炮制了.可是这种做法也带来了一些弊端,包括但不限于:1.能飞的动物不仅仅是鸟类,还有昆虫.蝙蝠等其它动物也能飞,难不成昆虫类.哺乳动物类也要自行声明飞翔方法?这么做显然产生了重复的方法定义.不然的话,要是把飞翔方法挪到更底层的动物类,一大群动物为了不沦为抽象类都得重写飞翔…
前面介绍各种容器之时,通过在容器名称后面添加包裹数据类型的一对尖括号,表示该容器存放的是哪种类型的元素.这样一来总算把Java当中的各类括号都凑齐了,例如包裹一段代码的花括号.指定数组元素下标的方括号.容纳方法输入参数的圆括号,还有最近跟在容器名称之后的尖括号.可是为什么尖括号要加到容器后面呢?它还能不能用于其它场合?若想对尖括号的来龙去脉究根问底,就得从泛型的概念说起了.不管是方法还是类,都支持输入指定类型的参数,其中方法的输入参数在调用方法时填写,而类的输入参数可通过构造方法传递.在这两种参…
作为一门面向对象的编程语言,Java认为一切皆是对象,每个对象都能归属于某个类,甚至每个类均可提取出一种特殊的类型,即Class类型.早在前面介绍多态的时候,就提到每个类都存在独一无二的基因,通过比较实例的类基因与具体类名的类基因,即可分辨某个实例是否属于目标类.例如,若想获取公鸡类的类型,则可通过“类名.class”得到该类的Class对象,详细的获取代码如下所示: // 第一种方式:通过“类名.class”获取 Class clsFromClass = Cock.class; System.…
前面介绍了如何通过Date工具获取各个时间数值,但是用户更喜欢形如“2018-11-24 23:04:18”这种结构清晰.简洁明了的字符串,而非啰里八唆依次汇报每个时间单位及其数值的描述.既然日期时间存在约定俗成的习惯表达,那就有劳程序员手工把日期时间转换成字符串呗,于是利用String类型的format方法,可将各个时间单位按照规定格式拼接成符合要求的字符串.下面是通过String.format方法转换日期时间的代码例子: Date date = new Date(); // 手工拼接指定格式…
早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字节大小.但是长整型也只能表达到负2的63次方~2的63次方-1,超出这个范围的巨大整数,竟连long类型也放不下.何况现在不管手机还是电脑的内存都是以GB计量,因此原先锱铢计较几个字节的数值类型便不合时宜了.为此Java又设计了一种大整数类型BigInteger,这个BigInteger能够表示任意…
前面提到字符类型是一种新的变量类型,然而编码实践的过程中却发现,某个具体的字符值居然可以赋值给整型变量!就像下面的例子代码那样,把字符值赋给整型变量,编译器不但没报错,而且还能正常运行! // 字符允许直接赋值给整型变量 private static void charToInt() { int a = 'A'; System.out.println("int a="+a); int tian = '田'; System.out.println("int tian="…
前面介绍了字符串变量的四种赋值方式,对于简单的赋值来说完全够用了,即便是两个字符串拼接,也只需通过加号把两个目标串连起来即可.但对于复杂的赋值来说就麻烦了,假设现在需要拼接一个很长的字符串,字符串内部包含了各种类型的变量,有整型,有双精度型,有布尔型,有字符型,中间还夹杂着一些起粘合作用的子串,如此一来只能使劲地填写加号,把各种变量努力加加加加上去,就像有时打印日志调用System.out.println就非常痛苦,加号多到让你眼花缭乱.为了不让加号如此横行霸道,String类型从Java5开始…