自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pinlantu的博客

好好学Java,天天向前进

  • 博客(156)
  • 收藏
  • 关注

转载 《好好学Java 从零基础到项目实战》姗姗而来

梦里寻她千百度,千呼万唤始出来。从决定开始写这本书,到最终出版上市,数数已经是第三个夏天了。今年疫情有点紧,各行各业都受到影响,多亏出版社各位老师东奔西走,总算排除了万般艰难险阻,这才有了《好好学Java 从零基础到项目实战》的顺利上市。又是一本600页的编程书籍,拿在手中沉甸甸的,感觉两年的辛劳和等待终于没有白费。感谢这个伟大的时代给人激情澎湃,感谢清华社的老师在芸芸众生中发掘人才,让程序员也有机会成为技术作家,感谢我的家人始终如一的支持和关怀,使我能够集中精力写完本书。先来看看《好好学Java 从零基

2020-07-03 14:04:39 964 2

原创 Java开发笔记(序)章节目录

现将本博客的Java学习文章整理成以下笔记目录,方便查阅。第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的特种官吏Java开发笔记(四)Java帝国的度量衡第二章 数值变量Java开发笔记(五)数值变量的类型Java开发笔记(六)特殊数字的表达Java开发笔记(七)强制类型转换的风险第三......

2018-11-11 12:37:56 10323 7

原创 Java开发笔记(一百五十四)StringBuffer和StringBuilder的由来

本来String类已经能够完成字符串操作的所有功能,为何Java又提供了专门的StringBuffer和StringBuilder呢?这要从String类的设计说起了,查看String的源码,发现其内部采用字符数组保存字符串,如下所示:可是问题在于,这个字符数组被final修饰了,意味着数组大小不可改变。若想将现有字符串拼接一段字符形成新串(无论是加号拼接还是调用format方法),String类就无法扩充现有的字符数组,只能重新生成新的String对象。然而在需要频繁拼接字符串的场合,不断地重新生成

2022-07-08 09:17:13 393

原创 Java开发笔记(一百五十三)时间戳的获取和转换

日期时间是Java一个重要的数据类型,常见的日期时间格式通常为“yyyy-MM-dd HH:mm:ss”,但是计算机中存储的日期时间并非字符串形式,而是长整型的时间戳。因为字符串又占用空间又难以运算,相比之下,长整型只占用四个字节,普通的加减乘除运算更是不在话下,所以时间戳是最佳的日期时间存储方案。获取时间戳的代码很简单,只需调用System类的currentTimeMillis方法即可,如下所示: // 从System类获取当前的时间戳 long timeFromSy...

2020-07-25 11:43:00 773 1

原创 Java开发笔记(一百五十二)Date工具的时间格式

Java开发经常要把当前时间转为字符串,比如“2020-07-08 22:59:48”这样,此时会用到格式化工具SimpleDateFormat,该工具通过下列字符表示不同的时间单位:小写的yyyy:表示四位年份数字,如1949、2017等等。大写的MM:表示两位月份数字,如01表示一月份,12表示12月份。小写的dd:表示两位日期数字,如08表示当月八号,26表示当月二十六号。大写的HH:表示24小时制的两位小时数字,如19表示晚上七点。小写的mm:表示两位分钟数字,如30表示某个点钟的三十分。

2020-07-09 16:24:06 601 1

原创 Java开发笔记(一百五十一)Druid连接池的用法

C3P0连接池自诞生以来在Java Web领域反响甚好,业已成为hibenate框架推荐的连接池。谁知人红是非多,C3P0在大型应用场合中暴露了越来越多的局限性,包括但不限于下列几点:1、C3P0管理池内连接时没有采取LRU排队规则(最久未使用算法),意味着C3P0未能将数据库性能调到最优。2、在处理大批量数据的时候,C3P0对耗时操作过于容忍,致使容易出现线程死锁的状况。3、C3P0不支持...

2019-09-16 09:54:03 2730 1

原创 Java开发笔记(一百五十)C3P0连接池的用法

JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意。问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要关闭连接,无论是代码里手工关闭,还是由try语句自动关闭。如果没有及时关闭数据库连接,就会长时间占用有限的数据库内存,致使无谓的系统资源浪费。然而频繁开关数据库连接也有毛病,因为每次获取操作都要CPU...

2019-09-11 20:10:57 297 1

原创 Java开发笔记(一百四十九)引入预报告的好处

前面介绍了各种SQL语句的调用过程,虽然例子代码写死了每个SQL串,但是完全可以把查询条件作为方法参数传进来。比如现在想删除某个课程的教师记录,那么在编写删除方法时,就把课程名称作为该方法的一个输入参数。据此编写的方法代码示例如下:// 删除记录private static void deleteRecord(Statement stmt, String course) throws SQLE...

2019-09-09 20:49:15 231

原创 Java开发笔记(一百四十八)通过JDBC查询数据记录

前面介绍了通过JDBC如何管理数据库,当时提到Statement专门提供了executeQuery方法用于查询操作,为什么查询操作这么特殊呢?这是因为其它语句跑完一次就了事了,顶多像insert、update、delete再返回受影响的记录数量,但select命令跟它们不一样,查询语句可能会返回多条记录,每条记录又包含多个字段。似此多条记录多个字段的情景,返回值无论定义为哪种类型都不太好办,故而干...

2019-09-07 11:32:12 621 1

原创 Java开发笔记(一百四十七)通过JDBC管理数据库

前面介绍了如何通过JDBC获取数据库连接,可是Connection对象不能直接执行SQL语句,需要引入Statement报告对象才能操作SQL。Statement对象由Connection的createStatement方法获得,它主要提供了下列两个方法:executeUpdate:执行数据库的管理语句,主要包含建表、改表结构、删表、增加记录、修改记录、删除记录等等。它的返回值是整型,存放着当前...

2019-09-04 19:28:23 285

原创 Java开发笔记(一百四十六)JDBC的应用原理

关系数据库使得海量信息的管理成为现实,但各家数据库提供的编程接口不尽相同,就连SQL语法也有所差异,像Oracle、MySQL、SQL Server都拥有自己的开发规则,倘若Java针对每个数据库单独做一套方法,这些数据库操作方法将变得又庞大又冗余。为了解决不同数据库各自为政的问题,Java设计了统一的JDBC规范,只要程序员按照JDBC的方法操作,那么不管什么数据库都能在JDBC框架下正常处理。...

2019-09-02 19:11:05 279

原创 Java开发笔记(一百四十五)FXML布局的伸展适配

前面介绍了FXML的基本格式及其控制器的用法,算是打通了FXML方式的编码流程。程序界面通常保持固定尺寸,不过有时也允许用户拖曳窗口大小,不拖不打紧,一拖就可能坏事。像之前的登录窗口,没拖的时候界面如下图所示。现在开始慢慢把窗口拖长,拖到一半停下来,此时登录界面如下图所示。乍看过去,界面上的各控件大小保持不变,且始终居中显示,没发现什么问题。可是继续拖长窗口,突然之间这些控件乾坤大挪移,用...

2019-08-31 11:18:13 1788 1

原创 Java开发笔记(一百四十四)实现FXML对应的控制器

前面介绍了如何通过fxml文件编排界面布局,可是光有静态界面根本没法处理业务,必须另外书写业务逻辑的代码,方能响应各按钮的单击事件,并将业务结果即使呈现到界面上。显然,fxml内部写不了Java代码,同时入口程序已经把控件都托管给了fxml文件,也无法在Application代码中干预控件的操作。既然整个界面都托付给了fxml,那么解铃还须系铃人,只能且必须由fxml指定后续的逻辑控制器。具体做法...

2019-08-28 22:10:28 1398 1

原创 Java开发笔记(一百四十三)FXML布局的基本格式

