构造器是编程的强大组件。使用它们来释放 Java 的全部潜力。

-- Seth Kenlon(作者)

在开源、跨平台编程领域,Java 无疑(?)是无可争议的重量级语言。尽管有许多 伟大的跨平台 框架 ,但很少有像 Java 那样统一和直接的。

当然,Java 也是一种非常复杂的语言,具有自己的微妙之处和惯例。Java 中与 构造器( constructor)有关的最常见问题之一是:它们是什么,它们的作用是什么?

简而言之:构造器是在 Java 中创建新 对象(object)时执行的操作。当 Java 应用程序创建一个你编写的类的实例时,它将检查构造器。如果(该类)存在构造器,则 Java 在创建实例时将运行构造器中的代码。这几句话中包含了大量的技术术语,但是当你看到它的实际应用时就会更加清楚,所以请确保你已经 安装了 Java 并准备好进行演示。

没有使用构造器的开发日常

如果你正在编写 Java 代码,那么你已经在使用构造器了,即使你可能不知道它。Java 中的所有类都有一个构造器,因为即使你没有创建构造器,Java 也会在编译代码时为你生成一个。但是,为了进行演示,请忽略 Java 提供的隐藏构造器(因为默认构造器不添加任何额外的功能),并观察没有显式构造器的情况。

假设你正在编写一个简单的 Java 掷骰子应用程序,因为你想为游戏生成一个伪随机数。

首先,你可以创建骰子类来表示一个骰子。你玩了很久 《龙与地下城》 ,所以你决定创建一个 20 面的骰子。在这个示例代码中,变量 dice 是整数 20,表示可能的最大掷骰数(一个 20 边骰子的掷骰数不能超过 20)。变量 roll 是最终的随机数的占位符,rand 用作随机数种子。

