Vi学习笔记

vi学习

进入命令模式:

  • i 进入输入模式
  • x 删除当前光标所在处字符
  • :切换到底线命令模式

进入输入模式:

  • 字符按键和SHIFT组合,输入字符
  • ENTER回车换行
  • 退格键删除光标前一个字符
  • delete删除键,删除光标后一个字符
  • 方向键移动光标
  • HOME/END移动到行首/行尾
  • Page Up/Down向上/向下翻页
  • Insert变为输入/替换模式,光标变成竖线/下划线
  • ESC退出输入模式,进入命令模式

底线命令模式:

  • :q 离开,加!则为强制离开
  • :w 保存,若加!,则若文件为只读,则强制写入
  • :wq,保存并离开,若加!则为强制保存并离开
  • :w [filename]将编辑的数据储存成另一个档案
  • :r [filename]将另一个档案的数据添加到正在编辑的数据中

总的来说,vi/vim的使用入门还是很简单的,熟悉一些简单的操作就能完成编程操作,但若是想进一步提高效率,还需要了解熟记更多的快捷键,还有安装合适的插件

Ant学习

初始默认保存为build.xml

<?xml version="1.0"?>
  <project name="Hello World Project" default="info">
   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!</echo>
   </target>
  </project>

声明前没有任何空格和换行,否则会出错
所有的构建文件需要包含项目元素 (project 标签)和至少一个目标元素 (target 标签)。

属性描述
项目名(name)表示项目名称(可选)
默认(default)表示构建脚本默认运行的目标,即制定默认的 target。一个项目 (project) 可以包含多个目标 (target)。(必须)
基准目录(basedir)表示当该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。(可选)

从例子中和实际操作中可以发现,target可以看作是任务目标,每个target都表是一个任务目标,而一个project可以有多个任务目标。project的default属性则表示了默认要运行的任务目标。

自动编译

首先新建一个名为antstudy的Java的工程,然后建立src为源码根目录,并创建一个Java的类文件,名为HelloWorld.java
然后再在antstudy根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下:

<?xml version="1.0"?> 
  <project name="javacTest" default="compile" basedir=".">
    <target name="clean">
      <delete dir="build"/>
    </target>

    <target name="compile" depends="clean">
      <mkdir dir="build/classes"/>
      <javac srcdir="src" destdir="build/classes"/>
    </target>
  </project>

自动运行

如下改动之后,运行该build.xml文件,可在控制台看到HelloWorld的main方法的输出

<?xml version="1.0"?>
  <project name="javaTest" default="run" basedir=".">
    <target name="clean">
      <delete dir="build"/>
    </target>
    
    <target name="compile" depends="clean">
      <mkdir dir="build/classes"/>
      <javac srcdir="src" destdir="build/classes"/>
    </target>
    
    <target name="run" depends="compile">
      <java classname="HelloWorld">
        <classpath>
          <pathelement path="build/classes"/>
        </classpath>
      </java>
    </target>
  </project>

在这份文件中,出现了多个targer,而且出现了depends属性,这是用于依赖target的,被依赖的targer将会线、先执行。如上,执行顺序便是clean,compile,run了

JUnit

junit是一个Java语言编写的单元测试框架,但仅适合纯粹的单元测试,但对于集成测试仍需要用到TestNG
首先

使用命令行进行测试

使用org.junit.runner.JUnitCore类。这个类提供了runClasses()方法,它允许运行一个或多个测试类。runClasses()方法返回类型是org.junit.runner.Result对象类型.这个对象可以被用来收集关于测试信息。此外,如果有一个失败的测试,可以用org.junit.runner.notification.Failure对象保存失败测试的描述。

创建一个新的Java类

创建一个用于输出信息的类MessageUtil.java

public class MessageUtil {

   private String message;

   public MessageUtil(String message){
      this.message = message;
   }

   public String printMessage(){
      System.out.println(message);
      return message;
   }   
} 

然后创建一个用于测试的类TestJunit.java

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestJunit {

   String message = "Hello World";  
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
      assertEquals(message,messageUtil.printMessage());
   }
}

然后是用于运行测试的类TestRunner.java

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class JunitRunner {

	public static void main(String[] args) {

		Result result = JUnitCore.runClasses(TestJunit.class);
		for (Failure fail : result.getFailures()) {
			System.out.println(fail.toString());
		}
		if (result.wasSuccessful()) {
			System.out.println("All tests finished successfully...");
		}
	}
}

AssertionsTest.class是测试类
然后进行编译,而后运行JunitRunner,命令行输出结果

通过Ant运行Junit

首先创建项目文件夹TestJunitWithAnt
在其中添加文件夹src,test,lib
src中添加MessageUtil类,用于在控制台显示信息

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
}

然后再在src中创建一个TestMessageUtil

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestMessageUtil {

   String message = "Robert";   
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() { 
      System.out.println("Inside testPrintMessage()");     
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

然后将Junit-4.x.jar复制到lib文件夹中
然后创建在根目录下创建build.xml

<project name="JunitTest" default="test" basedir=".">
   <property name="testdir" location="test" />
   <property name="srcdir" location="src" />
   <property name="full-compile" value="true" />
   <path id="classpath.base"/>
   <path id="classpath.test">
      <pathelement location="/lib/junit-4.10.jar" />
      <pathelement location="${testdir}" />
      <pathelement location="${srcdir}" />
      <path refid="classpath.base" />
   </path>
   <target name="clean" >
      <delete verbose="${full-compile}">
         <fileset dir="${testdir}" includes="**/*.class" />
      </delete>
   </target>
   <target name="compile" depends="clean">
      <javac srcdir="${srcdir}" destdir="${testdir}" 
         verbose="${full-compile}">
         <classpath refid="classpath.test"/>
      </javac>
   </target>
   <target name="test" depends="compile">
      <junit>
         <classpath refid="classpath.test" />
         <formatter type="brief" usefile="false" />
         <test name="TestMessageUtil" />
      </junit>
   </target>
</project>

在命令行中进入TestJunitWithAnt文件夹
使用命令:

ant

可以得出测试结果,以上是一个可用的模版
简单地使用junit是通过对比程序输出结果和标准输出结果,然后分析程序,从而发现程序是否存在错误。而通过ant来使用junit,使这一过程变得更加简单和轻松

Java

首先解读一个简单的java文件

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

然后得知一下几点:

  • Java保存的文件名必须与类名一致;
  • 如果文件中只有一个类,文件名必须与类名一致;
  • 一个Java文件中只能有一个public类;
  • 如果文件中不止一个类,文件名必须与public类名一致;
  • 如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。

Java中有String, StringBuffer, StringBuilder(不是线程安全的)等类,因为String类是不可更改的,一旦创建对象,其值就无法更改了,需要使用StringBuffer和StringBuilder。

其次是输入,和C++略有不同。首先要通过import来引入其他的包中的类,而输入所要用的Scanner类
通过以下方式引入

import java.util.Scanner;

JUI

这次写Java小程序用到了jui,其中引用到的包是

import javax.swing.*;

而程序中用的控件主要是JTextField,JButton和JPanel,还有Container,显示和输入的格都用JTextField来实现,加减乘除和‘OK’则通过JButton来实现。
布局则有控件的方法,以及GridLayout()
然后就是通过数据绑定来实现对按钮的操作了,还有实现对应格子内内容的变化。
用到了ActionListener和actionPerformed(ActionEvent e)方法
除此之外还可以加上异常判断的代码块,实现对输入的限制以及例如‘除以0’这种非法输入的判断

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值