黑马软件工程师_Java新特性

黑马程序员_Java新特性

---------------------- android培训、java培训、期待与您交流! ----------------------

一、java中的一些新特性

1、增强的for循环

1)格式:

for(数据类型变量名 :被遍历的集合(Collection)或者数组)

{

      

}

2)特点

对集合进行遍历。

只能获取集合元素。但是不能对集合进行操作。

迭代器除了遍历,还可以进行remove集合中元素的动作。

如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。

3)传统for和高级for有什么区别呢?

高级for有一个局限性。必须有被遍历的目标

所以最好在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。

4)演示代码如下:

import java.util.*;

class ForEachDemo

{

       public static void main(String[] args)

       {

             

              ArrayList<String> al = new ArrayList<String>();

              al.add("abc1");

              al.add("abc2");

              al.add("abc3");

              for(String s : al)

              {

                     //s = "kk";

                     System.out.println(s);

              }

              System.out.println(al);

              /*

              Iterator<String> it = al.iterator();

              while(it.hasNext())

              {

                     System.out.println(it.next());

              }

              */

              int[] arr = {3,5,1};

              for(int x=0; x<arr.length; x++)

              {

                     System.out.println(arr[x]);

              }

              for(int i : arr)

              {

                     System.out.println("i:"+i);

              }

              HashMap<Integer,String> hm = new HashMap<Integer,String>();

              hm.put(1,"a");

              hm.put(2,"b");

              hm.put(3,"c");

              Set<Integer> keySet = hm.keySet();

              for(Integer i : keySet)

              {

                     System.out.println(i+"::"+hm.get(i));

              }

//            Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();

//            for(Map.Entry<Integer,String> me : entrySet)

              for(Map.Entry<Integer,String> me : hm.entrySet())

              {

                     System.out.println(me.getKey()+"------"+me.getValue());

              }

       }

}

2、可变参数

1)特点

JDK1.5版本出现的新特性。

方法的可变参数。

在使用时注意:可变参数一定要定义在参数列表最后面。

2)底层实现原理

其实就是上一种数组参数的简写形式。

不用每一次都手动的建立数组对象。

只要将要操作的元素作为参数传递即可。

隐式将这些参数封装成了数组。

3)演示代码

class  ParamMethodDemo

{

       public static void main(String[] args)

       {

             

             

              show("haha",2,3,4,5,6);

              //show(2,3,4,5,6,4,2,35,9,"heh");

              //show();

       }

       public static void show(String str,int... arr)

       {

              System.out.println(arr.length);

       }

      

}

3、静态导入

1)特点

所谓的静态导入,其实就是导入某一类类中的所有静态成员,这样程序中的静态方法就可以直接调用了。

2)示例代码如下:

import java.util.*;

import static  java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。

import static java.util.Collections.*;

import static  java.lang.System.*;//导入了System类中所有静态成员。

class  StaticImport //extends Object

{

       public static void main(String[] args)

       {

              out.println("haha");

              int[] arr = {3,1,5};

              sort(arr);

              int index = binarySearch(arr,1);

              out.println(Arrays.toString(arr));

              System.out.println("Index="+index);

              ArrayList al = new ArrayList();

              al.add(1);

              al.add(3);

              al.add(2);

              out.println(al);

              sort(al);

              out.println(al);

       }

}

二、java中的一些常用对象

1System对象

1System对象的特点

System:类中的方法和属性都是静态的。

2System类中常用到的一些方法

out:标准输出,默认是控制台。

in:标准输入,默认是键盘。

Properties getProperties():获取系统属性信息

setPropertiy(key,value):在系统中自定义一些信息

getProperty(key):获取指定属性信息

3)示例代码如下:

import java.util.*;

class SystemDemo

{

       public static void main(String[] args)

       {

              Properties prop = System.getProperties();

             

              //因为PropertiesHashtable的子类,也就是Map集合的一个子类对象。

              //那么可以通过map的方法取出该集合中的元素。

              //该集合中存储都是字符串。没有泛型定义。

             

              //如何在系统中自定义一些特有信息呢?

              System.setProperty("mykey","myvalue");

              //获取指定属性信息。

              String value = System.getProperty("os.name");

              System.out.println("value="+value);

             

              //可不可以在jvm启动时,动态加载一些属性信息呢?

              String v = System.getProperty("haha");

              System.out.println("v="+v);

                     //获取所有属性信息。

              for(Object obj : prop.keySet())

              {

                     String value = (String)prop.get(obj);

                     System.out.println(obj+"::"+value);

              }

             

       }

}

2Runtime对象

1)特点

该类并没有提供构造函数。

说明不可以new对象。那么会直接想到该类中的方法都是静态的。

发现该类中还有非静态方法。

说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。

由这个特点可以看出该类使用了单例设计模式完成。

2)示例代码

{

       public static void main(String[] args) throws Exception

       {

              Runtime r = Runtime.getRuntime();

              Process p = r.exec("notepad.exe  SystemDemo.java");

             

              Thread.sleep(4000);

              p.destroy();

       }

}

3Date对象

1)特点

Date表示特定的瞬间,精确到毫秒

2)示例代码

import java.util.*;

import java.text.*;

class DateDemo

{

       public static void main(String[] args)

       {

              Date d = new Date();

              System.out.println(d);//打印的时间看不懂,希望有些格式。

              //将模式封装到SimpleDateformat对象中。

              SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddE hh:mm:ss");

             

              //调用format方法让模式格式化指定Date对象。

              String time = sdf.format(d);

              System.out.println("time="+time);

              long l = System.currentTimeMillis();

              Date d1 = new Date(l);

              System.out.println("d1:"+d1);

       }

}

4Calendar对象

1)特点

Calendar类是一个抽象类,它为特定瞬间与一组诸如YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法

---------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net