前面介绍了JavaFX的常见控件用法,虽然JavaFX控件比起AWT与Swing要好用些,但是一样通过代码编写控件界面,并没有提高什么开发效率。要想浏览界面的展示效果,都必须运行测试程序才能观看,即使只是微调控件的大小,也得重新运行程序查看效果,显然既费时又费力。为此JavaFX提供了另一种给界面排版的方式,不必使用Java代码堆砌控件,而是利用FXML文件开展界面布局,同时借助于idea的预览功...

2019-08-26 22:35:40 2315 1

原创 Java开发笔记(一百四十二)JavaFX的对话框

JavaFX的对话框主要分为提示对话框和文件对话框两类,其中提示对话框又分作消息对话框、警告对话框、错误对话框、确认对话框四种。这四种对话框都使用Alert控件表达,并通过对话框类型加以区分,例如AlertType.INFORMATION表示消息对话框,AlertType.WARNIN表示警告对话框,AlertType.ERROR表示错误对话框,AlertType.CONFIRMATION表示确认...

2019-08-24 10:48:09 2888 1

原创 Java开发笔记(一百四十一)JavaFX的列表与表格

下拉框只有在单击时才会弹出所有选项的下拉列表,这固然节省了有限的界面空间,但有时候又需要把所有选项都固定展示到窗口上。像这种平铺的列表控件,Swing给出的控件名称是ListBox,而JavaFX提供了列表视图ListView。在具体编码运用上,ListView的用法几乎跟ComboBox一模一样,二者的列表项拥有相同的数据来源,同样调用setStyle方法来设置各项字体,而且列表项的选择监听器也...

2019-08-21 21:05:49 2985 1

原创 Java开发笔记(一百四十)JavaFX的选择框

与Swing一样,JavaFX依然提供了三种选择框,它们是复选框CheckBox、单选按钮RadioButton、下拉框ComboBox,分别说明如下:一、复选框CheckBox复选框允许同时勾选多个,已勾选的时候在方框内部打个勾,未勾选的时候显示空心方框。查看CheckBox的源码,发现它与Button控件都派生自抽象类ButtonBase,因而CheckBox拥有和Button同样的set...

2019-08-19 21:14:01 7954 1

原创 Java开发笔记(一百三十九)JavaFX的输入框

循着Swing的旧例,JavaFX仍然提供了三种文本输入框,分别是单行输入框TextField、密码输入框PasswordField、多行输入框TextArea。这些输入框都由抽象类TextInputControl派生而来,因此拥有共同的编辑方法,常用的主要有下列两个:setEditable:设置输入框能否编辑。为true表示能够编辑,为false表示不能编辑。setPromptText:设置...

2019-08-17 14:20:53 7191 3

原创 Java开发笔记(一百三十八)JavaFX的箱子

前面介绍了JavaFX标签控件的用法,其中提到Label文本支持中文字体,那么它到底支持哪些中文字体呢?自然要看当前的操作系统都安装了哪些字体才行,对于中文的Windows系统,默认安装了黑体“SimHei”、宋体“NSimSun”、仿宋“FangSong”与楷体“KaiTi”。在AWT与Swing的体系中,Font工具支持填入中文字体的名称;但在JavaFX编程之中,Font工具则要填写中文字体...

2019-08-14 21:29:09 503 1

原创 Java开发笔记(一百三十七)JavaFX的标签

前面介绍了JavaFX的窗口框架,其中舞台、场景、窗格都能与AWT/Swing体系的相关概念一一对应,不仅如此,JavaFX的常见控件也能在Swing中找到相应的控件。比如JavaFX的按钮控件名叫Button,对应Swing的JButton,两种按钮提供的方法也类似,下面是Button控件的常用方法说明:setText:设置按钮的文本。setPrefSize:设置按钮的推荐宽高。setAl...

2019-08-12 19:08:56 2573 1

原创 Java开发笔记(一百三十六)JavaFX的窗格

