
而且这里Integer对象也有特殊性。其实现上可能类似
class Integer{
final int value//一旦赋值,就不能改变。
}
这就出现:调用时传的地址值不能改变外层+对象本身又不能改变。导致这个值没法改变
解决方案很多
1、java风格就是,单个值用返回值。return i外面再i=foo()赋值;多个值用数组或对象。
2、传递自己的封装类。class MutableInteger{ int value}
3、传递专用AtomicInteger原子整型对象
public static void main(String[] 参数) {
AtomicInteger i=new AtomicInteger(40)
i.intValue()
System.out.println(i)
}
public static void change(AtomicInteger i) {
i.set(55)
}
也可以实现传递后改值 ,
推荐方案1,尽量避免
不幸的是,不同数据库产品所支持的 SQL 类型之间有很大的不同。即使不同的数据库以相同的语义支持 SQL 类型,它们也可能用不同的名称。例如,绝大多数的主流数据库都支持一种表示大型二进制值的 SQL 类型,但 Oracle 把这种类型叫做 LONG RAW,Sybase 把它叫做 IMAGE,Informix 却把它叫做 BYTE,而 DB2 又把它叫做 LONG VARCHAR FOR BIT DATA。幸运的是,JDBC 程序员通常并不需要自己去关心目标数据库所用的实际 SQL 类型的名称。大多数时候,JDBC 程序员将根据一些现有的数据库表来进行编程。他们无须关心用于创建这些表的确切 SQL 类型的名称。
JDBC 在 java.sql.Types 类中定义了一系列的常规 SQL 类型标识符。这些类型可用于表示那些最为常用的 SQL 类型。在用 JDBC API 编程时,程序员通常可以使用这些 JDBC 类型来引用一般的 SQL 类型,而无须关心目标数据库所用的确切 SQL 类型的名称。在下一节中将对这些 JDBC 类型进行仔细说明。
程序员用到 SQL 类型名称的主要地方是在用 SQL 的 CREATE TABLE 语句创建新的数据库表时。这种情况下,程序员必须注意应该使用目标数据库所支持的 SQL 类型名称。如果需要知道各种 SQL 类型在某个特定的数据库中的行为的确切定义,我们建议查阅一下数据库文档。
如果想要编写一种可在各种数据库上创建表的可移植 JDBC 程序,用户主要有两个选择。第一个选择是:限制自己只使用那些被广为接受的 SQL 类型名称(例如 INTEGER、NUMERIC 或VARCHAR)。这些类型有可能能适应所有的数据库。第二个选择是:用 java.sql.DatabaseMetaData.getTypeInfo 方法来找出给定的数据库实际上支持哪些 SQL 类型,然后选择与给定 JDBC 类型相匹配的特定于数据库的 SQL 类型名。
JDBC 定义了一个从 JDBC 数据库类型到 Java 类型的标准映射。例如,JDBC 的 INTEGER 类型通常映射为 Java 的 int 类型。这可支持简单的接口,将 JDBC 值读写为简单的 Java 类型。
Java 类型不必与 JDBC 类型完全形同;它们只须能够用足够的类型信息来代表 JDBC 类型,从而能正确地存储和取出参数和从 SQL 语句恢复结果就可以了。例如,Java String 对象可能并不能精确地与任何 JDBC CHAR 类型匹配,但它却可给出足够的类型信息来成功地表示 CHAR、 VARCHAR 或 LONGVARCHAR 类型。
1.第2行,就是IntegerDemo类的默认的构造方法,你要实例化该类对象的时候需要用到
2.
第4行,new
Integer("110")与new
Integer(110)都是Integer类的有参构造方法,也就是说你得传进一个是可以转化成数字的值进去,不然就会报错;若传的是数字,输出的当然也是这个数,所以它们的输出结果是一样的
3.
第7行,intValue()是Integer类的一个方法,意思是将其值转成int类型的值,因为不用intValue()来输出,数组本身也是可以直接输出值的,值都是一样的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)