3.14周测整理

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
Java虚拟机是执行字节码文件(.class)的虚拟机进程。java源程序(.java)被编译器编译成字节码文件(.class)。然后字节码文件,将由java虚拟机,解释成机器码(不同平台的机器码不同)。利用机器码操作硬件和操作系统。
因为不同的平台装有不同的JVM,它们能够将相同的.class文件,解释成不同平台所需要的机器码。正是因为有JVM的存在,java被称为平台无关的编程语言。

2.JAVA支持的数据类型有哪些?什么是自动拆装箱?
1)8种基本数据类型:byte short char boolean int longfloat double
2)引用类型,包括类、接口、数组
自动拆装箱,是指基本数据类型和引用数据类型之间的自动转换,如Integer 和 int 可以自动转换; Float和float可以自动转换
3.简述方法中的参数传递的原理?(提示:值传递和引用传递)

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

4.简述抽象类和接口的区别?
(1) 接口只能包含抽象方法,抽象类可以包含普通方法。
(2) 接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
(3) 接口不包含构造方法,抽象类里可以包含构造方法。
(4) 抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,被继承类扩充
(5) 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。
(6) 如果许多类实现了某个接口,那么每个都要用代码实现那些方法
(7) 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法可以由各个子类去实现。

5。定义一个完整的Student类,包含字段code,name,age,类成员包括:成员变量,getter,setter,多字段的构造器,重写toString方法。

class   Student {

 //私有成员变量。

 private String name ;

 private int  age;

 private int  code;

 //提供 name,age, score 的 set,get方法。

 public String getName() {

  return name;

 }

 public void setName(String name) {

  this.name = name;

 }

 public int getAge() {

  return age;

 }

 public void setAge(int age) {

  this.age = age;

 }

 public int getCode() {

  return score;

 }

 public void setCode(int code) {

  this.score = score;

 }



 //构造函数。

 public Student(String name,  int age,   int score){

  this.age = age;

  this.name = name ;

  this.score = score;

  System.out.println("姓名:"+getName()+","+"年龄:"+ getAge() + ","+"分数:"+getScore());

 }

@Override

         public String toString() {

                  return "Student[code=" + code + ", name=" + name + ", age=" + age +"]";

         }

}

6.Java集合类框架的基本接口有哪些?并阐述他们的基本特征。
Java集合类里面最基本的接口有:
Collection:代表一组对象,每一个对象都是它的子元素。
Set:不包含重复元素,。
List:有顺序的集合,并且可以包含重复元素,其中含有arraylist和linkedlist。
Map:可以把键(key)映射到值(value)的对象,键不能重复。

7.写一个mian方法,使用全字段的构造器创建5个Student对象,并放入到一个集合中(list)中,使用迭代器遍历List,并删除一个符合条件code值的对象。

public class Client {

         public static voidmain(String[] args) {

                  Student pxj =new Student("奥特曼, "001");

                  Student hjn =new Student("葫芦娃", "002");

                  Student zsf =new Student("猪八戒", "004");

                  Student zwj =new Student("刘备", "005");



                  Clazz j103 =new Clazz();

                  j96.setName("Java103班");

                  j96.setCode("java103");



                  // Step1:学生类型的集合定义

                  List<Student>stus = new ArrayList<Student>();



                  // Step2: 添加数据

                  stus.add(pxj);

                  stus.add(hjn);

                  stus.add(zsf);

                  stus.add(zwj);



                  // Step3: 追加一个新的学生

                  Student ljn =new Student("陆佳楠", "003");

                  stus.add(ljn);

                  // Step4: 设置班级学生属性

                  J103.setStudents(stus);

                  // 使用迭代器遍历
                  // Step1:创建迭代器

                  Iterator<Student>it = stus.iterator();

                  while(it.hasNext()) {

                          Studentstu = it.next();

                          System.out.println(stu);

                          if(stu.getName().equals("黄佳男")) {

                                   it.remove();

                          }

                  }

                  System.out.println("处理完的结果======================");

                  it =stus.iterator();

                  while(it.hasNext()) {

                          Studentstu = it.next();

                          System.out.println(stu);

                  }

         }

}

8.在异常处理时,finally代码块的重要性是什么?(提示:一般在finally块中定义哪些内容)

无论是否抛出异常,finally代码块总是会被执行。就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。最后要说的是,finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。

9.使用JDBC书写一段查询student表的代码,从控制台格式化打印输出,注意控制台打印的格式。

try {

        // 1. 选择数据库:加载数据库驱动

        Class.forName("com.mysql.jdbc.Driver");

        // 2. 连接数据库

        conn = DriverManager.getConnection(url,user, password);

        // 3. 创建数据库查询

        ps =conn.prepareStatement("SELECT * FROM student WHERE name = ?;");

        ps.setString(1, name);

        // 4. 获取查询结果

        int i =ps.executeUpdate();

        System.out.println("一共执行了" +i + "条");

} catch(ClassNotFoundException e) {

        System.out.println("数据库驱动没有找到");

        e.printStackTrace();

} catch (SQLException e) {

        e.printStackTrace();

} catch (Exception e) {

        e.printStackTrace();

} finally {

        // 5. 关闭查询和连接

        try {

                 if (null != ps){

                          ps.close();

                 }

                 if (null !=conn) {

                          conn.close();

                 }

        } catch (SQLExceptione) {

                 e.printStackTrace();

        }

}

10.什么是泛型,为什么要使用泛型。
泛型:本质是参数化类型。
为什么要使用?创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制进行转换。创建集合的时候,我们就指定集合类型,避免这个过程。

11.什么是servlet解释一下servlet的生命周期
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和
HTTP 服务器上的数据库或应用程序之间的中间层。
12doGet()方法和doPsot()方法有什么区别?
doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
doPOST:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。
13.浏览器和Servlet通信使用的是什么协议
HTTP协议,即:超文本传输协议

14.sendRedirect()和forward()方法有什么区别?
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。对应到代码里,分别是RequestDispatcher类的forward()方法和HttpServletRequest类的sendRedirect()方法。
  对于间接方式,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。
  对于直接方式,客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。

15.什么是JSP?JSP有什么优点?
JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
JSP的优点:
·对于用户界面的更新,其实就是由 WebServer进行的,所以给人的感觉更新很快。
·所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。
·客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。

16.MVC是什么意思?MVC的优点有哪些?
MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业
务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
1:耦合性低
2:重用性高
3:部署快
4:可维护性高
5:有利软件工程化管理

17.JSP中两种include区别
1.两种用法
<@inlcude file =”header.jsp”/>

此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动地附加到当前文件中,所以在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。
<jsp:include page=”/user/test”flush=”true”/>

此时引入执行页面或生成的应答文本.jsp:include标签导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。其中flush 表示在读入包含内容之前是否清空任何现有的缓冲区。
18.常用的隐式对象有哪些
request response out session application pageContext page config exception 隐式对象就是不需要我们new的对象,直接的我们就可以在页面使用的对象,
19.request常见的方法有哪些
request.getParameter(String key)
request.setAttribute(String key, Object value)
request.setCharacterEncoding(“UTF-8”)
20.页面间传递值的方式是什么

  1. URL 链接后追加参数
  2. Form
  3. 设置 Cookie
  4. 设置 Session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值