QQ群78928780记录整理:90514技术话题-部分

1、byte与int的转换引出的问题
a lonely man(1106406748)
public class Neew{
    public static void main(String [] args){
        byte i = 67;
        byte j = 89;
        byte f = (byte)(i + j);
        System.out.println(f);
    }
}
a lonely man(1106406748)
能帮我看一下结果是多少?为什么?谢谢
赵孜泷(86078592)
这个数据溢出了啊.
赵孜泷(86078592)
byte是128
陈聚雄(457972538)
a lonely man(1106406748) 12:55:05
public class Neew{
    public static void main(String [] args){
        byte i = 67;
        byte j = 89;
        byte f = (byte)(i + j);
        System.out.println(f);
    }
}
这个是书上第四章的内容。里面有讲到。
a lonely man(1106406748)
答案是-100
张运杰(5044889)
byte 不是只有 -128到127吗
喻桃阳-howwe(123747407)
结果先用16位表示,去掉前面的8位就是结果
张运杰(5044889)
好像是最后的二进制数 截位了 
赵孜泷(86078592)
你看看组成原理的书.讲溢出那里讲的很详细.
喻桃阳-howwe(123747407)
组成原理的书也不用去看
喻桃阳-howwe(123747407)
搞明白数据类型就可以了,看第四章
赵孜泷(86078592)
我现场搞一个 67+89
67=64+2+1   =1000011
89=64+16+8+1=1011001
有个符号位 都是0
  01000011
+ 01011001
  10011100
10011011=-(4+8+16)=-28
a lonely man(1106406748)
你再发过来步骤,我还没有看懂
喻桃阳-howwe(123747407)
byte    1字节    -128到127(27 -1)   
赵博伟(java)(651944226)
注意:二进制的从左数第一位是符号位,0正1负。(67) + (86)=156,0100 0011+0101 1001=1001 1100,第一位是符号位,得到的就是一个负数-100,而非156
赵孜泷(86078592)
       0 100 0011
     + 0 101 1001
结果   1 001 1100

负100  1 110 0100
赵孜泷(86078592)
第一位是符号位.为了防止溢出可以搞双符号位或者逻辑判断
赵孜泷(86078592)
f=-100
a=156
b=-100
赵孜泷(86078592)
byte i = 67;
                byte j = 89;
                int a=j+i;
                byte f = (byte)(i + j);
                byte b= (byte) (a);
                System.out.println("f="+f);
                System.out.println("a="+a);
                System.out.println("b="+b);
赵孜泷(86078592)
B是bin D是DEC
 1001 1100B=156D
0 110 0100B=100D
1 110 0100B=-100D
说明java溢出之后的运算是显示的补码运算
喻桃阳-howwe(123747407)
其实就是对二进制取反后加1,再加上负号
*********************************************************************************
此题主要考查的是基础的知识,可能大家看完上面的对话,还是有些不清楚,我总结一下:
对于此题,当值“i+j = 156” 为int型时,156为正数对应的原码补码相同,如下:
原码:00000000 00000000 00000000 10011100
补码:00000000 00000000 00000000 10011100
此时将156转为byte型,因byte型只有8位,会截掉前24位,得到的补码为:10011100
此时用println去打印,要先将补码转成原码即:10011100(补)->11100100(原)
最高位表示的是符号位:0为正1为负
所以输出11100100(原):-100。。
**************************************************************************************


