一、Cloneable接口
将对象复制一份,称为对象的克隆。为了实现一些短暂显示的,而又不得不实现的对象设计的一个类,比如飞机大战中的子弹
如果某个类要实现Cloneable。
1)必须实现其接口
2)重写Object中的clone方法
然后直接调用方法
二、System与Runtime类
System类中,常用有输入(System.in),输出(System.out)和错误输出(System.erro),会显红
System.arrayCopy是常用的拷贝方法
Runtime类的使用,可以与运行环境系统相匹配
三、数字处理工具类
BigInteger类:可以进行对超过INT范围的数的计算
BigDecimal类:由于double和float在计算时容易丢失精度,因此引入此类
四、MD5工具类
信息摘要算法,目的是为了实现数据的加密与解密
使用方法:
MessiageDisget md5 = new MessageDisget("MD5")
//JDK1.8新增
String newstr = Base64.getEncode().encodeToString(md5.disget(str.getBytes("utf-8")))
注:64是指:a-z,A-Z,0-9,/,*;在每次加密以后,会在最后加上==
//1.8以前
Base64Encode base64 = new Base64Encode
base64.encode(md5.disget(str.getBytes("utf-8")))
五、二叉树
形如此类的树,即为二叉树,每个节点最多有两个节点,每个节点左边的值,必须小于该节点,右边的必须大于。最顶端的叫根节点,最下面的叫叶子节点
将数据排为二叉树并按照中序遍历(左-中-右),先序为(中-左-右)后序为(左-右-后)
实现代码:
public class BinalTree {
private Node root;
public void add(int data) {
if(root == null) {
root= new Node(data);
}else {
root.addNode(data);
}
}
public void print() {
if(root == null) {
System.out.println("空树");
}else {
root.printNode();
}
}
private class Node{
private int data;
private Node left;
private Node right;
public Node(int data) {
this.data = data;
}
public void addNode(int data) {
if(this.data > data) {
if(this.left == null) {
this.left = new Node(data);
}else {
this.left.addNode(data);
}
}else{
if(this.right == null) {
this.right = new Node(data);
}else {
this.right.addNode(data);
}
}
}
public void printNode() {
if(this.left != null) {
this.left.printNode();
}
System.out.println(this.data + "->");
if(this.right != null) {
this.right.printNode();
}
}
}
}
public class BinalTreeDemo {
public static void main(String[] args) {
BinalTree bt = new BinalTree();
//8,12,4,5,9,13,6,1,17
bt.add(8);
bt.add(12);
bt.add(4);
bt.add(5);
bt.add(9);
bt.add(13);
bt.add(6);
bt.add(1);
bt.add(17);
bt.print();
}
}