虽然Java自诞生之初就推出了AWT,紧接着第二版又推出升级后的Swing,打算在桌面开发这块大展拳脚;可是后来Java在服务器开发上大放异彩,在桌面开发上反而停滞不前,可谓失之J2SE收之J2EE。至于手机开发方向的J2ME,也因为安卓的异军突起而逐渐凋零,尽管安卓开发仍以Java语言为主,但谷歌公司却转去拥抱Kotlin,致使手机端的Java天下岌岌可危。为今之计,既然服务器开发的Java霸主...

2019-08-10 11:22:58 883 1

原创 Java开发笔记(一百三十五)Swing的文件对话框

除了常规的提示对话框,还有一种对话框也很常见,它叫做文件对话框。文件对话框又分为两小类:打开文件的对话框、保存文件的对话框,但在Swing中它们都用类型JFileChooser来表达。下面是JFileChooser的常用方法说明:setDialogTitle:设置文件对话框的标题。setApproveButtonText:设置确定按钮的文本。setCurrentDirectory:设置文件对...

2019-08-07 21:54:08 1371 1

原创 Java开发笔记(一百三十四)Swing的基本对话框

桌面程序在运行过程中,时常需要在主界面之上弹出小窗,把某种消息告知用户,以便用户及时知晓并对症处理。这类小窗口通常称作对话框,依据消息交互的过程,可将对话框分为三类:消息对话框、确认对话框、输入对话框,分别介绍如下:1、消息对话框这类对话框仅仅向用户展示一段文本,告诉用户发生了什么事情。它起到了提示的作用,但不支持用户干预事务。不管用户同意与否,都无法改变事件的进展。在Swing框架中,消息...

2019-08-05 18:59:40 946 1

原创 Java开发笔记(一百三十三)Swing的菜单

传统的桌面程序基本是对某种类型的文件进行加工,例如Window自带的记事本用来读写文本文件,自带的画图程序用来查看和修改位图文件。为了方便用户切换各种操作,这些程序在窗口顶端放了一排菜单栏,单击菜单栏上的每个菜单,又会在下方弹出一列菜单项,就像下图所示的记事本菜单那样。然后单击某个菜单项,比如“新建”、“打开”、“保存”等,记事本程序便会执行相应的处理操作。这组菜单在Swing中被分解为三种...

2019-08-03 12:54:51 1349 1

原创 Java开发笔记(一百三十二)Swing的表格

前面介绍了程序界面上一些简单控件的组合排列,它们用来表达相互之间联系较弱的信息倒还凑合,要是用来表达关联性较强的聚合信息就力不从心了。倘若只是简单信息的罗列,例如商品名称列表、新闻标题列表、学生姓名列表等,尚可使用列表框JList予以展示;倘若要求罗列复杂的排列信息,例如商品订单列表、新闻分类列表、学生成绩列表等等,像这种存在多项细节的信息列表就无法通过列表框表达,而应通过Swing的表格类型JT...

2019-07-31 21:58:26 939 1

原创 Java开发笔记(一百三十一)Swing的列表框

前面介绍了选择框的用法,当时为了方便用户勾勾点点,无论是复选框还是单选按钮,统统把所有选项都摆在界面上。倘若只有两三个选项还好办,要是选项数量变多比如超过五个,这么多的选择框一齐在界面罗列,不光程序员排版费劲,用户瞅着也容易眼花。鉴于这些选择框往往选完一次就了事,难得有重新选择第二次的机会,因而在界面上全部铺开这些选择框实属浪费。更好的做法是在选择的时候才展开所有选项,选完之后就缩回只显示选中的那...

2019-07-29 21:59:54 797 1

原创 Java开发笔记(一百三十)Swing的选择框

不管是AWT还是Swing,都把选择框分成两类:复选框和单选按钮,这两类控件无论是外观上还是功能上均有显著差异。例如,在外观方面,复选框是在方框内打勾,而单选按钮是在圆圈内画圆点;在功能方面,复选框允许多选,而同组的单选按钮只能选择其中一个。然而AWT的复选框和单选按钮统统采用Checkbox类型,区别之处在于是否加入了单选组CheckboxGroup。这不可避免又带来困惑,同样是Checkbox...

