疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java常用类及反射,类加载


 

   

  Java常用类及反射,类加载

  1.系统相关类

  Java提供了System类和Runtime类来与程序运行的平台进行交互

  A.System类代表当前Java程序的运行平台

  a. System类是一个final类,该类的所有属性和方法都是静态的。可以不创建对象直接调用

  b.属性:in 、out 、err

  c.常用方法: currentTimeMillis()、exit()、getProperties()、 gc()

  B. Runtime类代表Java程序的运行时环境

  注意: 应用程序不能创建自己的Runtime实例,但是可以通过Runtime类的静态方法getRuntime()获取与之关联的Runtime对象

  a. 当前处理器数量:rt.availableProcessors()

  b. 空闲内存数:rt.freeMemory()

  c. 总内存数:rt.totalMemory()

  d. 可用最大内存数:rt.maxMemory()

  2.字符串相关类

  Java中提供了String、StringBuffer、StringBuilder等类来封装字符串,这几个类又提供了大量操作字符串对象的方法

  注意: Java中字符串的每一个字符都有一个索引值,索引值从0开始,每个字符串对象都拥有一个length()方法

  方法: length()、charAt()、indexOf()、subString()

  A. String类

  String类包含了一个不可变的字符串。一旦一个String对象被创建,包含在这个对象中的内容就是不可改变的,直至这个对象被销毁

  创建String对象的方式:a. String str = new String(“hello”); b. String str = “hello”;

  B. StringBuffer类:允许内容改变

  创建StringBuffer对象的方式:

  a. StringBuffer str = new StringBuffer(“”);str.append(“world”);

  C. StringBuilder类

  a. StringBuilder是StringBuffer类的轻量版,StringBuffer所拥有的方法StringBuilder基本都有

  b. StringBuilder是线程不安全的,StringBuffer是线程安全的

  c. 性能:StringBuilder > StringBuffer > String

  3. 日期相关类

  Java 语言中提供了一系列类共同组成了标准日期时间处理类。其中日期数据类型位于java.util包中,而日期格式化类位于java.text包中

  A. SimpleDateFormat类:继承于DateFormat

  将一个时间对象翻译成自定义格式的字符串,将一个自定义格式的字符串翻译成时间对象

  B. Calendar抽象类与GregorianCalendar类

  java.util.GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统,使用 GregorianCalendar 类来获取时间,而不是使用Date类

  注意: 由于SimpleDateFormat类只支持Date类型的对象,所以如果想对GregorianCalendar类的对象进行格式化,必须先掉哟个GregorianCalendar对象的getTime()方法,再对其进行操作

  4. 数学运算相关类

  A. Math类是一个数学工具类,在Java语言中,常用的数学常数和数学方法都在该类内部,而且无论是常数还是方法都是static类型的,可以直接通过“Math.方法名()”进行调用,方便程序员进行实际的使用

  B. Random类做为随机数生成器

  5. 常用包装类

  A. Java语言中分为基本数据类型和引用数据类型。在有些应用中要求不能使用基本数据类型,必须使用引用数据类型

  B. Java语言为我们提供了与基本数据类型相对应的包装类:

  byte ---- Byte类

  short ---- Short 类

  int ---- Integer类

  long ---- Long类

  float ---- Float类

  double---- Double类

  boolean-- Boolean类

  char ---- Character类

  C. 包装类的共同点:

  包装类中包含的值不可变,都具有:XXXValue() 方法、 valueOf() 方法、都有两个构造方法

  6. 正则表达式:是使用特定的符号来描述该组字符串的一种方法。 即:正则表达式就是一个字符串模板 ,其本身也是一个字符串,使用String的matches( )进行匹配

  7. 类的加载机制

  A. 类加载的步骤:

  a. 类加载:由类加载器完成,类的class文件读入内存后,就会创建一个java.lang.Class对象。一旦某个类被载入JVM中,同一个类就不会再次被载入

  b. 连接:把类的二进制数据合并到JRE中

  c. 初始化:JVM负责对类进行初始化,也就是对静态属性进行初始化。在Java类中,对静态属性指定初始值的方式有两种:(1)声明静态属性时指定初始值;(2)使用静态初始化块为静态属性指定初始值。

  8. 反射

  Java的反射技术是java程序的特征之一,它允许运行中的Java程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性,使用反射可以获得Java类中各个成员的名称并显示出来。简单的说,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术

  A. 反射使用步骤:

  a. 获得类的 java.lang.Class 对象

  1). 获得Class对象的方式:

  方式一: Class c = Class.forName(strg);

  方式二:Class c = JButton.class; 或者 Class c = Integer.TYPE;

  方式三:Class c = 对象名.getClass();

  b. 探究类的信息:一个类通常由三部分组成——属性、普通方法、构造方法

  1). Filed类:提供有关类或接口的属性信息

  Filed类常用方法:

  Field getField(String name) 获得指定的公共字段

  Field[] getFields() 获得类的所有公共字段

  Field getDeclaredField(String name) 获得指定的字段

  Field[] getDeclaredFields() 获得类声明的所有字段

  2). Constructor类:提供关于类的单个构造方法的信息以及对它的访问权限

  Constructor类常用方法:

  Constructor getConstructor(Class[] params) 获得使用特殊的参数类型的公共构造函数

  Constructor[] getConstructors()获得类的所有公共构造函数 Constructor getDeclaredConstructor(Class[] params)获得使用特定参数类型的构造函数(与访问级别无关)

  Constructor[] getDeclaredConstructors()获得类的所有构造函数(与访问级别无关)

  3). Method类:提供关于类或接口上单独某个方法(以及如何访问该方法)的信息

  Method类常用方法:

  Method getMethod(String name, Class[] params) 使用特定的参数类型,获得命名的公共方法

  Method[] getMethods() 获得类的所有公共方法

  Method getDeclaredMethod(String name, Class[]params)使用特定的参数类型,获得类声明的命名的方法

  Method[] getDeclaredMethods()获得类声明的所有方法

  c. 使用反射API来操作这些信息

  利用反射技术而进行的常用操作主要有三个:

  1).通过Constructor创建对象

  2).通过Method执行方法

  3).通过Field为属性赋值取值