首页
学习
活动
专区
工具
TVP
发布

海仔技术驿站

专栏作者
290
文章
315777
阅读量
31
订阅数
前端成神之路-es6-ES6概念&新增语法&内置对象拓展
ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。
海仔
2021-01-29
4130
图解Java设计模式之访问者模式
1)将人分为男人和女人,对歌手进行测评,看完某个歌手表演后,得到他们对该歌手的不同评价(评价有不同的种类,比如成功、失败等) 2)传统方案
海仔
2020-04-01
4720
并发编程之共享模型的不可变
发现其内部是调用String的构造方法创建了一个新字符串,再进入这个构造看看,是否对final char[] value做了修改 :
海仔
2020-02-21
2980
java基础第三篇
public void method(int m){//方法形参上的变量也是局部变量,仅能在方法中
海仔
2019-08-06
4070
1. 考虑使用静态工厂方法替代构造方法
一个类允许客户端获取其实例的传统方式是提供一个公共构造方法。其实还有另一种技术应该成为每个程序员工具箱的一部分。一个类可以提供一个公共静态工厂方法,它只是一个返回类实例的静态方法。下面是一个Boolean简单的例子(boolean基本类型的包装类)。此方法将boolean基本类型转换为Boolean对象引用 : public static Boolean valuesOf(boolean b) { return b ?Boolean.TRUE : Boolean.FALSE; } 注意,静态工厂方法与设计模式中的工厂方法模式不同。 类可以为其客户端提供静态工厂方法,而不是公共构造方法。提供静态工厂方法而不是公共构造方法有优点也有缺点。 静态工厂方法的一个优点是,不像构造方法,它们是有名字的。如果构造方法的参数本身并不描述被返回的对象,则具有精心选择名称的静态工厂更易于使用,并且生成的客户端代码更易于阅读。例如,返回一个可能的素数的BigInteger的构造方法BigInteger(int,int,Random)可以更好地表示为名为BigInteger.probablePrime的静态工厂方法(这个方法是在Java1.4中添加的。) 一个类只能有一个给定签名的构造方法。程序员知道通过提高两个构造方法来解决这个限制,这两个构造方法的参数列表只有它们的参数类型的顺序不同。这是一个非常糟糕的注意。这样的API用户将永远不会记得那个构造方法是哪个,最终会错误地调用。阅读使用这些构造方法的代码的人只有在参考类文档的情况下才知道代码的作用。 因为他们有名字,所以静态工厂方法不会受到上面讨论中的限制。在类中似乎需要具有相同签名的多个构造方法的情况下,用静态工厂方法替换构造方法,并仔细选择名称来突出它们的差异。 静态工厂方法的第二个优点是,与构造方法不同,它们不需要每次调用时都创建一个新对象。 这允许不可变的类 (条目 17) 使用预先构建的实例,或者在构造时缓存实例,并反复分配它们以避免创建不必要的重复对象。Boolean.valueof(boolean) 方法说明了这种方法:它从不创建对象。这种技术类似于 Flyweight 模式[Gamma95]。如果经常请求等价对象,那么它可以极大地提高性能,特别是如果在创建它们非常昂贵的情况下。 静态工厂方法从重复调用返回相同对象的能力允许类保持在任何时候存在的实例的严格控制。这样做的类被称为实例控制( instance-controlled)。编写实例控制类的原因有很多。实例控制允许一个类来保证它是一个单例 (3) 项或不可实例化的 (条目 4)。同时,它允许一个不可变的值类 (条目 17) 保证不存在两个相同的实例:当且仅当 a == b 时 a.equals(b)。这是享元模式的基础[Gamma95]。Enum 类型 (条目 34) 提供了这个保证。 静态工厂方法的第三个优点是,与构造方法不同,它们可以返回其返回类型的任何子类型的对象。 这为你在选择返回对象的类时提供了很大的灵活性。
海仔
2019-08-06
6520
java实现数据结构
一.数据结构和算法简介 数据结构是指数据在计算机存储空间中的安排方式,而算法时值软件程序用来操作这些结构中的数据的过程. 二. 数据结构和算法的重要性 几乎所有的程序都会使用到数据结构和算法,即便是最简单的程序也不例外.比如,你希望打印出学生的名单,这个程序使用一个数组来存储学生名单,然后使用一个简单的 for循环来遍历数组,最后打印出每个学生的信息. 在这个例子中数组就是一个数据结构,而使用for循环来遍历数组,则是一个简单的算法.可见数据结构和算法是构成程序的灵魂所在,而且也有人提出数据结构+算法=程序. 简单算法
海仔
2019-08-06
9320
java核心技术第六篇之断言、日志、包装类型和工具类
JDK1.5新特性: 1.自动拆装箱. 2.泛型 3.可变参数 4.静态导入 5.增强for循环 6.互斥锁 7.枚举 8.注解
海仔
2019-08-05
8270
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档