java 无知点

来源:互联网 发布:巴黎必去景点 知乎 编辑:程序博客网 时间:2024/06/07 09:18
 Class对象:    
       每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。获取Class实例的三种方式:
(1)利用对象调用getClass()方法获取该对象的Class实例;
(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例;
(3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。

  Point pt=new Point();  //point是自定义类
 Class c1=pt.getClass();

Class c2=Class.forName("Point");

 c2.getName();

Class c3=Point.class;

c3.getName();

Class c4=Integer.TYPE;

c4.getName();

 

static静态代码段的加载:

          在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象
 
  new Point();
  Class.forName("Point");//上述两种方法都会运行静态代码段!
class Point
{
  static
  {
     System.out.println("Loading Point");
  }
}

Map.Entry类的使用:


标准的Map访问方法如下:

Set keys = map.keySet( );if(keys != null) {Iterator iterator = keys.iterator( );while(iterator.hasNext( )) {Object key = iterator.next( );Object value = map.get(key);;....;}} 

这个方法存在一个问题:从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值(即map.get(key))。

引入Map.Entry类,你可以得到在同一时间得到所有的信息。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:
Set entries = map.entrySet( );if(entries != null) {Iterator iterator = entries.iterator( );while(iterator.hasNext( )) {Map.Entry entry =iterator.next( );Object key = entry.getKey( );Object value = entry.getValue();;....}} 

尽管增加了一行代码,我们却省略了许多对Map不必要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。


原创粉丝点击