import java.util.Random;public class DiceRoller { private int dice = 20; private int roll; private Random rand = new Random();

接下来,在 DiceRoller 类中创建一个函数,以执行计算机模拟模子滚动所必须采取的步骤:从 rand 中获取一个整数并将其分配给 roll变量,考虑到 Java 从 0 开始计数但 20 面的骰子没有 0 值的情况,roll 再加 1 ,然后打印结果。

import java.util.Random;public class DiceRoller { private int dice = 20; private int roll; private Random rand = new Random();

最后,产生 DiceRoller 类的实例并调用其关键函数 Roller:

// main looppublic static void main (String[] args) { System.out.printf("You rolled a "); DiceRoller App = new DiceRoller(); App.Roller(); }}

只要你安装了 Java 开发环境(如 OpenJDK ),你就可以在终端上运行你的应用程序:

$ java dice.javaYou rolled a 12

在本例中,没有显式构造器。这是一个非常有效和合法的 Java 应用程序,但是它有一点局限性。例如,如果你把游戏《龙与地下城》放在一边,晚上去玩一些《快艇骰子》,你将需要六面骰子。在这个简单的例子中,更改代码不会有太多的麻烦,但是在复杂的代码中这不是一个现实的选择。解决这个问题的一种方法是使用构造器。

构造函数的作用

这个示例项目中的 DiceRoller 类表示一个虚拟骰子工厂:当它被调用时,它创建一个虚拟骰子,然后进行“滚动”。然而,通过编写一个自定义构造器,你可以让掷骰子的应用程序询问你希望模拟哪种类型的骰子。

大部分代码都是一样的,除了构造器接受一个表示面数的数字参数。这个数字还不存在,但稍后将创建它。

import java.util.Random;public class DiceRoller { private int dice;  private int roll; private Random rand = new Random(); // constructor public DiceRoller(int sides) { dice = sides; }

模拟滚动的函数保持不变:

public void Roller() { roll = rand.nextInt(dice); roll += 1; System.out.println (roll);}

代码的主要部分提供运行应用程序时提供的任何参数。这的确会是一个复杂的应用程序,你需要仔细解析参数并检查意外结果,但对于这个例子,唯一的预防措施是将参数字符串转换成整数类型。

public static void main (String[] args) { System.out.printf("You rolled a "); DiceRoller App = new DiceRoller( Integer.parseInt(args[0]) ); App.Roller();}

启动这个应用程序,并提供你希望骰子具有的面数:

$ java dice.java 20You rolled a 10$ java dice.java 6You rolled a 2$ java dice.java 100You rolled a 44

构造器已接受你的输入,因此在创建类实例时,会将 sides 变量设置为用户指定的任何数字。

构造器是编程的功能强大的组件。练习用它们来解开了 Java 的全部潜力。


java占位符打印_什么是 Java 构造器?相关推荐

  1. java占位符打印_java简单日志打印规范小记

    个人认为,如果公司一些基础类库不做约束,很可能"埋坑",形成技术债务,最终为此付出代价.本文讲解一个最基本的日志打印规范. 1. 日志打印组件 日志组件有很多,日志门面的选择有:S ...

  2. java占位符填充_程序员:深入理解Java虚拟机,对象的内存布局

    在 HotSpot 虚拟机中,对象在内存中存储的布局分为 3 块区域:对象头 ( Header ) .实例数据 ( InstanceData ) 和对齐填充 (Padding) . 一.对象的内存布局 ...

  3. java占位符填充_实现java中的占位符

    学习过.net MVC 的同学,都知道其中用一个文件share /_Layout.cshtml,它主要实现的是一个类似母版页(可以参照word的母版)的功能,那么在javaee中是否有类似的功能呢?其 ...

  4. Java枚举的打印_如何在java中打印所有枚举值?

    首先,我会重构您的枚举在构造函数参数中传递字符串表示形式.该代码位于底部. 现在,打印你只是使用的东西像所有枚举值: // Note: enum name changed to comply with ...

  5. Java 占位符 例子 - 消息模板

    例子1: import java.text.SimpleDateFormat; import java.util.Date;import org.slf4j.Logger; import org.sl ...

  6. java占位符填充_Java使用freemark生成word

    1.制作模板 先用office word做一个模板word文档,${usrName}.${nowDate}占位符 可以使用 office 或者 wps 先创建一个模板表格 (替换$部分可以在 模板格式 ...

  7. Java占位符替换工具类

    import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  8. java占位符填充_Java占位符

    一.背景 在使用java开发的过程中,经常需要使用将字符串拼接到一起(比如,用于日志输出),常用方法如下: 使用+将不同字符串进行拼接 使用StringBuilder 使用String.format ...

  9. java word打印_如何通过Java打印Word文档

    本文将介绍如何使用Java程序来打印Word文档.打印可分为两种方式:一是打印到物理打印机:二是打印到虚拟打印机. 使用工具:Spire.Doc for Java 测试环境: ●Intellij Id ...

最新文章

  1. Open3d学习计划—高级篇 2(彩色点云配准)
  2. python如何创建不同元素的矩阵_python – 如何在数据帧中创建矩阵元素的数...
  3. Ansible04-任务控制
  4. 仿IPhone滚轮组件分析WheelScroller
  5. echarts中的世界地图
  6. java的actionevent_[java]ActionEvent事件:获取输入字符串的长度
  7. oracle中的open,Oracle 深入分析Open过程
  8. node --- 使用express.Router与body-parser
  9. GitHub注册和Git安装
  10. [转]在Windows中安装PhpUnit
  11. 超级楼梯(HDU-2040)
  12. asp实现注册登录界面_Win7系统登陆界面修改小技巧--win7w.com
  13. 《变革中的思索》连载六:IT=IP+IQ
  14. ubuntu16.04 gnome环境,怎么样下载使用monaco字体
  15. xp系统整个计算机非常慢,xp系统物理内存不足导致电脑运行速度非常缓慢的图文方法...
  16. android7.0 root教程,小米4S(全网通 安卓7.0)一键ROOT详解教程,看教程ROOT
  17. 7-5 jmu-Java-03面向对象基础-05-覆盖 (20 分)
  18. echarts图表给柱形图的每个柱子设置不同颜色(包括每个柱子设置渐变颜色)
  19. Elasticsearch常见搜索方法的实现
  20. k8s coredns ContainerCreating

热门文章

  1. vector 设置大小_BetterSnapTool for Mac(窗口设置工具) v1.9.3
  2. Spring Boot 注解(1)
  3. 响应式API的设计、实现和应用
  4. Java动态代理一览笔录
  5. 《中国人工智能学会通讯》——4.32 数据包丢失
  6. Android提高篇1 之 BroadcastReceiver 应用程序间通信的手段
  7. winform窗体中嵌入显示Excel文件
  8. matlab uigetfile的用法,matlab中uigetfile的用法
  9. 有关python的知识点_Python常见的知识点整理
  10. ecq php,ecqx.sdgz.site网页GZIP压缩检测结果