HelloWorld帮助文档

下载地址


应用市场

简介


HelloWorld是一款解释器工具类App,它能让用户编辑并运行一段脚本语言。 这个脚本语言有点像Java,支持简单的类的使用。它的语法大致上就是在Java的基础上去掉了数据类型的定义。 如果你学习过Java语言,或许通过HelloWorld上的示例就可以完全掌握HelloWorld的语法。

名词解释


类库:每一个App拥有一个类库,用户可以在类库中保存若干个不重名的类。 它的作用是让我们保存一些常用类,以便在今后的程序中只需要通过import命令就可以将类导入而不用重新实现。

解释器原生类:解释器自带的类称为解释器原生类,包括:Null, Boolean, Char, Number, String, List。 它们是最基础的类,在所有程序中都可以使用这六个类,它们不能通过import导入。 要注意的是这也意味着你不能创建与他们同名的类。

应用原生类:App自带的,不是用App编写出来的类称为应用原生类。 目前包括:Pattern,Matcher,Math,System,HFile,HttpUtils,JSONObject,JSONArray。它们需要通过import命令进行导入才能使用。 不建议在类库中创建与它们同名的类。创建应用原生类的作用除了提供应用或设备特有的操作(如网络和文件操作)外,还能以更快的速度执行代码。

程序:程序是App可以运行的基本单元,由一个或多个类组成。

基本用法


在编写程序的时候有一些基本规则,除了不要定义非法或重复的类名外,所有的包括import的类至少要有一个类拥有入口方法main(),它的定义方法如下:

static main(arg) {
    //程序执行的第一行代码
}

按照惯例,写一个HelloWorld程序

import System;
class Program  {
    static main(arg) {
        System.print("hello, world");
    }
}

变量


变量可以保存数值,它在代码中的表现形式是一个合法的变量名。
变量名必须由下划线、数字和字母组成且开头不能是数字。
变量名不能是关键字,目前关键字包括:{"while", "if", "break", "return", "continue", "class", "else", "static", "import", "for", "null", "this"}。
程序中所有要引用的类名也不能成为变量名。

作用域


所有变量都有作用域,作用域是变量所在的代码块内,一般的,一对大括号包含一个代码块。

class Person {
    age;
    name;
    Person(mName) {
        //这里就是一个代码块,
        i = 0;
        while (true) {
            //这又是一个代码块,但是还在i的作用于内
            j = 0;
        }
        //此处离开了j的作用域,即便你尝试使用它也只能是一个新的变量。

        while (true) j = 0;//这里其实省略了大括号,这个循环代码块只有一行 j = 0;
        //此处也离开了j的作用域。
    }
}

如果一个变量如果没有进行初始化,变量的值为null。

对象(类)


程序由类组成,就像现实世界有很多对象组成。一个对象有各种属性和方法。例如:一个人是一个对象,有性别和年龄属性,有走路和说话的方法。

类定义的格式
class 变量名 {
    //里面声明成员变量和方法
}

例如:

class Person {
    age;//年龄

    //跑步方法
    run() {
    }
}

值得注意的是:一个类的成员变量名不能重复,方法名可以重复,但是拥有相同方法名的方法的参数个数不能相同。

成员变量

定义格式:

变量名;
变量名 = 表达式;

例如:

class Person {
    age;
    friendly = true;
}
成员方法

定义格式:

变量名(0个或多个以逗号','分隔的变量名) {
    //代码
}

例如:

class Person {
    run() {
    }
    run(point1, point2) {
    }
    speak(sentence) {
        System.print(sentence);
    }
}

所有的方法都有返回值,默认返回null。可以通过'return'关键字返回,例如:

class Person {
    name;
    getName() {
        return name;
    }
}

静态成员与方法

静态成员不具体介绍,定义方法是在成员定义前加上 'static' 关键字。

static age = 0;
static main(arg) {
}
构造类的实例

如果一个成员方法的方法名与类名相同,这样的方法称为构造方法,它的返回值是一个类的实例。我们可以在构造方法中初始化各个成员变量。

class Person {
    name;
    Person(name) {
        this.name = name;
    }
}
class Demo {
    static main(arg) {
        man = Person("小明");//构造了一个名字为小明的Person实例并赋值给man变量
    }
}

