Vim,Java,Ant和Junit的自学报告

Vim,Java,Ant和Junit的自学报告

Vim

三种模式

命令模式(Command mode)常用命令

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。
  • 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。使用gg=G可对整篇代码进行排版。
  • v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。
  • 选中文本后
    • d 删除
    • y 复制
    • p 粘贴
  • dd 删除一行
  • u 撤销
  • ZZ 保存并退出

输入模式(Insert mode)

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式(Last line mode)

  • q 退出程序
  • w 保存文件
  • wq 保存并退出
  • q!不保存直接退出

Java

jdk的安装和配置

  • sudo apt-get install default-jdk
  • 配置环境变量:JAVA_HOME 添加jdk安装目录,CLASSPATH添加JAVA_HOME/lib
  • java -version
    这里写图片描述
    如图所示说明jdk环境变量配置完成。

基本数据类型

  • 逻辑型:boolean.
  • 文本型:char.
  • 整型:byte,short,int 和 long.
  • 浮点型:double 和 float.

复合数据类型(对象数据类型)

Java的类:

class 类名 {
    声明属性;
    声明构造函数;
    声明方法;
} 

调用方法的写法与c++一样:对象.方法名

基本语法

与C++类似。

程序流程控制

  • 循环:while,do while,for
  • 分支: if else,switch
  • 跳转:break,continue, label:,return

标签是出现在一个语句之前的标识符,标签后面要跟上一个冒号(:),标签的定义如下:

label:statement;//定义标签
break [label] //用来从语句、循环语句中跳出。
  • 异常处理:try-catch-finally,throw

拆箱与装箱

Integer counter = 1; // 装箱
int counter2 = counter; // 拆箱

JVM会自动执行转换,并会对代码进行优化,在自动装箱时对于值从–128到 127 之间的值,使用一个实例(地址相同)。
当两个对象之间比较时,比较的是地址。

数组

int[] a = {1, 2, 3};
int[] b;
b = new int[5];
int[] c = b;

继承

与c++不同,每个子类只能从一个父类继承(单继承)

内存管理

垃圾收集器以较低的优先级在系统空闲周期中执行,通俗一点说就是它级别低,别人不运行时候才轮到它,因此垃圾收集器的速度比较慢。有些时候我们会使用 System.gc()。手动回收。这样来提高性能。

GUI组件(以Calculator为例)

swing


  • JFrame:窗口

构造函数JFrame(String title)
创建一个标题为title的,初始不可见的窗口。
JFrame frame = new JFrame("Easy Calculator");

public void setLocation(int x,int y)
设置窗口位置

frame.setLocation(300, 200);

public void setResizable(boolean resizable)
设置此窗体是否可由用户调整大小。

frame.setResizable(false);

public void pack()
调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者还不可显示,则在计算首选大小之前都将变得可显示。在计算首选大小之后,将会验证该窗口。
public void setVisible(boolean b)
根据参数 b 的值显示或隐藏此组件。

frame.setVisible(true);

public void setLayout(LayoutManager mgr)
设置此容器的布局管理器。

frame.getContentPane().setLayout(new BorderLayout());


  • JPanel:用于容纳同类型的组件
  • JTextField:文本框,允许编辑单行文本

JTextField(String text, int columns)
构造一个用指定文本和列初始化的新 TextField。
String first = "0";
JTextField first_field = new JTextField(first, 5); //文本为0,最多5列


  • JButton:按钮

JButton(String text)
创建一个带文本的按钮。
JButton add = new JButton("+");  
//给按钮添加事件处理器,有点像javascript
add.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        signal = "+";
        signal_field.setText(signal);
        result_field.setText(result);
    }
});

更高级的特性还没来得及学呢

Ant

作用类似makefile,但更高级

build.xml - 位于项目根目录

几个基本的元素

<?xml version="1.0" Encoding="UTF-8" ?>
<Project default="run" name="HelloWorld"> //项目的名称
</Project>
<property name="src" value="src" /> //相当于定义一个变量src,值为src,使用方式:${src}
<target name="compile" depends="init"> //编译,并定义依赖关系:需要先进行初始化
    <javac srcdir="${src}" destdir="${dest}"/> //编译src文件夹中的文件,输出到dest文件夹
</target>
<target name="build" depends="compile"> //打包,需要先进行编译
   <jar jarfile="${hello_jar}" basedir="${dest}"/> 
</target>
<target name="run" depends="build"> //运行,需要先进行打包
   <java classname="HelloWorld" classpath="${hello_jar}"/>
</target>
<target name="clean"> //清理,删除classes文件夹和HelloWorld.jar
   <delete dir="${dest}" />
   <delete file="${hello_jar}" />
</target>
<target name="rerun" depends="clean,run">  //清理并重新(编译、打包)运行
   <ant target="clean" />
   <ant target="run" />
</target>

编译

ant build

运行

ant run

清理

ant clean

Junit

配置环境变量

vim ~/.bashrc

在文件末尾添加:

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

保存后退出。

source ~/.bashrc

路径生效。

编写测试类

//HelloWorld.java
import java.util.*;

public class HelloWorld {
    String str;
    public void HelloWorld(){
        str = "Hello World!";
    }
    public String getStr() {
        return str;
    }
}
//HelloWorldTest.java
//在 import 关键字后面加上 static 关键字,就可以把后面的类的 static 的变量和方法导入到这个类中,调用的时候和调用自己的方法没有任何区别。
import static org.junit.Assert.*;
import org.junit.Test;

public class HelloWorldTest {
    @Test
    public static void main(String[] args) {
        HelloWorld helloworld = new HelloWorld(); 
        helloworld.HelloWorld();
        assertEquals("Hello World!",helloworld.getStr());
    }
}

测试

把两个文件放到同一目录下

javac HelloWorldTest.java
java -ea org.junit.runner.JUnitCore HelloWorldTest

-ea是enableassertion的缩写,在测试时使断言有效,参数为 [:packagename…|:classname]

junit测试结果

也可以用把junit集成到ant中
在build.xml中添加

<target name="test" depends="compile">
    <java classname="org.junit.runner.JUnitCore">
        <classpath>
            <pathelement path=\${dest} />
            <pathelement path="/opt/resources/junit-4.9.jar"/>
        </classpath>
        <arg value="HelloWorldTest" />
    </java>
</target>

之后

ant build //编译
ant test //测试
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页