2、复选框批量删除与分页
长斌(514571146)
如何通过复选框批量删除?
王进锋(527673805)
复选框的值=ID 放到数组中 删除用循环呗
长斌(514571146)
因为数据库中id是自增的,所以没法通过chekbox中值来删除
长斌(514571146)
怎么获得它自增的字段呢?
长斌(514571146)
就是通过选中复选框,然后进行批量删除啊
长斌(514571146)
如果获得复选框值和我字段中id不一样所以不能进行删除
王进锋(527673805)
怎么会不一样呢?
刘伟(1127960838)
哦,好像很复杂的说,那么能不能通过数据库的内容来自动生成复选框,然后不久可以删除了,这样数据库的内容也就会删除了噶
刘伟(1127960838)
如果是ASP.NET的活,里面的空间可以直接绑定数据源进行数据的统一操作的
长斌(514571146)
是这样通过循环生成,复选框就从1-n,而id可能不是那么规则的,也可能少了2或者3什么的
陈聚雄(457972538)
你看看这样行不行,每一个复选框有一个id,然后执行
delete from table_name where id in (x,x,x);
长斌(514571146)
一同学说可以hidden传递过去
刘伟(1127960838)
你可以把你查询的内容放在arraylist里面,不知道可不可以,然后通过这个容器用循环把它弄出来进行自动的变成复选框,然后同步操作可不可以呢?
王进锋(527673805)
我很不明白啊,缺少几个有什么关系,再删之前不是要获得它的ID吗?ID传过去就可以了啊
长斌(514571146)
那复选框的值是按顺序来的吧?
王进锋(527673805)
不按顺序应该也可以吧
刘伟(1127960838)
呵呵,其实我都不明白他要干什么,我觉得是要删除数据库里所批对的内容,这是我对他问题的看法吧就是页面有多个复选框,然后我再页面删除,那么下次打开页面就不会有这些复选框了,我是这样理解的
长斌(514571146)
那看看我写的代码吧?
长斌(514571146)
<% DBConnection con=new DBConnection();
String sql2="select * from affairs";
ResultSet rs;
rs=con.exce(sql2);
while(rs.next()){
%>
<td width="138" height="28"><input type="checkbox" name="chbox" ></td>
<input type="hidden"  value="<%=rs.getInt("tid")%>" name="tid">
<td width="211" height="28"><%=rs.getString("title") %></td>
<td width="215" height="28"><%=rs.getString("content") %></td>
<td width="188" height="28"><%=rs.getString("author") %></td>
<td width="191" height="28"><%=rs.getString("date") %></td>
</tr>
<%} %>
陈聚雄(457972538)
如果是我,我就一个复选框一个id值,然后传到后台,执行
delete from table_name where id in (x,x,x)。。呵呵。
长斌(514571146)
那倒是个办法,可是要是很多个呢??
陈聚雄(457972538)
很多有什么区别?
长斌(514571146)
那得多少id啊?
王进锋(527673805)
多了放数组里
陈聚雄(457972538)
ID是数据库分配的。一般id也是从数据库里读出来的。
长斌(514571146)
那我这个应该这样写<input type="checkbox" name="chbox" id="<%=rs.getInt("tid")%>">?
陈聚雄(457972538)
在显示记录页面的时候,一般会做分页.
陈聚雄(457972538)
一些代码自己多测试一下。就会明白。
刘伟(1127960838)
陈兄,in (x,x,x)x代表所选的id号吧
长斌(514571146)
没想明白一点如果hidden传递过去怎么去判断是哪一个
陈聚雄(457972538)
不要用hidden.
陈聚雄(457972538)
hidden是隐藏域,平时我用于传递一些页面上不需要显示,而又必须要传的参数。高深的用法我也不太了解
刘伟(1127960838)
先判断是否被点击,然后将点击的checkbox的id放进数组里,之后迭代这个数组拼揍sql语句然后实行应该就可以了吧,应该是这样的思路吧
赵博伟(java)(651944226)
有分页的资料没呀
刘伟(1127960838)
我分页是用sql做的
陈聚雄(457972538)
分页的资料google上有。
陈聚雄(457972538)
一般不会这样点一个判断一个吧。你看看QQ邮箱里,我们删邮件的时候,是选中一个就删一个,还是等我们选好了多个,然后点删除。才删的。
长斌(514571146)
这个功能邮箱是最多用的
长斌(514571146)
可直接where id=id[]
刘伟(1127960838)
呵呵,对啊对啊,可不可以用脚本来获得所有这个对象的点击内容噶
陈聚雄(457972538)
长斌(514571146) 15:42:31
可直接where id=id[]  这个不了解是什么语法。你试试长斌(514571146)
"delete from tablename where tid='"+tid[i]+"'"
刘伟(1127960838)
如果用循环来不停的删除记录,会不会印象效率啊
喻桃阳-howwe(123747407)
可以用 tid in (1,2,3)这样一次性删除
 

以下讨论主题,在群内共享


3、tomcat上传大文件出现的问题。

       本书不少篇章已经超出了技术的范畴,上升到人生发展的高度,这也是副标题叫“人生需要引导” 的一个原因。加入QQ群78928780,每周一个学习安排,多个学习小组等着你,还可分享各种根据聊天记录整理的话题哟。
     《数据库开发这点事》下载地址http://sites.google.com/site/howwe6/db

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值