智力题

一物品是18元,标价21元。 顾客拿100元买,老板没零钱,用那100元向街坊换了零钱, 但后来街坊发现那100元是假钞,老板还了街坊100元。问题:老板在这次损失了多少 ?

看顾客拿了老板多少钱,就是老板损失的:100-21+18=97元。
和街坊还钱只是一个概念,真钞、假钞,街坊没损失为零,你就但没去换钱,第一次老板就自己给就行了。

 

java.sql.SQLException: ResultSet is closed解决方法

之前的数据库连接和rs.next()都没问题,在关闭rs前用了三次rs.next(),跟了两次断点没发现那里有问题,而在改关闭连接等的时候用了:

pst.close();  //PreparedStatement pst
 rs.close(); //ResultSet rs
 conn.close();

问题就出在这儿,PreparedStatment关闭后就把 ResultSet也关了,所以报错 ResultSet is closed。。

要注意pst和rs的关闭顺序。。改为下面就ok:

 rs.close();

pst.close();

 conn.close();

一个公司有180名员工,100人做开发,80人做软件,20人即做开发又做软件,问:有多少人不做开发和软件?

只做开发100-20=80人
只做软件80-20=60
两样都做20
一共80+60+20=160
什么都不做180-160=20

String a=new String("b"+"c")会创建几个对象?

String a=new String("b","c")会创建几个对象? 
String a=new String("b"+"c")又会创建几个?为什么?

1.String a=new String("b"+"c");  
b一个     c一个      b+c一个     a一个      总共四个
1、Java中New出的对象则始终被JVM存放在堆中,创建的字串常量则始终被JVM存放在数据段区常量池中。

2、String是不可变的 
String a=new String("b"+"c");

字符串常量 "b" 被JVM存放在数据段区常量池中 
字符串常量 "c" 被JVM存放在数据段区常量池中 
由于String不可变性,"b"+"c" 又生成了一个字符串 被JVM存放在数据段区常量池中 
new String("b"+"c")对象被JVM存放在堆中

总共四个。

string的不可变性

String a = new String("Hello");

String b = new String("world");

String c = a + b;//c = Helloworld

首先在栈中有个"a"变量指向堆中的"Hello"对象...
栈中"b"变量指向堆中的"world"对象
当执行到c = a + b;
系统重新在堆中new一个更大的数组出来,然后将"Hello"和"world"都复制进去,然后栈中的"c"指向这个新new出来的数组...
所谓的不可变是指:它没有在原数组“Hello”上进行修改,而是新建了个更大数组进行扩展,也就是说,这时候堆里还是有“Hello”这个对象数组存在的,只不过这个时候"s"变量不在指向"Hello"这个数组了,而是指向了新new出来的数组,这就是和StringBuffered的区别,后者是在原数组上进行修改,改变了原数组的值,StringBuffered不是通过新new一个数组去复制,而是在原数组基础上进行扩展...再让变量指向原数组....

一张表名为area的,有四个字段,分别是id(外键)、name、phone、city,现在要查询一个超过5个客户量的地区的sql:

select * from area group by city having  COUNT(id)>5; (这道题是考察Having,不过我认为没有任何实用价值,实际开发中,都不会允许使用having这个关键字,因为,他会影响性能,如果连这点都不知道的面试官,才是菜鸟中的菜鸟)

 
原文地址:https://www.cnblogs.com/huangwentian/p/7016876.html