2019-07-27 22:48:15 2375 1

原创 Java开发笔记(一百二十九)Swing的输入框

Swing的输入框仍然分成两类:单行输入框和多行输入框,但与AWT的同类控件相比,它们在若干细节上有所调整。首先说单行输入框,AWT的单行输入框名叫TextField,平时输入什么字符它便显示什么字符,可一旦调用了setEchoChar方法设置回显字符,TextField马上变成只显示密文字符了。然而尴尬之处在于,设置回显字符之后,就没有办法取消原来的回显设置,输入框对象从此只能傻乎乎地显示密文了...

2019-07-24 21:44:43 1038 1

原创 Java开发笔记(一百二十八)Swing的图标

前面提过,AWT没提供能够直接显示图像的控件,这无疑是个令人诟病的短板,因为一上来就得由程序员自己去定义新控件,对于初学者来讲很不友好。这个问题在Swing中也解决掉了,不过Swing并未提供单独的图像视图,而是利用标签控件JLabel来显示图像。JLabel的setText方法用来设置标签上的文本,而setIcon方法用来设置标签上的图标,根据两个方法的调用与否状况,标签所展示的内容可分为下列三...

2019-07-22 21:37:13 685 2

原创 Java开发笔记(一百二十七)Swing的标签

提起AWT的标签控件Label,那个使用体验可真叫糟糕,不但不支持文字换行,而且对中文很不友好,既可能把中文显示为乱码,还不支持博大精深的各种中文字体。所幸Swing的升级版标签JLabel在各方面都做了优化,使之成为一个功能强大的标签控件,那么到底JLabel拥有哪些提升之处呢?且待笔者一一道来。首先看JLabel相较Label增加的新方法,这些方法主要有下列几个:setOpaque:设置标...

2019-07-20 18:55:57 882 1

原创 Java开发笔记(一百二十六)Swing的窗口

前面介绍了AWT界面编程的若干技术,在编码实践的时候,会发现AWT用起来甚是别扭,它的毛病包括但不限于下列几点:1、对中文的支持不好,要想在界面上正常显示汉字,还得在运行时指定额外的运行参数“-Dfile.encoding=gbk”;2、Label标签控件居然无法分行展示文本,连换行这么基本的功能都不支持,真是让人醉了;3、AWT没提供专门显示图像的控件,只能由程序员自己定义单独的图像视图,...

2019-07-17 22:25:28 372 1

原创 Java开发笔记(一百二十五)AWT图像加工

前面介绍了如何使用画笔工具Graphics绘制各种图案,然而Graphics并不完美,它的遗憾之处包括但不限于:1、不能设置背景颜色;2、虽然提供了平移功能,却未提供旋转功能与缩放功能;3、只能在控件上作画,无法将整幅画保存为图片;有鉴于此,AWT提供了Graphics的升级版名叫Graphics2D,这个二维画笔不但继承了画笔的所有方法,而且拓展了好几个实用的方法,包括设置背景色的set...

2019-07-15 22:12:55 270

原创 Java开发笔记(一百二十四)AWT绘图操作

前面介绍了如何使用画笔在控件上展示图像,可是图像来源于磁盘图片,无法即兴绘制个性化的图案。所幸画笔工具Graphics不仅能够描绘图像,还支持绘制常见的几何形状,也支持绘制文本字符串,除了绘制图像用到的drawImage方法,Graphics还有下列常见的绘图方法:setColor:设置画笔的颜色。drawLine:在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段。drawRect...

2019-07-13 10:26:43 508 2

原创 Java开发笔记(一百二十三)AWT图像视图

前面介绍了AWT的几种基础控件,从按钮到文本标签,从输入框到选择框,无一例外都能显示文字,唯独无法显示某张图片文件。本以为AWT会提供专门的控件来显示图片,然而偏偏没有意料之中的图像控件,这可真是弱爆了,居然不能显示姹紫嫣红的图片,让程序员情何以堪呀。不过咱程序员不是吃素的,与其坐等天上掉馅饼,不如自己动手编写符合要求的图像视图。AWT自带的界面控件,大多由Component类派生而来,该类与展示...

