学习日记-java高新技术

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


java高新技术 

学完java se的基础知识,又看了张老师讲的高新技术的一些东西,现在这些是我整理了一下的一些知识,现在与大家分享:

 1、静态导入

静态导入的语法是impoort static包名.类名.*
注意:针对一个给定的包,不可能用一行语句静态地导入包中所有类的所有类方法和类变量。
如果一个本地方法和一个静态导入方法有着相同的名字,则本地方法被调用,如果静态导入两个中同名的类变量或类方法以,则必须通过对象或类名使用类变量、类方法。
 可变参数函数
  语法:函数修饰符返回类型函数名(参数类型...参数名){}
              例如:public int add(int x,int y,int…z){}
              注意:可变参数只能位于参数列表的最后。
加强for循环
             格式:for(type变量名:集合变量名){}
基本数据的拆、装箱操作
在面向对象的语法中,处理的对象一般都是对象。但是基本数据类型却不是对象,既用int、double和boolean等定义的变量都不是对象,在以前的版本中,为了解决基本数据类型转换为对象的问题,出现了打包类型。为了方便基本数据类型与对对象间的转换,在最新的版本中出了基本数据的自动拆,装箱操作。
      Integerdatal1=new Integer(10);//实现int类型转换对对象方式
      Integer datal2=Integer.valueOf(10);//实现int类型转换对对象方式
      Integer datal3=20;//通过自动装箱方式实现int类型转换对对象方式
注意:当通过自动装箱方式返回同一数值的对象时如果该数值在-128~127之间,返回的对象会引用同一个对象。否则相反。
反射-Class类
Class实例代表内存中的一份字节码,所谓字节码就是当Java虚拟机加载某个类的对象时,首先需要把硬盘上该类的二进制源码编译成Class文件的二进制代码(字节码),然后把文件的字节码加载到内存中,之后现创建该类的对象。
获取Class对象,既相应类的字节码。
获取类的方法:
类.getClass();
Class.forName(“类”);
类.Class
反射的基本应用
反射一般会涉及如下类:Class(表示一个类的类)、Field(表示属性的类)、Method(表示方法的类和Constrctor(表示类的构造方法的类)。
Class类位于java.lang包中,而后面3个类都位于java.lang.reflect包中。
构造方法的反射
//先通过String.class获取String类的字节码,然后再通过String.class.getConstructor()方法
//获取String类的构造函数。
Constructor cs=String.class.getConstructor(StringBuffer.class);
//在Constructor类中存在一个newInstance()方法,用来利用构造函数创建一个实例
//对象。该方法的参数类型必须与获取构造函数的参数类型相同。
String str=(String)cs.newInstance(new StringBuffer("gouzhao"));
//成员字段的反射
import java.lang.reflect.Field;
publicclass FieldRef {
   publicstaticvoid main(String[] args)throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
           Student st=new Student("lisi",20);
      //获取类中的类字段
      Field fieldString=st.getClass().getField("name");
      //获取对象中的值只能获取公有字段
      System.out.println("输出public属性字段"+fieldString.get(st));
      //获取私有字段的值,称暴力反射
      Field fieldAge=st.getClass().getDeclaredField("age");
      //改变类字段的属性
      fieldAge.setAccessible(true);
      System.out.println("输出private属性字段"+fieldAge.get(st));
   }
}
class Student{
   public Stringname;
   privateintage;
   public Student(String name,int age)
   {
      super();
      this.name=name;
      this.age=age;
   }
}
成员方法的反射
String str="abcdref";
//获取String类中参数为int的charAt()方法
Method methodChatAt=String.class.getMethod("charAt",int.class);
//对象str调用charAt()方法
System.out.println("str的第二个字母是:"+methodChatAt.invoke(str, 1));
System.out.println("str的第二个字母是:"+methodChatAt.invoke(str,new Object[]{1}));
枚举
以前都是使用public static final修饰常量。为了让程序员能够抛弃这种常量,于是就出现了Enum语法。
 
Public enum WeekDay{          //定义了星期的枚举
 
      SUN,MON,TUE,WED,THU,FN,SAT
 
}
 
带有构造函数的枚举
 
publicenum WeekDay{
 
      SUN,MON,TUE,WED,THU,FN("星期五"),SAT();
 
      private WeekDay(){
 
          System.out.println("没有参数构造函数");
 
      }
 
      private WeekDay(String s){
          System.out.println(s+"有参数构造函数");
      }
   }
对于枚举构造函数,必须放在枚举常量的后面,同时构造函数的修饰符必须是private。枚举类型的自定义构造函数不能覆盖默认执行的构造函数,只会在其后运行。
在高新技术这一节还讲到了泛型;泛型的好处:
		1、将运行时期出现的问题转移到了编译时期。
                2、避免了强制转换的麻烦。
格式:通过<>的形式接收指定的类型。
泛型类。泛型定义在类上,在new对象的时候传入具体类型,该类型作用于整个类。
      泛型方法。泛型定义在方法上,该泛型只在方法上有效。
      泛型既定义在类上又定义在方法上。
               注意:当方法被静态修饰时,静态不可以访问类上定义的泛型,而且在静态方法上定义泛型时,泛型只能定义在static关键字之后。
泛型的限定
通配符:?可以对类型进行限定范围。
        ?estends E:接收E类型或者E的子类型。
        ? super E:接收E类型或者E的父类型。

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值