sudo apt-get install default-jdk
java -version
Java的类:
class 类名 {
声明属性;
声明构造函数;
声明方法;
}
调用方法的写法与c++一样:对象.方法名
与C++类似。
标签是出现在一个语句之前的标识符,标签后面要跟上一个冒号(:),标签的定义如下:
label:statement;//定义标签
break [label] //用来从语句、循环语句中跳出。
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()。手动回收。这样来提高性能。
构造函数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());
JTextField(String text, int columns)
构造一个用指定文本和列初始化的新 TextField。
String first = "0";
JTextField first_field = new JTextField(first, 5); //文本为0,最多5列
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);
}
});
更高级的特性还没来得及学呢
作用类似makefile,但更高级
几个基本的元素
default="run" name="HelloWorld"> //项目的名称
"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
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集成到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 //测试