难点 statement 枚举类的应用

1.下面哪个不是标准Statement类?

正确答案: D   你的答案: A (错误)

Statement
PreparedStatement
CallableStatement
BatchedStatement

Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement
继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单
SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL
语句;CallableStatement 对象用于执行对数据库已存在的存储过程的调用。

Statement是sql语句的载体

Statement是标准的Statement类,通过字符串对sql语句进行拼接,但是它存在sql注入的危险

PreparedStatement对sql语句进行了预编译,可以防止SQL注入

CallableStatement用来调用存储过程的

BatchedStatement用于批量操作数据库,BatchedStatement不是标准的Statement类

2.what is the result of the following code?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

enumAccountType

{

    SAVING,
FIXED, CURRENT;

    privateAccountType()

    {

   
    
System.out.println(“It
is a account type”);

    }

}

classEnumOne

{

    publicstatic

void

main(String[]args)

    {

   
    
System.out.println(AccountType.FIXED);

    }

}

 

    

正确答案: C   你的答案: B (错误)

Compiles fine and output is prints”It is a account type”once followed by”FIXED”
Compiles fine and output is prints”It is a account type”twice followed by”FIXED”
Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”
Compiles fine and output is prints”It is a account type”four times followed by”FIXED”
Compilation fails

枚举类在后台实现时,实际上是转化为一个继承了java.lang.Enum类的实体类,原先的枚举类型变成对应的实体类型,

上例中AccountType变成了个class AccountType,并且会生成一个新的构造函数,若原来有构造函数,则在此基础上

添加两个参数,生成新的构造函数,如上例子中:


1

privateAccountType(){
System.out.println(“It is a account type”); }

会变成:


1

2

privateAccountType(String
s, 
inti){

    super(s,i);
System.out.println(“It is a account type”); }

而在这个类中,会添加若干字段来代表具体的枚举类型:


1

2

3

publicstatic

final

AccountType SAVING;

publicstatic

final

AccountType FIXED;

publicstatic

final

AccountType CURRENT;

而且还会添加一段static代码段:


1

2

3

4

5

6

static{

    SAVING
newAccountType("SAVING"0);

    ... 
CURRENT = 
newAccountType("CURRENT"0);

   $VALUES
newAccountType[]{

         SAVING,
FIXED, CURRENT

    }
}

以此来初始化枚举中的每个具体类型。(并将所有具体类型放到一个$VALUE数组中,以便用序号访问具体类型)

在初始化过程中new AccountType构造函数被调用了三次,所以Enum中定义的构造函数中的打印代码被执行了3遍。

怎么通过执行AccountType.FIXED这句到调用静态代码块的?这个其实是与java类中静态代码的初始化有关:类中的静态类型,

仅在程序中第一次被使用时才会被初始化,且只初始化一次。初始化过程中还会自动调用类中用static{ }括起来的代码。

因此static final的字段的初始化过程才可以写在static{ }中。

时间: 2024-08-02 15:13:18

难点 statement 枚举类的应用的相关文章

C# Idioms: Enum还是Enum Class(枚举类)

C# Idioms:Enum还是Enum Class(枚举类) marshine (原文排版格式:http://www.marshine.com) reversion:2004/5/28修改说明:感谢Ninputer提到的CLS兼容问题,同时修改了原来版本没有提及的Equals改写,以及修改"=="重载的不完善代码,和增加enum struct内容 reversion:2004/6/4 增加kirc提到的Enum的Flags特性,因为文本超长,新的版本可以在http://www.mar

Java枚举类用法实例

  本文实例讲述了Java枚举类用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 package com.school.stereotype; /** * 活动枚举类型 * @

Linq专题之提高编码效率—— 第三篇 你需要知道的枚举类

众所周知,如果一个类可以被枚举,那么这个类必须要实现IEnumerable接口,而恰恰我们所有的linq都是一个继承自IEnumerable接口的匿名类, 那么问题就来了,IEnumerable使了何等神通让这些集合类型可以被自由的枚举??? 一: 探索IEnumerable 首先我们看看此接口都定义了些什么东西,如ILSpy所示: 从这个接口中,好像也仅仅有一个IEnumerator接口类型的方法之外,并没有可以挖掘的东西,这时候大家就应该好奇了,foreach既然可以枚举Collection

源代码-JAVA枚举类定义中泛型的使用

问题描述 JAVA枚举类定义中泛型的使用 在枚举类的源代码中,有这样的定义:Enum > 在网上看了很多人的文章都没有看懂,请能够解释清楚的大神帮忙说说.E extends Enum到底有什么用? 为什么要这么写? 解决方案 E这个类继承了Enum,也就是E也是个枚举类型

Java枚举类enum介绍_java

枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enum.和其它普通类一样,enum同样可以有成员变量.方法.构造器,也可以实现一个或多个接口,区别是: 1.如果有构造器,必须用private修饰. 2.枚举类不能派生子类. 3.枚举类所有的实例必须在第一行显示定义.系统会自动给这些实例加上public static final修饰,无须程序员显示定义

Struts中巧用java枚举类生成select标签的下拉列表

    select下拉选项的value值我们通常会使用一些数字或者英文缩写便于存入数据库中,例如: <option value="1">男</option><option value="0">女</option>这样在数据库里存为1的记录代表是男,而0代表是女,在java类文件里,我们一般会定义为常量放在一个专门的类文件中:     public static String            SEX_MAN   

Java枚举类用法实例_java

本文实例讲述了Java枚举类用法.分享给大家供大家参考.具体如下: package com.school.stereotype; /** * 活动枚举类型 * @author QiXuan.Chen */ public enum EventStatus { /** * 未发布. */ DRAFT("DRAFT", "未发布"), /** * 已发布. */ PUBLISHED("PUBLISHED", "已发布"); /**

枚举类的简单操作

直接代码吧 package com.jlife.sys.basepojo; /** * Created by chenjianan on 2017/3/1-19:16. * * email 122741482@qq.com * * Describe:数据权限范围 * * DATA_SCOPE_ALL("所有数据"), * DATA_SCOPE_COMPANY_AND_CHILD("所在公司及以下数据"), * DATA_SCOPE_COMPANY("所在公

Java枚举类&amp;quot;全方位&amp;quot;

作为一种长度固定,数据未定的一种存储数据集的数据类型,枚举类有如下方法可供参考. 普通类型的枚举类的创建 protected enum ColorEnum{ red,orange,yellow,green,blue,purple } 是的,就是这样,声明就可以了. 既然有普通类型,当然也会有不普通类型的了,接下来的是可以在枚举类中添加属性的枚举,如下 public enum SeasonEnum{ spring,summer,fall,winter; private final static S