前面提到字符类型是一种新的变量类型,然而编码实践的过程中却发现,某个具体的字符值居然可以赋值给整型变量!就像下面的例子代码那样,把字符值赋给整型变量,编译器不但没报错,而且还能正常运行! // 字符允许直接赋值给整型变量 private static void charToInt() { int a = 'A'; System.out.println("int a="+a); int tian = '田'; System.out.println("int tian="…
Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义.前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的: @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override {} 又如注解@FunctionalInterface,它的源码定义与之类似: @Documented @Retentio…
前面介绍了日历工具Calendar的基本用法,乍看起来Calendar与Date两个半斤八两,似乎没有多大区别,那又何苦庸人自扰鼓捣一个新玩意呢?显然这样小瞧了Calendar,其实它的作用大着呢,接下来不妨深入探讨一下Calendar的几种实际应用,主要包括:Calendar和Date类型互相转换.计算两个日历时间的天数.打印当前月份的月历等,分别说明如下. 1.Calendar和Date类型互相转换虽说Date早就应该被Calendar取代,但毕竟是前辈,而且Java也一直没有抛弃它,特别有…
前面介绍了类的多态性,来自于鸡类的实例chicken,既能用来表达公鸡实例,也能用来表达母鸡实例.可是这导致了一个问题,假如在call方法内部需要手工判断输入参数属于公鸡实例还是母鸡实例,那该如何是好?所谓“雄兔脚扑朔,雌兔眼迷离,双兔傍地走,安能辨我是雄雌”,固然编译器在运行之时能够自动判断这是哪种鸡,可是若让程序员自己辨别倒的确是件伤脑筋的事情.虽说伤脑筋,却也并非无法实现,粗略算来大致有三个办法能派上用场,接下来分别进行阐述.第一个办法,区别公鸡和母鸡,关键在于识别鸡的性别.注意到Chic…
前面介绍了Lambda表达式的用法,从实践中发现它确实极大地方便了开发者,然而不管是匿名内部类还是Lambda表达式,所举的例子都离不开各类数组的排序方法,倘使Lambda表达式仅能用于sort方法,无疑限制了它的应用范围.那么除了sort方法,还有哪些场景能够将Lambda表达式派上用场呢?既然匿名内部类与Lambda表达式都依附于某种接口,追根究底,就得好好研究一下这种接口的特别之处.关于排序方法sort的第二个输入参数,原本定义的参数类型是比较器Comparator,可是这个比较器真正有用…
通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方法给清单对象做初始化赋值,另外提供了专门的Collections工具进行排序.求最大元素.求最小元素等操作.那么涉及到更加复杂的数据处理,游荡如何有针对性地筛选和进一步加功能?依次遍历目标容器,对所有元素逐个加以分析判断,并酌情将具体数据调整至满意的状态,这种千篇一律的业务流程固然能够解决问题,可惜…
前面多次提到了正则串.正则表达式,那么正则表达式究竟是符合什么定义的字符串呢?正则表达式是编程语言处理字符串格式的一种逻辑式子,它利用若干保留字符定义了形形色色的匹配规则,从而通过一个式子来覆盖满足了上述规则的所有字符串.正则表达式的保留字符主要有:圆括号.方括号.花括号.竖线.横线.点号.加号.星号.反斜杆等等,这些保留字符的作用详见前一篇博文,下面再简单总结一下它们的用途:圆括号“()”:把圆括号内外的表达式区别开来.方括号“[]”:表示方括号内部的字符互相之间是或的关系.花括号“{}”:花…
Date是Java最早的日期工具,编程中经常通过它来获取系统的当前时间.当然使用Date也很简单,只要一个new关键字就能创建日期实例,就像以下代码示范的那样: // 创建一个新的日期实例,默认保存的是系统时间 Date date = new Date(); 有了这个日期实例,再来调用getYear(获取年份).getMonth(获取月份).getDate(获取日子).getDay(获取星期几).getHours(获取时钟).getMinutes(获取分钟).getSeconds(获取秒钟)等方…
前面介绍了如何通过Date工具获取各个时间数值,但是用户更喜欢形如“2018-11-24 23:04:18”这种结构清晰.简洁明了的字符串,而非啰里八唆依次汇报每个时间单位及其数值的描述.既然日期时间存在约定俗成的习惯表达,那就有劳程序员手工把日期时间转换成字符串呗,于是利用String类型的format方法,可将各个时间单位按照规定格式拼接成符合要求的字符串.下面是通过String.format方法转换日期时间的代码例子: Date date = new Date(); // 手工拼接指定格式…
程序除了处理内存中的数据结构,还要操作磁盘上的各类文件,这里的磁盘是个统称,泛指可以持久保留数据的存储介质,包括但不限于:插在软驱中的软盘.固定在机箱中的硬盘.插在光驱中的光盘.插在USB接口上的U盘.笔记本电脑里的固态盘.手机中的闪存.相机里的SD卡等等.当然,操作系统层面已经统一了这些存储介质,故而编程语言无须理会它们之间的区别,只需专心访问存储介质上保存的文件.为表述方便,接下来将用"磁盘"二字代指以上罗列的各种存储介质.Java使用File工具来操作磁盘文件,只要在构造方法中填…