1:活了多少天(1:Date转换成String 2:Calendar)
public class Living_Day {
public static void main(String[] args) {
//1:通过字符串转换
System.out.println("请输入您的出生年月:(2014-02-04)");
Scanner sc = new Scanner(System.in);
String d = sc.nextLine();
Date date1 = DateUtil.DateParse(d);
long l1 = date1.getTime()/1000L/3600/24;
Date date2 = new Date(System.currentTimeMillis());
long l2 = date2.getTime()/1000L/3600/24;
long l = l2-l1;
System.out.println("您已经活了:"+l+"天了");
//2:通过calendar类
/*SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
System.out.println("请输入年份:");
Scanner sc1 = new Scanner(System.in);
int year = sc1.nextInt();
calendar.set(Calendar.YEAR, year);
System.out.println("请输入月:");
Scanner sc2 = new Scanner(System.in);
int month = sc1.nextInt();
calendar.set(Calendar.MONTH, month);
System.out.println("请输入日:");
Scanner sc3 = new Scanner(System.in);
int day = sc1.nextInt();
calendar.set(Calendar.DAY_OF_MONTH, day);
Date date1 = new Date(calendar.getTimeInMillis());
long d1 = date1.getTime()/1000L/3600/24;
Date date2 = new Date(System.currentTimeMillis());
long d2 = date2.getTime()/1000L/3600/24;
long d =d2-d1;
System.out.println(d);*/
}
}
2:arraycopy()的应用
public class ArrayCopy {
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3};
int[] arr2 = new int[]{7,8,9,0};
System.arraycopy(arr1, 0, arr2, 0, 3);
System.out.print(Arrays.toString(arr2));
}
}
3:自定义集合(犹如List)
public class MyList {
private Object[] objs;
private int index=0;
public MyList() {
this.objs = new Object[5];//
}
public void add(Object obj){
//满了:买一副新的棺材,再把那些动物一个一个倒进去
if(index>=objs.length){
Object[] newObjs = new Object[objs.length+objs.length/2];
//这是比较戳了方式:用手挖坑
/*for (int i = 0; i < objs.length; i++) {
newObjs[i] = objs[i];
}*/
//这是比较戳了方式:用挖掘机挖坑
System.arraycopy(objs, 0, newObjs, 0, objs.length);
objs = newObjs;
}
objs[index] = obj;//1 2 3 4 5
index++;
}
public Object get(int index){
return objs[index];
}
public int size(){
return index;
}
}
public class Main {
public static void main(String[] args) {
MyList gc = new MyList();//用数组实现,无限扩容
gc.add("天");
gc.add("地");
gc.add("人");
gc.add("神");
gc.add("鬼");
gc.add("佛");
// System.out.println(list.size());
for (int i = 0; i < gc.size(); i++) {
System.out.println(gc.get(i));
}
}
}
4:StringBuffer和StringBuilder ArrayList 和Vector ArrayList和LinkedList HashSet和和LinkedHashSet
1:
1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。 3. StringBuilder:线程非安全的 StringBuffer:线程安全的 当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。 对于三者使用的总结:1.如果要操作少量的数据用 = String 2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder 3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
2:Vector & ArrayList 1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。 2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
:3. Hashtable & HashMap Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
4:ArrayList & LinkedList(用于频繁的插入、删除) ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别: 从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能; 而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
5:泛型在集合中的应用(当集合<泛型>使用String时,使用时不需要对象转换)
List<String> list = new ArrayList<String>();// 允许重复
String s1 = "天1";
String s2 = "地2";
String s3 = "人3";
String s4 = "神4";
String s5 = "鬼5";
String s6 = "佛6";
list.add(s1);
list.add(s2);
list.add(s4);
list.add(s3);
list.add(s6);
list.add(s5);
/*for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if(str.indexOf("地")!=-1){
list.remove(str);//基本上是禁止使用!!
}
}*/
6:hashset(存放有一定规律,不同类型的规律不同)
7:List和Set的区别
List:有序、可重复
Set:无序、不可重复
8:三种遍历方式
/*for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if(str.indexOf("地")!=-1){
list.remove(str);//基本上是禁止使用!!
}
}*/
for (Iterator<String> ita = list.iterator();ita.hasNext(); ) {
String str = ita.next();
if(str.indexOf("人")!=-1){
ita.remove();//迭代器的remove 方法,推荐使用!
}
}
for (Iterator<String> ita = list.iterator();ita.hasNext(); ) {
String str = ita.next();
System.out.println(str);
}
9:hashcode()的优先权大于equals()
在方法内设置返回值,判定哪一个优先权大
10:Comparable和Compartor比较能力和比较器的差别(比较器的权力大于比较能力)
public class Person implements Comparable<Person>{
private String name;
private String personNo;
private int age;
//正数 零 负数
public int compareTo(Person p) {
return (this.getAge() - p.getAge());
}
public class PersonComparator implements Comparator<Person>{
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
}