和Java不同,这里调用构造方法是没有 new 关键字的。

成员变量的引用

在同一个实例内,一个成员方法可以直接通过变量名直接引用同一个实例的成员变量或方法,如果不在同一个实例内则需要通过'.'操作符进行引用, 如果方法的参数名和成员变量的变量名重复,需要通过this关键字引用成员变量。 示例:

import System;
class Person {
    friendly;
    age;
    Person(age) {
        this.age = age;
        friendly = true;
    }
    Person(age, friendly) {
        this.age = age;
        this.friendly = friendly;
    }
}
class Demo {
    static main(arg) {
        man = Person(18);
        System.print(man.friendly);
    }
}

原生类文档


下面介绍所有原生类的方法,方法名后面的括号内的数字代表参数个数。

Number 类
toInteger(0);//获得数字强转为整型的结果
String 类
String(0);//创建一个空字符串实例

String(1);//创建一个字符串实例,参数是字符列表

length(0);//同Java中的String.length();

equals(1);//与java中String.equals(Object)方法差不多

getChars(0);//返回字符串的字符数列表

contains(1);//字符串是否包含有参数所代表的子字符串

isNumber(0);//返回字符串是否是一个数字

toNumber(0);//返回字符串所表示的数字,如果出现异常则返回null

substring(1);//同Java中的String.substring(int);

substring(2);//同Java中的String.substring(int, int);

startsWith(1);//同Java中的String.startsWith(int);

endsWith(1);//同Java中的String.endsWith(int);
List 类

列表 它支持用 '[]' 来操作,如: l = [];//创建空链表 l = [1, 'c', "string"];//创建有初始值的链表 l[1] = 998;//设置链表的某项

List(0);//构造函数

get(1);//获取链表中某项,参数为下标,从0开始

remove(1);//移除链表中某项,参数为下标,从0开始

size(0);//获取链表长度

add(1);//向链表尾部增加新的一项
Map 类

集合类,可以保存若干个键值对。在集合里,一个键值对包含一个字符串Key和这个Key对应的值(任意类型的实例);其本质是Java中的HashMap。

Map(0);//构造函数,构造一个空集合

get(1);//获取集合中某键值对的值,参数是键值对的Key字符串。

put(2);//向集合增加键值对,如果集合中已经存在相应有Key的键值对,则覆盖键值对。

size(0);//获取集合当前容量
Pattern 类

正则表达式Pattern类

Pattern(1);//构造函数,同Java 的 Pattern.compile(String)

Pattern(2);//构造函数,同上,但是第二个参数是布尔型,代表是否忽略大小写

matcher(1);//同Java 的 Pattern.matcher(String)方法,返回一个Matcher实例

Matcher 类

正则表达式Matcher类

group(0);//同Java 的 Matcher.group()

group(1);//同Java 的 Matcher.group(int)

find(0);//同Java 的 Matcher.find();
System 类
static input(0);//等待并返回用户输入的字符串

static print(1);//打印一个字符串,参数就是要打印的字符串

static printWebImage(1);//打印一个网络图片,参数是url

static toast(1);//显示一个短暂的信息提示,参数是要显示的字符串

static sleep(1);//暂停一段时间后继续往后运行,参数为暂停时间,单位是毫秒

static startAnimActivity(3);//进入动画显示界面,第一个参数是一个实现的loadScene(0)方法的实例,loadScene(0)必须返回一个Scene实例,第二个参数是动画界面宽度(像素),第三个是动画界面高度(像素)

static showInputDialog(1);//显示一个输入框让用户输入字符串,参数是一个实现了input(1)方法的类实例,当用户按确定按钮后,系统会调用input(1)方法并将字符串作为参数传递过来。

static showInputDialog(2);//显示一个输入框让用户输入字符串,第一个参数输入框的提示语(hint属性),第二个参数同上也是一个实现了input(1)方法的类实例,当用户按确定按钮后,系统会调用input(1)方法并将字符串作为参数传递过来。

