GridWorld 阶段一学习报告

GridWorld 阶段一学习报告

vi/vim 编辑器

简介

vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器, vim 编辑器是 vi 的升级版,增加了一些功能,同时完全兼容 vi 命令。

在命令行下通过 vi 文件名vim 文件名 指令打开 vi/vim 编辑器。

vi/vim 编辑器的三种模式

(1) 一般模式

打开 vi/vim 编辑器后的默认模式。

在一般模式中可以进行删除、复制、粘贴,但是无法编辑文件内容。

(2) 编辑模式

在一般模式下输入i | I | o | O | a | A | r | R 切换到编辑模式。

在编辑模式中可以编辑文件内容。

Esc 键返回一般模式。

(3) 命令行模式

在一般模式下输入: | / | ? 切换到命令行模式。

在命令行模式下可以进行查找数据、读取、保存、大量替换字符、离开编辑器、显示行号等操作。

Esc 键返回一般模式。

vi/vim 编辑器的常用命令

(1) 移动光标

[Ctrl]+[f] :屏幕向下移动一页。

[Ctrl]+[b] :屏幕向上移动一页。

0 :移动到本行第一个字符处。

$ :移动到本行最后一个字符处。

G :移动到此文件最后一行。

gg | 1G :移动到此文件第一行。

N+[Enter] :N 为数字,光标向下移动 N 行。

(2) 查找与替换

/word :向下寻找一个名称为 word 的字符串。

?word :向上寻找一个名称为 word 的字符串。

:n1,n2s/word1/word2/g :在第 n1 行和 n2 行之间寻找 word1 这个字符串,并且将其替换为 word2。

:1,$s/word1/word2/g :从第一行到最后一行寻找 word1 这个字符串,并且将其替换为 word2。

:1,$s/word1/word2/gc :从第一行到最后一行寻找 word1 这个字符串,并且将其替换为 word2。且在替换前显示提示字符给用户确认是否需要替换。

(3) 删除、复制和粘贴:

x,X :在一行字中,x 为向后删除一个字符(相当于 [Del] 键),X 为向前删除一个字符(相当于 [Backspace] 键)。

dd :删除光标所在的一整行。

ndd :删除光标所在的向下n行。

yy :复制光标所在的一行。

nyy :复制光标所在的向下n行。

p,Pp 为将已复制的内容在光标的下一行粘贴,P 则为粘贴在光标的上一行。

u :复原前一个操作。

[Ctrl]+r :重做上一个操作。

. :小数点,重复前一个操作。

(4) 编辑模式

i,I :进入插入模式,i 为从目前光标所在处插入。I 为在目前所在行的第一个非空格字符处开始插入。

a,A :进入插入模式。a 为从目前光标所在处的下一个字符处开始插入。A 为从所在行的最后一个字符处开始插入。

o,O :进入插入模式。o 为在下一行插入。O 为在上一行插入。

r,R :进入替换模式。r 只替换光标所在那个字符一次。R 会一直替换光标所在字符,直到按下 Esc 键。

(5) 保存和退出

:w :将编辑的数据写入到硬盘中。

:q :离开vi。后面加 ! 为强制离开。

:wq :保存后离开。:wq! 为强制保存后离开。

JAVA 语言

简介

java是一门面向对象编程语言,吸收了C/C++的优点,摒弃了C/C++复杂的指针等内容,也不需要用户手动释放内存空间。java本身还具备了很强的可移植性,通过将源代码编译成二进制字节码,然后通过不同平台的java虚拟机来解释执行字节码,从而实行了“一次编译,到处执行”的跨平台特性。

Java的应用领域非常广泛。可以做应用系统、互联网网站、以及移动端的安卓等。

JAVA 语法重难点

(1) 显式初始化

声明数据成员同时,提供数据成员的初始值。

(2) 方法重载

Java 会同时根据方法名和参数列表来决定所要调用的方法,即可以存在方法名相同、参数列表不同的两个或多个方法。

(3) 接口

在interface中,我们

  • 不需要定义方法的主体
  • 方法默认为public

形如:

implements interface1, interface2, ...

(4) 继承

代码复用的一种方式,区别于 C++ ,Java 的每个衍生类只能有一个基类。形如:

class derived_class extends base_class

super关键字来指代基类对象,使用super.member的方式来表示基层的(public)成员。

由于在创建衍生对象的时候,基类对象先被创建和初始化,所以,基类的构造方法应该先被调用。我们可以使用super(argument list)的语句,来调用基类的构造方法。

(5) 方法覆盖

如果方法名和参数列表都相同 ,Java会呈现衍生层的方法,而不是基层的方法。

(6) 类数据/类方法

利用static关键字,来声明类数据成员,表示类的所有对象共享的成员

