Java
文章平均质量分 74
bsbhenry
这个作者很懒,什么都没留下…
展开
-
java包
Java中使用包的原因主要是为了确保类名的唯一性。相同的类名放在不同的包中不会产生冲突。标准的Java包使用嵌套的层次,从编译器角度来看,嵌套的包之间没有任何关系。packagepackage语句要放在源文件的开头,声明类在某个包中package PackageNameimport使用import可以导入一个特定的类或包,import语句应该位于源文件的顶部,packag...原创 2018-11-21 21:41:30 · 263 阅读 · 0 评论 -
设计模式——简单工厂
在《重构 改善既有代码的设计》8.14 以子类取代类型码一节中,使用到了一种类似于简单工厂的方法,当时将基类定义为抽象类,并创建了一个静态方法create(mode MODE),使用该方法来实例化。 如果使用简单工厂,就可以新建一个工厂类,把实例化对象的任务交给工厂类。public class PowerManagerNewFactory{ public static Powe...原创 2018-12-16 17:35:50 · 99 阅读 · 0 评论 -
Java try()语句实现 try-with-resources 异常管理机制
java7 新增特性,对于try语句块中使用到的资源,不再需要手动关闭,在语句块结束后,会自动关闭,类似于python的with..as的用法。利用这个特性,需要实现AutoCloseable接口,只有一个close方法,实现关闭资源的操作。public interface AutoCloseable{ public void close() throws Exception;...原创 2019-02-17 21:37:19 · 378 阅读 · 0 评论 -
Swing小程序——在上次关闭位置启动窗口(多线程/监听器)
在HOW2J上看到的一个小例子,打开程序显示一个窗口,关闭后再启动程序,窗口出现在上次的相同位置,并且窗口中有一个label显示当前位置,如下图所示。思路:用文件记录窗口位置,启动程序时首先读取存储的位置信息,再设置窗口位置,显示窗口。方法一:多线程,启动一个线程记录位置信息。这个不是正常的思路,但是可以练习一下多线程。方法二:监听器,监听窗口关闭,记录位置信息。 一、多线程方...原创 2019-02-23 20:08:23 · 400 阅读 · 0 评论 -
Java 递归遍历实现linux tree命令
看到介绍java file类的文章,有一个遍历文件夹的练习,遍历某个目录下所有文件,包括子目录。写了一个用栈实现的递归遍历。import java.io.File;import java.util.Stack;public class TraversalFile { public static void main(String[] args) { File dir = new...原创 2019-03-13 22:21:06 · 603 阅读 · 0 评论 -
Java8 接口中的默认方法
公司代码中分为common code和product specific code,现在有:一份common.java文件,定义了一些通用方法一份productA_X.java , 一份productB_X.java,都实现了class X。现在一个productA相关的方法在common.java中定义,并且调用了一个新方法A,该方法定义在productA_X.java中。...原创 2019-03-18 19:49:12 · 974 阅读 · 0 评论 -
Java final关键字
final可以用来修饰数据、方法和类。一、 final数据1. 用于基本类型定义一个永不改变的编译时常量(编译时值已经确定);定义一个在运行时被初始化的值,一旦被初始化,就无法改变。2. 用于对象引用使引用恒定不变,即一旦引用被初始化指向某一对象,就无法再指向其他对象。但是被指向的对象本身是可以改变的。import java.util.Random;class Val...原创 2019-05-05 21:52:48 · 90 阅读 · 0 评论 -
ArrayList的remove方法
从一个ArrayList中去除某个元素时会用到remove方法,这个方法有两个版本public E remove(int index)public boolean remove(Object o)按索引删除元素如果接收的是一个int类型的值,则这个值表示的是要删除的元素的索引值,方法返回的值就是被删除的元素,如果索引值在实际的范围外,则会抛出IndexOutOfBoundsExc...原创 2019-06-01 22:42:28 · 27856 阅读 · 4 评论 -
Java Integer对象的比较
Integer对象之间的比较要考虑到对象初始化的不同情况,初始化又涉及到对象包装器类的自动装箱特性 。自动装箱Integer是一种对象包装器类。对象包装器类是不可变的,也就是说,一旦完成了构造,包装在其中的值就不可以再被更改了。包装器类有一种特性,自动装箱。当需要一个Integer类型的对象时,可以对int类型的元素进行自动打包的操作。如果添加3到list中,实际调用的是下面的代码。...原创 2019-06-02 22:18:18 · 17652 阅读 · 0 评论 -
Java泛型和C++模板
Java中的泛型和C++中的模板有些相似。类型变量的限定在Java中,可以对类型变量进行限定。如果类或者方法只支持某些类型的操作,就可以限定T的类型。对于不支持的变量类型,编译时就会报错。而C++中不能对模板参数的类型加以限制。一个类型变量可以由多个限定,这些限定中可以有多个接口,但至多有一个类(Java不支持多重继承)。如果用一个类作为限定,它必须是限定列表中的第一个。类型擦除...原创 2019-07-29 22:25:34 · 1726 阅读 · 0 评论 -
设计模式——策略模式
感觉策略模式和简单工厂有点儿像。产品有一个抽象的基类,具体的产品有不同的实现;策略也分抽象策略和具体的策略。但是使用工厂生产出来的还是具体的产品,我们也是通过产品来调用各种方法。而策略模式中的Context类,维护了一个对Stragegy的对象引用,在初始化时选择策略,并且定义了一个方法来调用算法。 ...原创 2018-12-17 22:03:30 · 94 阅读 · 0 评论 -
设计模式——单例模式
保证一个类只存在一个实例化对象,并提供一个方法来访问这个对象,实现受控访问。懒汉模式懒汉模式指的是在需要获取对象(调用getInstance)的时候才会创建,即延迟加载。成员必须是static,才会具有唯一性。构造函数是private,外部无法访问,也就无法创建实例。getInstance必须是static,才能不通过实例来调用。public class Singleto...原创 2018-12-30 21:49:53 · 105 阅读 · 0 评论 -
代码重构——简化条件表达式
之前verilog写多了,老是想着if else要完整,否则会产生锁存器。发现现在写代码潜意识里也有这种想法,好逗。。。最近正好看到公司大牛重构代码,优化for循环和if语句,还看到《阿里巴巴Java开发手册》里控制语句里的部分内容,搜了一下发现了《重构 改善既有代码的设计》这本书,发现挺有意思。卫语句《阿里巴巴Java开发手册》讲到了卫语句。《重构 改善既有代码的设计》也讲到了这...原创 2018-11-29 22:51:38 · 335 阅读 · 0 评论 -
Java访问权限
private:只能被本类访问无修饰(default):允许同一个包内的类进行访问protected:在默认情况外,也允许子类(不在同一个包内)进行访问public:能被所有类访问这四种情况对于访问权限的限制程度从大到小依次为:private < default < protected < public参考java的访问权限...原创 2018-11-27 22:11:09 · 110 阅读 · 0 评论 -
阿里巴巴Java开发手册笔记
一、编程规约(一)命名风格3.类名使用UpperCamelCase风格4.方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格5.常量命名全部大写,单词间用下划线隔开6.抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。(四)OOP规约7.所有的相同类型的包装类...转载 2018-11-27 22:40:24 · 115 阅读 · 0 评论 -
Java与C++创建对象方法比较
1 Java1.1 语法创建对象只有一种方式,即使用new操作符,下面的表达式构造了一个新对象new Date()如果想要多次使用该对象,就需要定义一个对象变量,该变量可以引用Date类型的对象,但是这个变量并不是一个对象,在初始化之前也并没有引用任何对象,不能将Date方法用于这个变量上。Date deadline;必须先对变量deadline进行初始化,有两种方式:...原创 2018-12-05 22:13:40 · 411 阅读 · 0 评论 -
Java与C++参数传递方式对比
1 JavaJava中方法(函数)的参数传递只有按值调用一种方式。只是在方法内部产生了一个参数的拷贝。方法参数分为两种:1.基本数据类型。方法无法修改参数的值。2.对象引用。假设一个类Employee有一个raiseSalary的方法,在tripleSalary函数中调用该方法。public static void tripleSalary(Employee x){ ...原创 2018-12-06 22:39:29 · 391 阅读 · 0 评论 -
Java运行时内存区域划分与对象访问
1. 区域划分 线程私有:程序计数器、虚拟机栈、本地方法栈线程共享:堆、方法区1.2 程序计数器(Program Counter Register)程序计数器:记录当前线程所执行的字节码的行号,应该类似于PC指针,字节码解释器根据计数器的值来选取要执行的字节码。每个线程都有一个独立的计数器,可以保证线程切换后还能够恢复到切换前的执行位置。1.3 Java虚拟机栈(Jav...原创 2018-12-15 23:03:30 · 95 阅读 · 0 评论 -
Java异常处理
抛出异常后:1. 使用new在堆上创建异常对象2. 终止当前执行路径,从当前环境中弹出对异常对象的引用3. 异常处理机制接管程序,并运行异常处理程序。 标准异常类具有两个构造器:1.默认构造器2.接受字符串作为参数,将相关信息存入异常对象的构造器...原创 2018-12-23 15:45:42 · 105 阅读 · 0 评论 -
Java正则表达式
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。特殊字符特别字符 描述 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字...转载 2018-12-30 19:39:33 · 125 阅读 · 0 评论 -
设计模式——装饰模式
概念装饰模式:动态地给一个对象添加一些额外的职责。Component是一个抽象的类,定义了对象接口。 ConcreteComponent是子类,定义了具体的方法的实现。Decorator是继承自Component的抽象类,维护了一个Component的对象引用,并且实现了基类Component的功能。ConcreteDecoratorA继承自Component,会执行基类Dec...原创 2018-12-30 21:15:59 · 113 阅读 · 0 评论 -
java中String空串与null串
当初始化一个数组时,对于数字数组,所有元素都被初始化为0;对于boolean数组,所有元素都被初始化为false;对于对象数组,元素会被初始化为null。在对对象引用进行判断的时候就要考虑到null的情况。工作中遇到一个程序,解析一组数据,并将得到的数据存入一个String数组中。在对数组进行处理的时候,使用for循环遍历数组,并使用了String的isEmpty方法进行判断,如果非空就会打印...原创 2019-07-28 10:08:38 · 1124 阅读 · 0 评论