2019-07-10 20:22:19 364

原创 Java开发笔记(一百二十二)AWT选择框

前面介绍了两种文本输入框的用法,不过实际应用很少需要用户亲自文字,而是在界面上列出几个选项,让用户勾勾点点完成选择,这样既方便也不容易弄错。依据选择的唯一性,可将选项控件分为两类:一类是在方框中打勾的复选框,多个复选框允许同时勾选;另一类是在圆圈中点选的单选框,一组单选框最多只能选中一个。AWT实现复选功能的控件名叫Checkbox,它由两部分组成,左边部分是个支持打勾的方框,右边部分是说明文字...

2019-07-08 21:58:41 384

原创 Java开发笔记(一百二十一)AWT输入框

前面介绍了文本标签Label,该控件展示的文字是不可编辑的,若要用户在界面上输入文本,就得使用专门的编辑框控件。在AWT的控件家族当中,用作编辑框的有两种控件,分别是单行输入框TextField和多行输入框TextArea。TextField主要用于输入短小精悍的单行文字,跟Label一样,它拥有setPreferredSize、setText与setFont方法,但没有setAlignment...

2019-07-04 21:41:58 1434 1

原创 Java开发笔记(一百二十)AWT文本标签

前面介绍了AWT窗口及其面板的简单用法,其中展示出来的控件只有按钮一种,还有很多好用好玩的控件有待介绍。首先是文本标签Label,该控件用于显示一段平铺文本,它不花哨也不跳动,完全就是素面朝天的文本字符。不过,即便是文本,也能拥有鲜明的个性,犹如书法那样,可以横排也可以竖排,既可写在白纸上也可写在红纸上,还能以专门的字体来书写如楷书、行书、草书、隶书等等。这些彰显个性的功能,需要调用文本标签的相应...

2019-07-02 22:27:02 1381 1

原创 Java开发笔记(一百一十九)AWT布局

前面介绍了如何在窗口上添加一个按钮,可是每个软件界面都包含了许多控件,这些控件又是按照什么规则在界面上排列的呢?仍以按钮为例,假如要在窗口上依次添加多个按钮,那么界面会怎样显示这些按钮?想当然的话,按钮们可能从左往右排列,也可能从上往下排列,也可能后面的按钮在原处覆盖掉前面的按钮,究竟AWT会以哪种方式显示多个按钮,还得具体编码开展实地验证才行。下面便是往程序窗口先后添加五个按钮的代码片段:fr...

2019-07-01 21:37:37 526

原创 Java开发笔记(一百一十八)AWT按钮

前面介绍了如何通过AWT显示程序的窗口界面,那么要怎样在该窗口上面添加丰富多样的控件呢?注意Frame类是个窗口工具,它由窗楣(标题栏)与窗体(窗口主界面)两部分组成,故而Frame类只对整个窗口统筹规划,本身并不能直接添加各类控件。实际的控件管理操作交给了专门的Panel面板工具,由面板接管窗口主界面,在面板上添加和删除控件,Frame对象只需调用add方法把面板添加到窗口即可。接下来以常见的...

2019-06-29 13:38:27 383 1

原创 Java开发笔记(一百一十七)AWT窗口

前面介绍的所有Java代码,都只能通过日志观察运行情况,就算编译成class文件,也必须在命令行下面运行,这样的程序无疑只能给开发者做调试用,不能拿给一般人使用。因为普通用户早已习惯在窗口界面上操作,哪里还会跑去命令行自讨苦吃呢?所以Java代码写得再好,也得有个软件界面与用户交互,并将程序的处理结果显示在界面上。众所周知,移动开发的Android平台,采用的便是Java语言,此时Java代码的执...

2019-06-26 19:19:02 625 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除