如果一个方法声明为static,那么它只能调用static的数据和方法,而不能调用非static的数据和方法。 事实上,在static方法中,将没有隐式传递的this和super参数。我们无从引用属于对象的数据和方法 .

调用类方法时,我们可以通过class.method()的方式调用,也可以通过object.method()的方式调用。

对象方法可以访问类数据。

(7) final 关键字

final关键字的基本含义是: 这个数据/方法/类不能被改变了。

  • final基本类型的数据: 定值 (constant value),只能赋值一次,不能再被修改。
  • final方法: 该方法不能被覆盖。private的方法默认为final的方法。
  • final类: 该类不能被继承。

(8) 多重继承

在Java类的继承中,一个衍生类只能有一个基类,然而,interface可以同时继承多于一个interface。

(9) 抽象类

Java中提供了抽象类(abstract class)的语法,用于说明类及其方法的抽象性。 一个abstract类不能用于创建对象。形如:

abstrct class classname

(10) 引用

当我们将一个引用赋值给另一个引用时,我们实际上复制的是对象的地址。两个引用将指向同一对象。

(11) 参数传递

Java的参数传递为值传递。也就是说,当我们传递一个参数时,方法将获得该参数的一个拷贝。引用的值传递,意味着对象的地址被复制,并传递给Java方法。Java方法根据该引用的访问将会影响对象。

(12) 类型转换

从一个高精度类型转换到低精度类型,比如从float转换到int,那么我们有可能会损失信息。这样的转换叫做收缩变换(narrowing conversion)。这种情况下,我们需要显示的声明类型转换 。

如果我们从低精度类型转换成高精度类型,则不存在信息损失的顾虑。这样的变换叫做宽松变换(widening conversion)。我们不需要显示的要求类型转换,Java可以自动进行 。

我们可以将一个衍生类引用转换为其基类引用,这叫做向上转换(upcast)或者宽松转换。 即使我们经过upcast,将引用的类型宽松为其基类,Java依然能正确的识别对象本身的类型,并调用正确的方法。Java可以根据当前状况,识别对象的真实类型,这叫做多态(polymorphism)。

(13) Object

Java中,所有的类实际上都有一个共同的继承祖先,即Object类。Object类提供了一些方法,比如toString()。我们可以在自己的类定义中覆盖这些方法。

(14) GUI

图形树 JFrame -> Content Pane -> JButton

Content PanesetLayout()方法决定了元素的布局(layout)方式。布局决定了元素的位置。

除了按钮之外,我们还可以在GUI中增加更多的元素,这些元素大都是JComponent的衍生类。

Ant 环境

简介

Ant 是 JAVA 的生成工具,是 Apache 的核心项目。

Ant 类似于与 Unix 中的 Make 工具,都是用来编译、生成。

配置 Ant 环境

(1) 配置好 JAVA 环境;

(2) 新建环境变量 ANT_HOME ,值为 Ant 的主目录;

(3) 在 path 中配置 %ANT_HOME%/bin

(4) 配置完成后,在命令行输入 ant。若出现 “ Buildfile: build.xml does not exist! Build failed ”时说明配置完成。

Ant 生成文件

Ant 的默认生成文件为 build.xml,可以通过 ant -f a.xml 指定生成文件为 a.xml

Ant 的生成文件是 xml 文件,整体结构为:

<?xml version="1.0" encoding="GBK"?>  
<project default="targetname">  
    <target name="name">  
    </target>  
</project>

(1) <project> 元素

Ant 生成文件的根元素,形如:

<project default="targetname" [basedir="."][name="projectname"]>
</project>

default 是默认执行的 target 名;

basedir 是指定基准目录;

name 是工程名。

(2) <target> 元素

<project> 元素的子元素,在<project> 元素下可以有多个 <target>,形如:

<target name="projectname" [depends=""] [if="prop1"] [unless="prop2"]>
</target>

name 表示 target 名称;

depends 为依赖 target 名称(可以有多个依赖,以逗号分割)。只有在依赖 target 完成后,才能做该 target;

if 值为一个属性名,只有设置了该属性,才能执行该 target;

unless 值为一个属性名,只有没有设置该属性,才能执行该 target。

(3) <property> 元素

<project> 元素的子元素,用于定义属性,形如:

<property name="pname" value="pvalue"/>

通过 ${pname} 使用此 <property> 元素。

通过属性文件 a.properties 导入属性,如下:

<property file="a.properties"/>

(4) Task

<target> 元素的子元素,以下介绍一些常用的核心 Task。

a. <echo>

用于输出,形如:

<echo>string</echo>

b.<javac>

用于编译 java 文件,形如:

<javac srcdir="src" destdir="class" [classpath=" "]/>

srcdir 表示编译此文件夹下全部 java 文件;

destdir 表示编译后的 class 文件存储路径;

classpath 指定第三方类库。

c. <java>

运行 java 类,形如:

<java classname="" fork="yes">
	[<arg line="param1 param2 param3"/>]
</java>

classname 用于指定运行的类的名称;

fork="yes" 表示另起一个 JVM 来执行 java 命令,而不是中断 Ant 命令。

d. <jar>

打包成 jar 包,形如:

<jar destfile="main.jar" basedir="">
	<manifest>
        <!--指定主类-->
    	<attribute name="Main-Class" value="classname"/>
    </manifest>
</jar>

destfile 指定 jar 包的名称,一般为 ${dest}/main.jar

basedir 指定需要打包的目录,一般为 ${class}

manifest 表示设置 META-INF。

e. <mkdir>

创建目录,形如:

<mkdir dir="a\b\c" />

f. <delete>

删除目录,形如:

<delete dir="a\b"/>

删除文件,形如:

<delete file="1.txt"/>

g. <tstamp>

时间戳,形如:

<tstamp/>

接下来可以使用 ${DSTAMP} 调用当前时间。

h. <copy>

复制文件,形如:

<copy file="file1" tofile="file2"/>

file 是源文件;

tofile 是目标文件。

i. <move>

移动文件,形如:

<move file="file1" tofile="file2"/>

file 是源文件;

tofile 是目标文件。

j. <replace>

用于替换字符串,形如:

<replace file="filename" token="old" value="new"/>

file 表示要执行替换的文件;

token 表示被替换的字符串;

value 表示替换的字符串。

一般项目中的 Ant 结构

<project default="init">  
    <property name="src" value="src"/>  
    <property name="classes" value="classes"/>  
    <property name="dest" value="dest"/>  
    <path id="classpath">  
        <pathelement path="${classes}"/>  
    </path>  
    <target name="help">  
        <echo>help -打印帮助信息</echo>  
        <echo>compile -编译java源文件</echo>  
        <echo>run -运行程序</echo>  
        <echo>build -打成jar包</echo>  
        <echo>clean -清除全部编译生成文件</echo>  
    </target>  
    <target name="compile">  
        <delete dir="${classes}"/>  
        <mkdir dir="${classes}"/>  
        <javac srcdir="${src}" destdir="${classes}"/>  
    </target>  
    <target name="run" depends="compile">  
        <java classname="org.xiazdong.Test" fork="yes">  
            <classpath path="${classes}"/>  
        </java>  
    </target>  
    <target name="build" depends="run">  
        <delete dir="${dest}"/>  
        <mkdir dir="${dest}"/>  
        <jar destfile="${dest}/Test.jar" basedir="${classes}">  
            <manifest>  
                <attribute name="Main-Class" value="org.xiazdong.Test"/>  
            </manifest>  
        </jar>  
    </target>  
    <target name="clean">  
        <delete dir="${classes}"/>  
        <delete dir="${dest}"/>  
    </target>  
</project>

运行 Ant

在当前目录下的 build.xml 运行 Ant ,执行缺省的 target。

ant

在当前目录下的 build-test.xml 运行 Ant,执行缺省的 target。

ant -buildfile build-test.xml

在当前目录下的 build-test.xml 运行 Ant,执行名称为 clean 的 target。

ant -buildfile build-test.xml clean

在当前目录下的 build-test.xml 运行 Ant,执行名称为 clean 的 target,设定属性 build 的值为 build/classes。

ant -buildfile build-test.xml -Dbuild=build/classes clean

在 Eclipse 中使用 Ant

(1) 点击 window->preferences->General->editors->file associations;

(2) 在 File types 中创建一个 build.xml ,并将 associated editor 的默认项设置为 ant editor 即可;当在项目中创建一个 build.xml 时,这个文件就是 ant 的生成文件。

Junit

简介

Junit 是一个单元测试的工具,可以用来检验程序中的方法是否符合预期。

在 Eclipse 导入 Junit

下载 eclipse 的 Junit 插件,放置在 eclipse 安装文件夹下的 plugins 文件夹中。

右键待测试的项目 -> Properties -> build path -> Junit,将 Junit 导入工程。

编写测试类

import org.junit.Test;

public class Test {
    @Test
    public void test1() {
        assertEquals(expected_result, new test_class().test_method(args));
    }
}

运行测试类

右键测试类 -> Run As -> JUnit Test

测试结果分析

(1) Runs:表示总共有几个测试方法,已经运行了几个;
(2) Errors:表示抛出异常的测试方法的个数;
(3) Failures:表示失败的测试方法的个数;
(4) 打钩:表示通过测试方法。

Eclipse 自动生成测试类

右键被测试的类 -> New -> Other ->JUnit Test Case -> 选择要测试的方法 -> 自动生成测试类。

参考资料

[1] 【Linux入门学习之】vi/vim编辑器必知必会

[2] Ant是什么?

[3] Junit使用的超简单介绍

[4] java基础入门(一)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值