1、反射的原理是什么?
反射是为了能够动态地加载一个类,动态的调用一个方法,动态地访问一个属性等动态要求而设计的。它的出发点就在于JVM会为每个
类创建一个java.lang.Class类的实例,通过该对象可以获取这个类的信息,然后通过使用java.lang.reflect包下的API以达到各种动态需求。
2、Class类的含义和作用是什么?
2-1、一个普通的Java类,会在以下几种情况被加载到JVM中:
(1)需要使用该类创建对象;
Student stu=new Student(); //创建学生对象
(2)访问该类的静态成员;
System.out.println(Student.count); //访问静态的count成员变量
(3)使用Class类静态forName()方法,动态地加载一个指定类名的类,如果类未找到,则抛出ClassNotFoundException异常;
class.forName("com.test.Student"); //动态加载Student类
2-2、要得到一个类的Class对象,可以通过以下几种途径:
(1)Class的forName()方法的返回值就是Class类型,也就是动态导入类的Class对象的引用。forName()方法的完整定义如下:
public static Class<?> forName(String className) throws ClassNotFoundException
(2)每个类都会有一个名称为Class的静态属性,通过它也是可以获取到Class对象的,示例代码如下:
Class<Student> clazz=Student.class; //访问Student类的class属性
(3)Object类中有一个名为getClass的成员方法,它返回的是对象的运行时类的Class对象。因为Object类是所有类的父类,所以,
所有的对象都可以使用该方法得到它运行时类的Class对象。示例代码如下:
Student stu=new Student(); //创建一个Student对象
Class<Student> clazz=stu.getClass(); //调用getName方法
2-3、每一个Class类的对象代表了一种被加载进入JVM的类,它代表了该类的一种信息映射。通过以下3种途径获取到Class对象;
(1)Class类的forName()方法的返回值;
(2)访问所有类都会拥有的静态的class属性;
(3)调用所有对象都会有的getClass()方法。
在Class类中,定义许多关系类信息的方法。例如,getName()、getMethod、getConstructor和newInstance()等可以用于反射开发,
还有isInstance()和isInterface()等一些关于类的功能方法。
3、如何操作类的成员变量(Field)?
Field提供有关类或接口的单个静态或实例字段的信息,它通过Class类的getDeclaredField()或getDeclareFields()方法获取到,再
置于java.lang.reflect包下。Field的方法主要分为两大类,即getXXX和setXXX,它们都需要提供相应的实例对象,setXXX还需要提供需要设
置的值。
4、如何操作类的方法(Method)?
Method提供关于类或接口中的某个方法(以及如何访问该方法)的信息,包括了静态方法和成员方法(包括抽象方法在内)。它通过
Class类的getMethod()或getMethod()方法获取到,该类在java.lang.reflect包下。Method类的最常用的inoke(),正是通过它来完成完成方法
被动态调用的目的。
5、如何利用反射实例化一个类?
根据调用构造方法的不同,用反射机制来实例化一个类,可以有两种途径。如果使用无参数的构造方法,则直接选择使用Class类的
newInstance()方法即可;若需要使用特定的构造方法来创建对象,则需要先获取Constructor实例,再用newInstance()方法创建对象。
6、如何利用反射机制来访问一个类的私有成员?
在使用反射机制访问私有成员的时候,它们的可访问性是为false的。需要调用setAccessible(true)方法,把原本不可访问的私有成
员
变为可以访问以后,才能进行成功的访问或调用。
7、如何利用反射来覆盖数据对象的toString()方法?
对于数据类型的类的toString()方法,覆盖它的基本思路,主要有以下几点:
(1)通过getDeclaredField()方法得到所有的Field对象;
(2)把上一步得到的Field对象数组进行遍历;
(3)每次循环加上字段名和字段值;
(4)返回循环叠加以后的字符串结果;
8、什么是SQL?
SQL是结构化的查询语句(Structured Query Language)的缩写,是一种专门用于和数据库通信的计算机语言,得到了大多数数据库
的支持,它具有一下一些特点:
(1)可以跨各种数据库使用;
(2)简单易学;
(3)功能强大。
9、如何使用SQL检索数据?
SQL提供了Select语句来检索数据,它的基本语法如下所示:
Select <列名>
from <表名/视图>
where <筛选条件>
order by <列名> <ASC/DESC>
Select后面跟的是需要选出的列名;from后面指明了查询的对象,一般为表格;where后面罗列了筛选条件;order by则表示排序规则
。
10、如何使用SQL更改数据?
SQL主要提供了insert、update和delete3种语句来更改数据库表格的数据,它们的语法格式如下:
(1)insert into <表名> (列名) values (值列表)
(2)update <表名> set (键值对) where (条件)
(3)delete from <表名> where (条件)
11、JDBC的工作原理是什么?
JDBC采用了一种驱动模式的设计,提供了两套的接口:开发者使用的API和数据哭厂商使用的SPI,充分的体现了面向接口编程的好处。程序员无需关心具体数据库的连接和调用,只需要使用JDK中提供的标准API编程即可,而具体的实现有特定的数据库生产商提供,也就是JDBC驱动。
12、请简述JDBC操作数据库的编程步骤
JDBC编程的步骤主要有以下几步:
(1)注册驱动程序;
(2)获取数据库连接;
(3)创建会话;
(4)执行SQL语句;
(5)处理结果集;
(6)关闭连接。
共同学习,写下你的评论
评论加载中...
作者其他优质文章