之前介绍继承的时候,提到对于子类而言,父类的普通方法可以重写也可以不重写,但是父类的抽象方法是必须重写的,如果不重写,编译器就直接在子类名称那里显示红叉报错.例如,以前演示抽象类用法之时,曾经把Chicken鸡类的call方法改为抽象方法,方法声明代码如下所示: // 定义一个抽象的叫唤方法.注意后面没有花括号,并且以分号结尾 abstract public void call(); 倘若派生自鸡类的公鸡类没有重写call方法,编译器除了红叉报错以外,还会弹出提示“Add unimplement…
前面介绍的Java编程,要么是与数字有关的计算,要么是与逻辑有关的推理,充其量只能实现计算器和状态机.若想让Java运用于更广阔的业务领域,就得使其支撑更加血肉丰满的业务场景,而丰满的前提是能够表达大众熟知的人类语言和文字.对于英文世界来说,除了数字之外,编程语言起码还要支持ABCD等大小写字母,以及常见的标点符号.由于现有的基本变量类型仅能表示各类数字与布尔值,因此要引入新的变量类型来存放字母和符号,这个新的类型被称作字符型char.有别于其它的基本类型,一个具体的字符值必须用单引号包起来,这…
前面的文章提到,Date是Java最早的日期工具,估计当时的设计师是个技术宅男,未经过充分调研就拍脑袋写下了Date的源码,造成该工具存在先天不足,比如getYear方法返回的不是纯正的公元纪年.getHours方法无法区分12小时制和24小时制等等,这很不利于Java语言的国际化.故而从JDK1.1开始,Java又提供了一个日历工具Calendar,官方建议采用Calendar替代Date,并且Date的相关get方法都被标记为Deprecated(意思是已废弃).接下来就来看看这个全新的Ca…
江湖上传闻,面向对象之所以厉害,是因为它拥有封装.继承与多态三项神技,只要三板斧一出,号令天下谁敢不从.前面费了老大的劲才讲清楚封装和继承,那么多态又是怎样的神乎其神呢?下面先通过一个简单的例子来说明多态的使用场景.首先把鸡这种家禽通过面向对象来表达,方便起见只定义两个属性(名称和性别),以及一个call方法,定义好的鸡类代码如下所示: //定义一个鸡类 public class Chicken { // 定义一个名称属性 public String name; // 定义一个性别属性 publ…
前面介绍了匿名内部类的简单用法,通过在sort方法中运用匿名内部类,不但能够简化代码数量,还能保持业务代码的连续性.只是匿名内部类的结构仍显啰嗦,虽然它省去了内部类的名称,但是花括号里面的方法定义代码一字不落,依然生生占据了好几行代码.比如下面排序方法的调用代码例子: Integer[] intArray = { 89, 3, 67, 12, 45 }; // 匿名内部类无需专门定义形态完整的类,只需指明新创建的实例从哪个接口扩展而来 Arrays.sort(intArray, new Comp…
清单作为一组数据的有序队列,它在组织形式上与数组有着某些异曲同工之处,数组有专门的数组工具Arrays来进行加工操作,照理清单也应该配备对应的清单工具.当然容器这个大家族确实拥有自己的容器工具Collections,不过数组工具Arrays也隐藏着一个清单方法,它便是asList,该方法类似数组的初始赋值,同样支持把括号内部的一系列数据直接转为清单对象.前面介绍泛型类和泛型接口的时候,就利用Arrays.asList给某个清单实例进行了初始化赋值,不过调用asList得到的数组大小是固定的,无法…
前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可能存在大量重复的信息,但依原样写到文件的话,无疑保留了不少冗余数据,造成空间浪费:其二,写入的数据多以明文方式保存,容易产生信息泄露,安全性不高.为此Java提供了简单的压缩和解压工具,在将数据写入文件之前,先对数据进行压缩,再将压缩后的结果写到文件:同样读取压缩文件之时,先读出已压缩的数据,再将这…
前面介绍的数组容纳的是一串数字,仿佛一根线把这组数字串了起来,故而它只是一维数组.一维数组用来表示简单的数列尚可,要是表达复杂的平面坐标系,那就力不从心了.由于平面坐标系存在水平和垂直两个方向,因此可用二维数组来保存平面坐标系上的一组坐标顶点,其中第一维是顶点队列,第二维是顶点的横纵坐标.许多个平面组合起来变成一幅动画,每个平面都构成动画的一个帧,这样就形成了三维数组.二维数组.三维数组,乃至更多维度的数组,统称为多维数组.多维数组全由一维数组扩展而来,它们的用法大同小异,因而只要学会如何使用二…
现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的特种官吏Java开发笔记(四)Java帝国的度量衡 第二章 数值变量Java开发笔记(五)数值变量的类型Java开发笔记(六)特殊数字的表达Java开发笔记(七)强制类型转换的风险 第三章 算术运算Java开发笔记(八)五种算术运算符Java开发笔记(九)赋值运算符及其演化Java开发笔记(十)一元…
下拉框只有在单击时才会弹出所有选项的下拉列表,这固然节省了有限的界面空间,但有时候又需要把所有选项都固定展示到窗口上.像这种平铺的列表控件,Swing给出的控件名称是ListBox,而JavaFX提供了列表视图ListView.在具体编码运用上,ListView的用法几乎跟ComboBox一模一样,二者的列表项拥有相同的数据来源,同样调用setStyle方法来设置各项字体,而且列表项的选择监听器也保持一致,唯一的区别便是控件名称由ComboBox改成了ListView.既然ListView的用法…