JAVA高级特性(一)

今天没有上课,正好有机会让我把21,22号张孝祥老师讲的内容复习了一遍,来传智的前两天课就是张老师上的,将JAVA的高级特性讲了一下。给我的感觉张老师在课上讲的很生动,比他在网上的视频讲的好!

先说说张老师那两天传授了我们什么知识吧!

1.静态导入:先举个离例子 。

import java.lang.Integer.parseInt;
public class StaticImport {
     int x = parseInt("123");
     System.out.println(x);

}

这样的程序如果不在IDE 工具中输入,是很难看出这个程序代码会出现问题,可它偏偏就出问题了,这是为什么呢?因为程序里面有个静态方法,如果导入import static java.lang.Integer.parseInt;这样的程序就可以运行了。

2.可变参数与for循环增强

   这个是一般的用法:

public static void loop(String[] args){

for(int i=0;i<args.length;i++)
  {
   System.out.println(args[i]);
  }

}

  这个是JDK 增加的新特性的用法!

public static void loop(int x,int... args ) {  //这里的参数一定要以这样的形式输入
    for(int i:args)
  {
   System.out.println(i);
  }
 }

 3.枚举

写枚举技巧:
 1. enum Gender{MALE,FEMALE,BOTH}
 2. enum Gender{MALE,FEMALE,BOTH;public abstract getTitle();}
 3.enum Gender{MALE{},FEMALE{},BOTH{};public abstract getTitle();}
 4.填充各个{}中的getTitle方法。

下面是个红绿黄灯的例子:

public enum TrafficLamp {
 
 RED(30){
  public TrafficLamp next()
  {
   return GREEN;
  }
 },
 GREEN(50){
  public TrafficLamp next()
  {
   return YELLOW;
  }  
 },
 YELLOW(5){
  public TrafficLamp next()
  {
   return RED;
  }   
 };
 
 public abstract TrafficLamp next(); 
 private int time;
 private  TrafficLamp(int time)
 {
  this.time = time;
 }

4.反射.

这个知识点,真是费了我好大劲才理解。当真正理解了,其实也就不难了。先举例子来理解什么是反射。

先建这样的一个类,带会下面有个类里面有反射成员变量的方法的!

public class ReflectPoint {
 private int x;
 public int y;
 
 public ReflectPoint(int x, int y) {
  super();
  this.x = x;
  this.y = y;
 }
}

public class Test{

String obj = (String)Class.forName("java.lang.String").newInstance();
   这是制造另一个章:Class.forName("java.lang.Integer")
---------------------
 讲Constructor://构造方法
     Constructor constructors[] = Class.forName("java.lang.String").getConstructors();

     Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
  
     String str = (String)constructor.newInstance(new StringBuffer("abc"));
     System.out.println(str);

  class.newInstance()内部其实就是在用默认的构造方法
-----------------------
 讲Method  //方法
    
     Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class);
     System.out.println(charAt.invoke(str, 1));
-------------------------
 讲Field  //成员变量

     ReflectPoint point = new ReflectPoint(1,7);
     Field y = Class.forName("cn.itcast.corejava.ReflectPoint").getDeclaredField("y");
     y.setAccessible(true);

     System.out.println(y.get(point));
     Field x = Class.forName("cn.itcast.corejava.ReflectPoint").getDeclaredField("x");
     x.setAccessible(true);
     System.out.println(x.get(point));

 }

   在这里我们运行的时候可以看出,ReflectPoint类里面的x和y 都可以打印出来了!

 

     学习心得:先从这四个知识点来看,张老师的确很让人敬佩!以上的一些程序代码均为张老师课堂即兴发挥所写,也可以看出,张老师对JAVA特性的深刻理解能力!现在说说我对这些程序代码的理解,说实话,才开始听张老师讲的时候,我感觉很模糊的,但是当我真正理解了之后,觉得这些程序写的真是太好了。象以后我门在学习JAVA 的时候,一定要对每个知识点要慢慢的消化吃透,切不能走马观花。一个知识点必须要反复的动手练习,不然很难理解其中的奥秘所在的!

JAVA高级特性(二)明天待续!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值