Lesson 02

控制台界面CLI - Command Line Interface

程序参数Program Arguments

02_cli

案例

ls -a 
ls Documents
ls -a Documents

程序参数形态

原生程序
<program> <args>
ls Documents 
语言启动的程序
<language> <program> <args>
java zzax.Driver zhaozhe 
node dice.js --style 4

Java 获取 程序参数

1 2 3 4 5
public class Driver { public static void main(String[] args) { }}

案例

代码
1 < < <
java zzax.Game -s 4Args:-s4
命令行执行

命令行定位到 项目下的 out/production/02_cli 文件下

然后执行下面的指令

1 < < <
java zzax.Game -s 4Args:-s4

参数规范

Option
-a          option short version
--all       option long version
举例
ls 
ls -a 
ls -l 
java zzax/Game.java 
java -o ../out/production/02_cli zzax/Game.java 

实战

建造一个 支持程序参数的 计算器

Intellij 内部配置 程序参数

环境变量Environment Variables

什么是

系统脚本的变量

这个变量会传到所有的启动的程序里

查看现有变量的指令

Mac
env 
Windows
set 

添加新变量

Mac
export HEY=123
Windows
setx HEY 123 

Java 代码查看现有环境变量

03_env

System.getenv();

用途

给程序进行传参

更像程序配置

Intellij 中叠加环境变量

程序参数 vs 环境变量

程序参数用于传输数据
环境变量用于传输宏观配置 以及需要保密的信息

包管理Package Management

背景

基于 别人的代码

我们不可能所有的代码都自己写

str.indexOf("ZZAX");
System.out.println(str);

大型 SDK

Java SDK 里面已经有很几乎所有你需要用的到类

但是依然有一些设计过时,或者有些需求 SDK 中并没有给出比较好的处理工具

三方贡献 代码

比如 JS / Python 官方并没有很健全的 SDK。

很多开发者 自发自愿 为 JS 去 写 通用代码

如何分享代码

1. 直接复制粘贴共享代码

2. 使用人工导包共享代码

3. 使用包管理工具共享代码

直接复制粘贴 共享代码

问题

1. 引用时过于复杂

2. 代码更新时,需要重新复制粘贴代码

3. 源代码暴露

使用人工导包 共享代码

Jar 包

一个压缩包,里面有编译后的 .class 文件

但是不运行

生产部分代码

新建项目

03_jar

1 2 3 4 5
public class Dice { public static int roll(int max) { return (int)(Math.random() * max) + 1; }}

导出

配置 jar 导出

左上角项目点击 右键

看到

往下 看到

点击 Open Module Settings

你会看到 一个弹出的窗口

左侧点击 Artifacts

找到 +

点击 + > Jar > Empty

看到

Name 处 填写 dice

找到 +

点击 + > module output

看到

点击 ok

看到

点击 ok

导出

点击 菜单下的 Build > Artifacts > Build

检查 out/artifacts/dice 下 是否有 jar 包

导入

新建项目

04_lib

1. 拷贝 jar 文件

项目名字部分 点击右键

点击 New > Directory

看到窗口

填写 lib

点击 Ok

将 jar 文件 拷贝到 lib 文件夹下

2. 导入 jar

项目 点击 右键

往下看

点击 Open Module Settings

看到

确认目前为 Modules > 04_lib > Dependencies

点击 下方 + > jar

找到 在 lib 文件下的 dice.jar 文件

点击 Ok

点击 Ok

使用导入代码

1 2 3 4 5 6 7
import io.zzax.game.Dice; public class Lottery { public static void main(String[] args) { System.out.println(Dice.roll(6)); }}

ZZAX 微信公众

文档一更新,立刻告诉你