JavaSE
文章平均质量分 80
西召
公众号「西召」作者,关于技术,还有阅读,写作和思考...
展开
-
JavaSE--学习实战完全笔记--增强版的线程创建方式--实现Callable接口
JDK1.5提供的Callable的call()方法,可以有泛型、抛出异常、有返回值。实现Runnable接口,Thread类可以把run方法包装成线程执行体,但不能把其他方法包装成线程执行体。 至此我们知道,创建线程有三种方法,即直接继承Thread类和实现Callable接口或Runnable接口。那么当我们需要创建线程时应该如何选择呢? 一般的,直接继承Thread类编程简单,但不能继承其他类。通过实现Callable接口或Runnable接口,还可以继承其他类,并且,多个原创 2015-04-10 14:49:30 · 578 阅读 · 0 评论 -
JSE深入探究——反射初步
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。 反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Fi原创 2015-04-28 14:25:08 · 802 阅读 · 3 评论 -
Java对象序列化与反序列化(1)
序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 对象的序列化(Serialize)指将一个Java对象写入IO流中,与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象。如果需要让某个对象可以支持序列化机制,必须让它的类是可序列化的(serializable),为了让某个类是可序列化的,该类必须实现如下两个接口之一: (1)Serial原创 2015-05-15 13:00:26 · 903 阅读 · 0 评论 -
实现接口创建线程
多线程则扩展了多进程的概念,使得同一个进行可以同时并发处理多个任务。线程(Thread)也被称作轻量级进程(Ligheweight Process),线程是进程的执行单元。就象进程在操作系统中的地位一样,线程在程序中是独立的、并发的执行流。当进程被初始化后,主线程就被创建了。对于绝大多数的应用程序来说,通常仅要求有一个主线程,但我们也可以在该进程内创建多条顺序执行流,这些顺序执行流就是线程,每条线程也是互相独立的。 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。原创 2015-05-14 17:52:15 · 2065 阅读 · 0 评论 -
Apache POI:Java程序读写Microsoft Office格式文档——简单完整实例讲解
Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,官方名称为:Apache POI - the Java API for Microsoft Documents,POI提供API给Java程序对Microsoft Office格式文档读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 POI 的功能。原创 2015-05-16 17:21:56 · 4212 阅读 · 1 评论 -
面向对象的特征与“六原则一法则”
面向对象的特征:主要有抽象、继承、封装和多态四个方面,下面是我们来详细分析它们的含义:..........面向对象的“六原则一法则”:单一职责原则、开闭原则、依赖倒转原则、里氏替换原则、接口隔离原则、合成聚合复用原则和迪米特法则。.............原创 2015-06-08 23:43:46 · 9301 阅读 · 8 评论 -
pinyin4j:拼音与汉字的转换实例
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。官网: http://pinyin4j.sourceforge.net/有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音“caomengde”各字的首字母。但是怎样才能将“曹孟德”翻译成“caomengde”呢?很简单的办法就是建立一个大的对照表(比如用原创 2015-08-28 17:24:09 · 1502 阅读 · 2 评论 -
Java的时间操作玩法实例若干
众所周知,时间日期在业务中十分重要,也是几乎所有开发人员必须处理的。除了一些框架和语言提供的时间日期处理工具之外,一些操时间日期的代码也是广大开发人员必备的。因此我们常常将其作为工具类放在项目中。 下面是一些时间日期处理的常见方法,可以为开发者使用,亦可为学习者参考。 import java.text.ParseException;import java.text.S原创 2015-08-14 17:26:54 · 920 阅读 · 0 评论 -
时间日期:获取两个日期相差几天
计算两个日期对象之间相差的天数:import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class Datediff { public static void main(String[] args) { Calendar can=Calendar.getIns原创 2015-09-16 11:57:59 · 1886 阅读 · 0 评论 -
责任链模式 Chain of Responsibility
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递, 直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新 组织和分配责任。原创 2015-12-30 11:37:12 · 942 阅读 · 3 评论 -
观察者模式(Observer)
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 观察者模式(Observer)完美的将原创 2015-12-31 11:49:20 · 458 阅读 · 0 评论 -
判断一个正整数是否是2的乘方
**虽然二进制的思维并不符合我们日常的思维习惯,但是由于计算机都是基于二进制的,因此位运算方法,常常能够让我们的算法更加高效简洁。**转载 2016-11-29 11:10:53 · 1028 阅读 · 0 评论 -
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
SimpleDateFormat是线程不安全的类,一般不要定义为static变量,如果定义为static,必须通过加锁等方式保证线程安全。例如下面一段代码,启动10个线程,同时使用一个SimpleDateFormat实例去格式化Date。import java.text.ParseException;import java.text.SimpleDateFormat;public clas...原创 2019-03-10 11:55:53 · 589 阅读 · 0 评论 -
Lambda表达式--Java8的新功能案例详解(2) Lambda表达式的方法引用
Lambda表达式与内部类相比有很多限制,比如只能为函数式接口创建实例,但是Lambda表达式大大简化了代码的书写。Lambda表达式的方法引用主要分为下面几类:1.引用类方法2.引用特定对象的实例方法3.引用某类对象的实例方法4.引用构造方法原创 2015-04-27 11:46:16 · 1275 阅读 · 0 评论 -
Object(所有类的超类)一些有用的方法讲解与实例演示
Object是所有类的始祖,java中的每个类的都是它拓展而来的。 Object的euqals方法、hashCode方法、getClass方法和toString方法在操作对象时是非常有用的方法。原创 2015-04-17 19:12:54 · 728 阅读 · 0 评论 -
JavaSE学习实战完全笔记--集合的实现细节--Set和Map
如果你看过HashSet的源代码的话,会发现HashSet是通过封装一个HashMap对象来实现对元素的存储的。下面是一个演示HashSet用法的完整代码与详细注释:(请使用JDK1.7及以上版本测试)2.如果你理解了上面的例子,那么我们就可以很轻松地利用Set集合实现自己的Map集合,这对于理解集合的特性与原理非常有帮助。下面是一个演示将一个Set集合拓展成Map集合的完整代码与详细注释:原创 2015-04-10 13:33:28 · 556 阅读 · 0 评论 -
学习实战全笔记--JavaSE--包装类的特性--用法示例(JDK8)
我们知道Java是面向对象的语言,但是为了照顾程序员对以前编程语言的习惯,增加了八种基本数据类型(他们不是对象)如下: <1> 分类与初值: (六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型) 1、整数:包括int,short,byte,long ,初始值为0 2、浮点型:float,double ,初始值为0.0 3、字符:char ,初始值为空格,即'' ",如果输出,在Console上是看不到效果的。原创 2015-04-11 11:07:43 · 828 阅读 · 0 评论 -
JSE学习笔记---关于数据类型那点事儿
本文总结了三个不容易被注意到的三个数据类型的特殊用法, 1. 二进制 java7以后,可以用前缀”0b“表示二进制数,也可以在数字之间,为数字加下划线分割,方便阅读。 例如: 0b1110_1010_0101=0b111010100101 2. 浮点数 浮点数不适用于金融等精确计算中,原因是浮点值采用二进制系统表示,而二进制系统无法精确表示1/10, 正如十进制无法精确表示1原创 2015-04-11 15:27:09 · 709 阅读 · 1 评论 -
学习实战完全笔记--JavaSE----流与文件(Streams and Files)
流与文件的定义 :一个对象,可以从中读入一组字节,就叫输入流;一个对象,可以从中输出一组字节,就叫输出流。 ( In the Java API, an object from which we can read a sequence of bytes is called an input stream. An object to which we can write a sequence of bytes is called an output stream.) java.io中的类都将相对路径以用原创 2015-04-10 13:49:49 · 683 阅读 · 0 评论 -
JSE综合练习(1)----网络聊天系统--基于TCP协议的群聊系统
如果你经过了一段时间的JavaSE学习,对面向对象、流与文件、多线程、网络、GUI等有所了解,那么你可以试着做几个综合性的程序练练手. 首先,模仿别人的思路和代码;然后,独立设计完成;在此基础之上,使自己的代码逐步完善、功能不断强大——这就是一个总结与升华的过程,是学习遭遇瓶颈之后的必要阶段。 在这里笔者会把自己练习的项目源代码、注释、开发工具、相关知识、经验等分享给大家,希望可以为大家提供帮助,也希望可以获得大家的批评与指导。 爱Java,爱Share。i java,i原创 2015-04-12 18:22:34 · 849 阅读 · 0 评论 -
Lambda表达式--Java8的新功能案例详解(1)
Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。 Lambda表达式代替匿名内部类创建对象时,Lambda表达式的代码块将会代替实现抽象方法的方法体,Lambda表达式就相当于一个匿名方法。Lambda表达式的主要作用就是代替匿名内部类的繁琐语法。 .............. lambda表达式允许你通过表达式来代替功能接口。 函数编程在C#、Python、JavaScript中都得到充分体现。而原创 2015-04-23 16:44:37 · 1153 阅读 · 1 评论 -
final关键字---不可变类
不可变类:即该类在创建之后其实例变量是不可变的(immutable). 其中有两种特殊情况: 1.不可变类包含的引用类型成员变量是可变类的 2.如果系统需要反复使用相同的不可变类的实例,如果反复创建相同的对象会增加系统的开销,此时考虑使用缓存。原创 2015-04-13 11:56:34 · 482 阅读 · 0 评论 -
JSE项目实战---基于UDP与Swing的一对一网络聊天系统
Java有非常好的网络支持,UDP由于其资源消耗少、容错性高,在视频会议、网络游戏的领域有很广泛的应用。原创 2015-04-14 15:07:43 · 1368 阅读 · 1 评论 -
接口与设计模式
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口体现了规范与实现分离的设计哲学,面向接口的设计模式也日益深入人心,下面提供了几个完整的例子,演示了接口的优秀设计,并介绍了java常用的两种设计模式:工厂模式和命令模式。原创 2015-04-16 11:35:49 · 1812 阅读 · 2 评论 -
Java8增加功能--Effectively final 功能
java8新增了很多功能,可以大大简化代码,这个系列将会一一辅助代码加以介绍。 局部内部类和匿名内部类访问的局部变量必须由final修饰,java8开始,可以不加final修饰符,由系统默认添加。java将这个功能称为:Effectively final 功能。 下面是完整掩饰代码(至少使用jdk1.8版本):原创 2015-04-16 17:00:54 · 17404 阅读 · 1 评论 -
命令行参数与数组的实例
每个java应用程序都有一个带String[] args参数的main方法,这个参数表明main方法将接收一个字符串数组,也就是命令行参数。原创 2015-04-21 19:39:51 · 3686 阅读 · 0 评论 -
什么是package-info.java
在java项目中创建package以后,可以在package下放一个package-info.java文件。这个文件有什么作用?如何生成?三个作用:为标注在包上Annotation提供便利;声明友好类和包常量;比如一个包中有很多的内部访问的类或常量,就可以统一的放到package-info类中,这样就方便,而且集中管理,减少friendly类到处游走的情况,看例子://这...原创 2019-03-26 16:31:09 · 6799 阅读 · 0 评论