高新

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

高版本的java能运行低版本的javac编译的程序但是低版本的java不能运行高版本的程序。、

  import语句可以导入一个类或某个包中的所有类

  增强for循环

  语法:

  for ( type 变量名:集合变量名 ) { … }

  注意事项:

  迭代变量必须在( )中定义!

  集合变量可以是数组或实现了Iterable接口的集合类

  举例:

  public static int add(int x,int ...args) {

  int sum = x;

  for(int arg:args) {

  sum += arg;

  }

  return sum;

  }

  自动装箱:

  Integer num1 = 12;

  自动拆箱:

  System.out.println(num1 + 12);

  基本数据类型的对象缓存:

  Integer num1 = 12;

  Integer num2 = 12;

  System.out.println(num1 == num2);

  Integer num3 = 129;

  Integer num4 = 129;

  System.out.println(num3 == num4);

  Integer num5 = Integer.valueOf(12);

  Integer num6 = Integer.valueOf(12);

  System.out.println(num5 == num6);

  枚举

  问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。

  枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

  总结:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName()。

  枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

  枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。

  带构造方法的枚举

  构造方法必须定义成私有的

  如果有多个构造方法,该如何选择哪个构造方法?

  枚举元素MON和MON()的效果一样,都是调用默认的构造方法。

  带方法的枚举

  定义枚举TrafficLamp

  实现普通的next方法

  实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。

  增加上表示时间的构造方法

  枚举只有一个成员时,就可以作为一种单例的实现方式。

  反射

  反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、Package等等。

  一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象后,得到这些实例对象后有什么用呢?怎么用呢?这正是学习和应用反射的要点。

  Constructor类代表某个类中的一个构造方法

  得到某个类所有的构造方法:

  例子:Constructor [] constructors= Class.forName("java.lang.String").getConstructors();

  得到某一个构造方法:

  例子: Constructor constructor = Class.forName(“java.lang.String”).getConstructor(StringBuffer.class);

  //获得方法时要用到类型

  创建实例对象:

  通常方式:String str = new String(new StringBuffer("abc"));

  反射方式: String str = (String)constructor.newInstance(new StringBuffer("abc"));

  //调用获得的方法时要用到上面相同类型的实例对象

  Class.newInstance()方法:

  例子:String obj = (String)Class.forName("java.lang.String").newInstance();

  该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象。

  该方法内部的具体代码是怎样写的呢?用到了缓存机制来保存默认构造方法的实例对象。

  Method类代表某个类中的一个成员方法

  得到类中的某一个方法:

  例子: Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class);

  调用方法:

  通常方式:System.out.println(str.charAt(1));

  反射方式: System.out.println(charAt.invoke(str, 1));

  如果传递给Method对象的invoke()方法的第一个参数为null,这有着什么样的意义呢?说明该Method对象对应的是一个静态方法!

  jdk1.4和jdk1.5的invoke方法的区别:

  Jdk1.5:public Object invoke(Object obj,Object... args)

  Jdk1.4:public Object invoke(Object obj,Object[] args),即按jdk1.4的语法,需要将一个数组作为参数传递给invoke方法时,数组中的每个元素分别对应被调用方法中的一个参数,所以,调用charAt方法的代码也可以用Jdk1.4改写为 charAt.invoke(“str”, new Object[]{1})形式。

  写一个程序,这个程序能够根据用户提供的类名,去执行该类中的main方法。用普通方式调完后,大家要明白为什么要用反射方式去调啊?

  问题:

  启动Java程序的main方法的参数是一个字符串数组,即public static void main(String[] args),通过反射方式来调用这个main方法时,如何为invoke方法传递参数呢?按jdk1.5的语法,整个数组是一个参数,而按jdk1.4的语法,数组中的每个元素对应一个参数,当把一个字符串数组作为参数传递给invoke方法时,javac会到底按照哪种语法进行处理呢?jdk1.5肯定要兼容jdk1.4的语法,会按jdk1.4的语法进行处理,即把数组打散成为若干个单独的参数。所以,在给main方法传递参数时,不能使用代码mainMethod.invoke(null,new String[]{“xxx”}),javac只把它当作jdk1.4的语法进行理解,而不把它当作jdk1.5的语法解释,因此会出现参数类型不对的问题。

  泛型

  Jdk 1.5以前的集合类中存在什么问题

  ArrayList collection = new ArrayList();

  collection.add(1);

  collection.add(1L);

  collection.add("abc");

  int i = (Integer) collection.get(1);//编译要强制类型转换且运行时出错!

  Jdk 1.5的集合类希望你在定义集合时,明确表示你要向集合中装哪种类型的数据,无法加入指定类型以外的数据

  ArrayList collection2 = new ArrayList();

  collection2.add(1);

  /*collection2.add(1L);

  collection2.add(“abc”);*///这两行代码编译时就报告了语法错误

  int i2 = collection2.get(0);//不需要再进行类型转换

  泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再调用其add方法即可。

  问题:

  定义一个方法,该方法用于打印出任意参数化类型的集合中的所有数据,该方法如何定义呢?

  错误方式:

  public static void printCollection(Collection

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

# 高校智慧校园解决方案摘要 智慧校园解决方案是针对高校信息化建设的核心工程,旨在通过物联网技术实现数字化校园的智能化升级。该方案通过融合计算机技术、网络通信技术、数据库技术和IC卡识别技术,初步实现了校园一卡通系统,进而通过人脸识别技术实现了更精准的校园安全管理、生活管理、教务管理和资源管理。 方案包括多个管理系统:智慧校园管理平台、一卡通卡务管理系统、一卡通人脸库管理平台、智能人脸识别消费管理系统、疫情防控管理系统、人脸识别无感识别管理系统、会议签到管理系统、人脸识别通道管理系统和图书馆对接管理系统。这些系统共同构成了智慧校园的信息化基础,通过统一数据库和操作平台,实现了数据共享和信息一致性。 智能人脸识别消费管理系统通过人脸识别终端,在无需接触的情况下快速完成消费支付过程,提升了校园服务效率。疫情防控管理系统利用热成像测温技术、视频智能分析等手段,实现了对校园人员体温监测和疫情信息实时上报,提高了校园公共卫生事件的预防和控制能力。 会议签到管理系统和人脸识别通道管理系统均基于人脸识别技术,实现了会议的快速签到和图书馆等场所的高效通行管理。与图书馆对接管理系统实现了一卡通系统与图书馆管理系统的无缝集成,提升了图书借阅的便捷性。 总体而言,该智慧校园解决方案通过集成的信息化管理系统,提升了校园管理的智能化水平,优化了校园生活体验,增强了校园安全,并提高了教学和科研的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值