java日常笔记2016-12-20

来源:互联网 发布:玩法变了淘宝seo pdf 编辑:程序博客网 时间:2024/06/06 04:31

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 和VectorArrayList和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();}}


0 0
原创粉丝点击