java基础学习笔记8
来源:互联网 发布:英文文献数据库 编辑:程序博客网 时间:2024/05/21 04:39
可变参数
问题:一个方法接受的参数个数不确定,例如:
System.out.println(add(2,3,5));
System.out.println(add(1,2,3,5));
可变参数的特点:
1,只能出现在参数列表的最后;
2, ...位于变量类型和变量名之间,前后有无空格都可以;
3,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数;
增强for循环
语法:
for(type 变量名:集合变量名){...}
注意:
迭代变量必须在()中定义;
集合变量可以是数组或者实现了lterable接口的集合类;
eg:
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);
反射的基石——class类
java程序中的各个java类属于同一类事物,描述这类事物的java类名就是class;
对比提问:
众多的人用一个什么类表示?众多的java类用一个什么类表示?
人——>people
java类——>class
class
class->代表一类什么样的事物?
peoson p1=new person();
person p2=new person();
Date
Math
Class cls1=Date.class//字节码1
Class cls2=person.class//字节码2
p1.getClass();
Class.forName("java.lang.String");
如何得到各个字节码对应的实例对象(class类型)
类名.class,例如,System.class
对象.getClass(),例如,new Date().getClass();
Class.forName("类名"),例如,class.forName("java.util.Date");
九个预定义Class实例对象
查看class.isPrimitive的帮助
Int.class==Integer.TYPE
数组类型的class实例对象
class.isArray()
总之,只要是在源程序中出现的类型,都有各自的class实例对象,例如int[]
9.9.1 使用class 实例化一个对象
创建对象最常用的方式就是使用new运算和类的构造方法,实际上,也可以使用Class对象得到某个类的实例,步骤如下:
(1)使用class的类方法得到一个和某类(参数className指定的类)相关的class对象:
public static class forName(String className)throws classNotFoundException
上述方法返回一个和参数className指定的类相关的class对象,如果类在某个包中,className必须带有包名,例如:className="java.util.Date"
(2)使用步骤(1)中获得的class对象调用:
public Object newInstance() throws InstantitionException ,IllegaIAccessException可以得到一个ClassName类的对象。
要特别注意的是,使用class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法。
如下例子我们使用class对象得到一个Rect类以及java.util包中的Date类的对象。
反射
反射就是把java类中的各种成分映射成相应的java类。
例如,一个java类中用一个class类的对象表示,一个类中的组成部分:
成员变量,方法,构造方法,包等等信息也用一个个的java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应的实例对象来表示,它们是Field,Method,Contructor,Package等等。
constructor类
constructor类代表某个类中的一个构造方法
得到某个类所有的构造方法:
例子:constructor constructors[]=Class forName("java.lang.String*").getConstructors();
创建实例对象:
通常方式:String str=new String(new StringBuffer.class);
反射方式:String str=(String )constrcctor.newlnstance(new.StringBuffer("abc"));
- java基础学习笔记8
- java基础学习笔记8
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- JAVA 基础学习笔记
- Java基础学习笔记
- java 基础学习笔记
- Java基础学习笔记
- 学习笔记-JAVA基础
- java基础学习笔记
- java基础学习笔记
- Java学习基础笔记
- 学习笔记-Java基础
- Java基础学习笔记。
- java 学习笔记基础
- java基础学习笔记
- mySQL(关系型数据库管理系统)编辑
- Eclipse保存文件时自动格式化代码 eclipse快捷键设置与常用快捷键
- 该死该死的粉红色的司法官实打实的
- 通俗编程——白话JAVA比较器
- KeyguardManager详解
- java基础学习笔记8
- c#项目关闭窗口却不能关闭进程问题的解决
- 静态库与动态库的理解
- 关于Struts2配置问题,不能映射到对应的页面
- ICMP报文类型
- Unity中protobuf的使用方法
- 一个老工程师给年轻人的十大忠告【转帖】
- god of light(神之光)修改萤火虫数量方法
- 抖姿缆诒闷炊讯车靥汤疚汤姿靥燃