static showMessageDialog(5);//显示一个标准的信息提示框,参数1:信息;参数2:确认按钮文字;参数3:一个实现了positiveClick(0)方法的类实例;参数4:否定按钮文字;参数5:一个实现了negativeClick(0)方法的类实例;
File 类

手机文件类

File(1);//构造方法,参数是文件路径

getName(0);//获取文件名

getPath(0);//获取文件路径

listFiles(0);//如果是文件夹,返回文件夹下所有的文件 List

isDirectory(0);//返回这个文件是否是文件夹

static getPhoneDirectory(0);//获取手机存储目录名

rename(1);//文件或文件夹重命名,参数是目标文件名,返回是否成功

delete(0);//删除文件或空目录,返回是否成功

write(1);//写入文件,参数是字符列表

read(0);//读取文件,返回字符列表
HttpUtils 类

网络访问工具类

static getString(1);//获取访问所得的结果的字符串形态,参数为完整url

static getStringByPost(2);//利用post传参的方法获取访问的结果的字符串形态,第一个参数为完整url,第二个是需要post传参的参数集合(Map)

static downloadFile(2);//下载一个网络文件,第一个参数是url,第二个是完整的目标文件路径,返回是否成功。因为还没有完善的下载管理,建议下载小文件。
JSONObject 类
JSONObject(1);//构造函数,同Java 的 JSONObject(String)

getString(1);//同Java 的 JSONObject.getString(String)

getNumber(1);//同Java 的 JSONObject.getDouble(String)

getJSONObject(1);//同Java 的 JSONObject.getJSONObject(String)

getJSONArray(1);//同Java 的 JSONObject.getJSONArray(String)
JSONArray 类
JSONArray(1);//构造函数,同Java 的 JSONArray(String)

getString(1);//同Java 的 JSONObject.getString(int)

getNumber(1);//同Java 的 JSONObject.getDouble(int)

getJSONObject(1);//同Java 的 JSONObject.getJSONObject(int)

getJSONArray(1);//同Java 的 JSONObject.getJSONArray(int)

length(0);//同Java 的 JSONObject.length()
Scene 类

场景类,在动画界面使用,在动画界面运行时出现的异常目前无法得到显示。

Scene(0);//构造函数

addEntity(1);//向该场景添加一个物体,目前只支持Line、和Rect两种

setBackground(3);//设置场景背景颜色,三个参数从左到右分别是红绿蓝分量,取值范围是0~1

setUpdateHandler(1);//设置刷新监听器,参数是实现了onUpdate(0)方法的实例,动画引擎每一帧开始都会调用onUpdate(0)方法

setOnClickListener(1);//设置单击监听器,参数是实现了onClick(2)方法的实例,用户每一次点击场景系统都会调用onClick(2)方法,onClick(2)方法的两个参数分别是点击的x坐标和y坐标
Line 类

线段类,可以作为Entity加入场景

Line(x1, y1, x2, y2, width);//构造函数,至少在loadScene接口执行后才能构造矩形实例

setColor(r, g, b);//设置颜色

setPosition(x1, y1, x2, y2);//设置位置

getX1(0);//获取第一个端点的X坐标

getY1(0);//获取第一个端点的Y坐标

getX2(0);//获取第二个端点的X坐标

getY2(0);//获取第二个端点的Y坐标

getWidth(0);//获取线段宽度

setVisible(1);//设置是否可见
Rectangle 类

矩形类,可以作为Entity加入场景

Rectangle(x1, y1, width, height);//构造函数,至少在loadScene接口执行后才能构造矩形实例

setColor(r, g, b);//设置颜色

setPosition(x, y);//设置位置

getX(0);//获取举行X坐标

getY(0);//获取举行Y坐标

getWidth(0);//获取矩形宽度

getHeight(0);//获取矩形高度

setVisible(1);//设置是否可见
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,397评论 25 707
  • JS 变量类型 JS 变量类型分为基本类型和引用类型 基本类型:基本类型有 Undefined,String,Nu...
    杰哥长得帅阅读 564评论 0 0
  • 心情因为别人和我说话就莫名的高兴。虽然了解不到是否真心,总觉得一种推脱和敷衍,我看来是想男人想疯了吧哈哈哈! 总是...
    小夭ing阅读 77评论 0 0