2020-10-17

vi,java,ant 和Junit 的学习报告

Linux vi/vim

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。

什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:

一般模式:
以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
编辑模式:
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
指令列命令模式:
在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

vi/vim 使用实例

使用 vi/vim 进入一般模式

如果你想要使用 vi 来建立一个名为 test.txt 的文件时,你可以这样做:
vi test.txt
在这里插入图片描述
此时为命令模式,如果要进入输入模式,需要按 i,即可输入:
直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

按下 i 进入编辑模式,开始编辑文字:
在这里插入图片描述

在这里插入图片描述

在一般模式之中,只要按下 i, o, a 等字符就可以进入编辑模式了!

在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

这个时候,键盘上除了 [Esc] 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

按下 [ESC] 按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 [Esc] 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!

在一般模式中按下 :wq 储存后离开 vi

OK,我们要存档了,存盘并离开的指令很简单,输入『:wq』即可保存离开!

在这里插入图片描述

OK! 这样我们就成功创建了一个 test.txt 的文件。是不是很简单。

vi/vim 按键说明

除了上面简易范例的 i, [Esc], :wq 之外,其实 vim 还有非常多的按键可以使用。

vi/vim 按键说明

除了上面简易范例的 i, [Esc], :wq 之外,其实 vim 还有非常多的按键可以使用。
在这里插入图片描述

Java

Java知识框架
在这里插入图片描述
Java基本知识简述

对象和类
和C++相似,Java中的对象是类的一个实例,类是一个模板,表述了一类对象的行为和状态。但是Java中与C++不同之处在于:

一个源文件中只能有一个public类
一个源文件中可以有多个非public类
源文件的名称应该和这个文件中的public类名保持一致

Java的类中,有两种类比较特殊,一种是final类,一种是抽象类。这两个类是由final修饰符和abstract修饰符修饰的。
final变量能被显式地初始化,被声明为final的对象的引用不能指向不同的对象。final对象的引用有点像C++中的常量指针,其中引用不能改变,但是里面的值可以改变。
Java中的抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。抽象类可以包含抽象方法和非抽象方法。

Stream, File, IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
Java 的控制台输入由 System.in 完成。
控制台的输出由 print( ) 和 println() 完成。这些方法都由类 PrintStream 定义,System.out 是该类对象的一个引用。
Java的文件读写则是由InputStream和OutputStream完成的。
还有一些关于文件和I/O的类,我们也需要知道:File Class(类)、FileReader Class(类)、FileWriter Class(类)。

异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。异常发生的原因有很多,通常包含以下几大类:

用户输入了非法数据。
要打开的文件不存在。
网络通信时连接中断,或者JVM内存溢出。
这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。要理解Java异常处理是如何工作的,我们需要掌握以下三种类型的异常:

检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
对于异常处理,Java为我们提供了许多异常类。所有的异常类都是从Java.lang.Exception类继承的子类。Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。Error 用来指示运行时环境发生的错误。
Java在捕获异常上,也是使用try和catch关键字的。

继承
Java的继承和C++的继承是相似的。继承也是Java面向对象编程技术的一块基石。Java的继承特性和C++大体相同,主要有以下几方面:

子类拥有父类非private的属性和方法
子类可以有自己的属性和方法
子类可以用自己的方式实现父类的方法
Java的继承是单继承,但是可以多重继承
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)
Java的继承在语法上也与C++不同。Java中的继承可以使用 extends 和 implements 这两个关键字来实现的,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

extends 关键字
在Java中,类的继承是单一继承,一个子类只能有一个父类,所以有了extends。

implements 关键字
使用implements关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

在Java的继承中还有一些关键字:

super:可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类
this:指向自己的引用
final:声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写

多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
重写(Override)子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。重载(Overload)是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。
Java中的重写和重载与C++是相似的,两者的规则也是相似的。这两者也是Java多态的体现。
Java的特性和C++的区别不太大,区别在语法和使用上。以下放出我的Hello world代码,运行贴图:

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

在这里插入图片描述

Ant

Ant 是一个 Apache 基金会下的跨平台的基于 Java 语言开发的构建工具。而Ant的作用是简化一般构建工具的工作。Ant 可以很容易从命令行调用,并且它能够很好地集成免费和商用的集成开发环境
一般来说,Ant 的构建文件默认为 build.xml,放在项目顶层目录中。然而,并没有限制构建文件必须命名为 bulid.xml,也并不限制放在项目顶层目录中。你可以将构建文件命名为其他名字,也可以将它放在项目的其他地方。

