为了账号安全,请及时绑定邮箱和手机立即绑定

学习面试题Day10

标签:
Android

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)关闭连接。

原文链接:http://www.apkbus.com/blog-815579-61038.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消