Ant 数据类型

文件集
文件集的数据类型代表了一个文件集合。它被当作一个过滤器,用来包括或移除匹配某种模式的文件。

模式集合
一个模式集合指的是一种模式,基于这种模式,能够很容易地过滤文件或者文件夹。模式可以使用下述的元字符进行创建。

? -仅匹配一个字符
* -匹配零个或者多个字符
** -递归地匹配零个或者多个目录

文件列表
文件列表数据类型与文件集相类似,除了以下几处不同:

文件列表包含明确命名的文件的列表,同时其不支持通配符。
文件列表数据类型能够被应用于现有的或者还不存在的文件中。

过滤器集合
使用一个过滤器集合数据类型与拷贝任务,我们可以在所有文件中使用一个替换值来替换掉一些与模式相匹配的文本。

路径
path 数据类型通常被用来表示一个类路径。各个路径之间用分号或者冒号隔开。然而,这些字符在运行时被替代为执行系统的路径分隔符。

Ant编译项目
写好一个build.xml文件,放在写好的Helloworld小程序的test中,与src同级。。
在这里插入图片描述

<project name="test" default="jar" basedir=".">
    <description>
        building test!
    </description>
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="classes"/>
  <property name="dist"  location="dist"/>
  <property name="user.name" value="lmk"/>

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the classes directory structure used by compile -->
    <mkdir dir="${build}"/>
  </target>

  <target name="build" depends="init"  description="build the source code" >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}"/>
  </target>

  <target name="jar" depends="build"
        description="generate the distribution" >
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
  <jar destfile="${dist}/HelloWorld-${DSTAMP}.jar" basedir="${build}">
   <manifest>
    <attribute name="Built-By" value="${user.name}"/>
    <attribute name="Main-Class" value="org.javaresearch.test"/>
   </manifest>
  </jar>  
 </target>
  
  <target name="run" depends="build" description="run test">
    <java classpath="${build}" classname="org.javaresearch.test"></java>
  </target>

  <target name="runjar" depends="jar" description="run test in jar file">
         <java jar="${dist}/test-${DSTAMP}.jar"
           fork="true"
           failοnerrοr="true"
           maxmemory="128m"
           >
         <arg value="-h"/>
         <classpath>
           <pathelement location="${dist}/test-${DSTAMP}.jar"/>
           <pathelement path="${java.class.path}"/>
         </classpath>
       </java>
  </target>
  
  <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
  </target>
</project>

更多可参考以下教程
Ant简易教程 Ant详细教程

Junit

在实训中云桌面linux上配置junit的配置总是各种各样的错误,遇到很大麻烦。

首先找到云桌面放junit-4.9.jar 的位置,一般会帮你下载好的,只需自己配置环境就行,这次是在File System -> opt ->resources 目录下,找到junit-4.9.jar ,将文件复制到Downloads文件夹下(确定要复制到这个文件夹下,当然也可以复制到别的文件夹,但后面讲的内容就要改一些参数了,所以先移到Downloads下吧)
然后在命令行(即终端)下运行subl ~/.bashrc
在打开的文件末尾加入下面三句话:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export  CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/administrator/Downloads/junit-4.9.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

然后保存并退出
终端执行source ~/.bashrc,这是使设置的路径生效的作用,看到CLASSPATH中有一部分是关于junit的了吧,前面有路径“Downloads”是吧,这也是让你们把junit-4.9.jar放到Downloads目录下的原因, 当然这也是可以改的。 到此为止juint环境已经配置好了
然后就可以快乐测试HelloworldTest

Helloworld.java:
public class HelloWorld {
    String str;
    public void hello()
    {
        str = "Hello World!";
    } 
    public String getStr()
    {
        return str;
    }
}
HelloworldTest.java:

import static org.junit.Assert.*;
import org.junit.Test;
public class HelloWorldTest {
    public HelloWorld helloworld = new HelloWorld();
    @Test
    public void testHello() {
    helloworld.hello();
    assertEquals("Hello World!", helloworld.getStr());
    }
}

保存后编译运行,命令如下:


javac HelloWorldTest.java HelloWorld.java
java –ea org.junit.runner.JUnitCore HelloWorldTest```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值