java代码详细分析 java代码分析开源
java代码解读
第一个if是判断searchkey是不是空的,如果不是空的,就追加到name字段作为查询条件,like模糊查询
成都创新互联公司长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为双辽企业提供专业的网站建设、成都网站制作,双辽网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
接着第二个if判断如果status的值不为空,就追加到status作为条件
如果status为空,走else分支,从userContext中获取到employee对象,接着判断,如果它的角色不是manager的话
把这个对象的id拿出来,作为seller.Id的条件进行查询
哪位大哥给我分析一下下面这段Java代码,越详细越好!
Scanner sc = new Scanner(System.in);//输入的数字
int cases;//声明一个变量cases
cases = sc.nextInt();//把输入的数字赋值到变量cases
while ((cases--) != 0) {//判断cases的值是否等于0,如果不是就进入while循环
BigInteger m = new BigInteger(sc.next());//输入一个数转成BigIteger类型
BigInteger n = new BigInteger(sc.next());//输入一个数转成BigIteger类型
n = n.divide(m);//两个数相除,n除以m
/*返回此 BigInteger 的最小的二进制补码表示形式的位数,不包括 符号位。
* 对于正 BigInteger,这等于常规二进制表示形式中的位数。
* (计算 (ceil(log2(this 0 ? -this : this+1)))。)*/
int l = n.bitLength() - 1;
if (l % 6 == 0)
System.out.println(0);
else
System.out.println((1 (l % 6)));//(1%6)得到的二进制的值向左移一位
}
求这段JAVA代码详细分析说明。
tr
td colspan="4" div class="mytitle"您当前的拍卖物品:/div/td
/tr
:表格的第一行,占4列,里面的div控制样式.
tr height="30"
tdb物品名/b/td
tdb物品种类/b/td
tdb赢取价格/b/td
tdb物品备注/b/td
/tr
第二行,也就是表头b是一个控制几号标题的标签
s:iterator id="item" value="items" status="st"
tr height="24" s:if test="#st.odd"
style="background-color:#dddddd"/s:if
s:elsestyle="background-color:#eeeeee"/s:else
tds:property value="name"//td
tds:property value="kind"//td
tds:property value="maxPrice"//td
tds:property value="remark"//td
/tr
/s:iterator
用s:iterator遍历查询出来的结果
h3添加新物品/h3
这个不用解释了吧
s:textfield name="item.itemName" label="物品名"/
s:textfield name="item.itemDesc" label="物品描述"/
s:textfield name="item.itemRemark" label="物品备注"/
s:textfield name="item.initPrice" label="起拍价格"/
s:select name="avail" list="#{'1':'一天','2':'二天','3':'三天','4':'四天',
'5':'五天','6':'一个星期','7':'一个月','8':'一年'}"
label="有效时间"/
s:select list="kinds" label="物品种类" name="kindId"
listKey="id"
listValue="kindName"/
s:textfield name="vercode" label="验证码"/
这些都是s:标签设置值得,可以直接传到action,在action定义一个跟这里面name相同的名字的属性,然后给他set方法就行了
s:submit value="添加"/
提交表单
:img name="d" src="auth.jpg"
验证码的图片
java代码详细分析
//求采纳
//一个随机数生成工具
Random rand = new Random();
// rand.nextInt() 用工具生成一个随机的整数
//rand.nextInt() % a.length 对上边数组长度取余 应该是对 52 取余
//任何整数对52取余结果只能是 -51 ~ 51 之间的一个整数
int index = rand.nextInt() % a.length;
//如果得到的这个整数小于0
if(index 0){
//用0 减去这个数即变成其相反数
index = 0 - index;
}
//从数组a中取对应位置的字符,比如index=2 a[index] 就是 c
return a[index];
java代码解析
一楼的说的够全面了,不过稍有误解.
再来表示抱歉,我对编程语言中的中文名词非常不了解,所以如果以下的回复对你的阅读或者理解造成困难,请见谅.
1.首先,要明白这个问题的答案,需要了解call (pass) by value 和 call (pass) by reference 的区别.简单来说:
call by value通常是复制这个parameter的值去另外一块内存里,然后传给function, 所以在method/function里边对这个变量的所有变更,实际上都是对复制过来的镜像进行操作,不会对原本的variable有任何影响.
call by reference是将parameter的reference传给function,简单点理解就是直接把variable传给function.所以说这个variable的值是可以被function改变的.这个用法在c/c++中非常常见,用法是variable_name.
2.再来,在Java里边,你可以很简单的理解为: Java中只有call by value, 也就是说,所以所有传给function的parameter本身都不会被改变. (这是最简单直白的理解,当然也有另一种常从sun的人那边听到的说法:Java是call by value + call by reference by value)
3.那么现在的问题就是为什么第二个结果是2了. 首先说一下sun官方的解释: 对于reference type在作为parameter/argument的时候,也是call by value, 但是在你拥有足够权限时(比方说那个变量是public的, 不是final的等等各种符合的情况),可以修改这个object中fields的值(也就是属于这个object(严谨点讲是an instance of the object) 内部的变量, 在你的例子中, ko 里边的 a 就是一个field, 所以update(ko)会使ko.a变成2).
4.如果你是一个有过c/c++学习经验的人或者你以上的解释很难理解,以下这种说法或许更适合你 (当然了,这只是大多包括我在内有c经验的人的一种理解方式)
这里可以引入一个新的概念,pointer. 这是一种比较特殊的变量,它内部所储存的东西,其实只是另外一个变量的内存地址. 如果对内存没有概念,你可以把它简单理解为是风筝的线轴,虽然看它本身看不出什么端倪,但是顺着摸过去总会找到风筝,看到它是什么样子. 以pointer方式理解Java的人,通常会说: Type variable = new Type(); 这个过程中,最后生成的这个variable其实就是一个pointer,而不是instance本身.
在Java中, 有c/c++经验的人通常认为Java是call by value.同时,当一个变量用在储存reference type的时候,实际上储存的是它的pointer,这也一样可以解释为什么ko.a会有2这个结果,因为虽然pointer被传到function里边时,本身是call by value,无法被改变.但这并不影响function本身对这个pointer指向的object的内容做任何改变. 当然,再次声明,这只是一种帮助有c/c++经验的人理解的方法. Sun本身严正声明Java里边没有pointer这个东西的存在.
5. 再来解释一下为什么说楼上所说的(或者说楼上引用的)理解略有偏差.
引用"我们上面刚学习了JAVA的数据类型,则有:值类型就是按值传递的,而引用类型是按引用传递的" 这句话很明显的有两点错误. 第一点,如果我上面所说的,Java是没有call by reference的.
第二点,暂且假设Java里边是有call by reference的, 这句话依然不成立.
Java中的变量有两种类型: primitive types 和 reference type.
primitive type包括byte, short, int, long, char, boolean, float和double.
而这8种之外的所有的,都是reference type.
下面是一段对你的贴上来的code的一点延伸,希望可以帮助你更好的理解Java中的argument / parameter到底是如何运作的.
public class Test {
public static void main(String[] args) {
int a = 1;
Koo koo = new Koo();
Object o = new Integer(1);
Koo newKoo = new Koo();
update(a);
update(koo);
update(o);
update(newKoo);
newUpdate(newKoo);
System.out.println(a);
System.out.println(koo.a);
System.out.println(o);
System.out.println(newKoo.a);
}
static void update(int a) {
a++;
}
static void update(Koo koo) {
koo.a++;
}
static void update(Object o) {
o = (int) (Integer.parseInt(o.toString()) + 1);
}
static void newUpdate(Koo koo) {
koo = new Koo();
}
}
class Koo {
int a = 1;
}
/*
o = (int) (Integer.parseInt(o.toString()) + 1); 这一行中的(int)纯粹是多余的,是否有这个casting对code本身没有任何影响. 如果你高兴也可以用
o = new Integer(Integer.parseInt(o.toString()) + 1);
或者干脆
o = Integer.parseInt(o.toString()) + 1;
*/
以上这些code运行之后会得到1 2 1 2的结果. 后面两个结果可以很好的说明, 即使对objects (reference type variables) 来看, Java所应用的也并不是call by reference. 否则的话,以上code运行结果应该是1 2 2 1
希望你可以真正理解这个新的例子中,产生1212这个结果的原因,从而对Java中的arguments有一个系统全面的认识.
图片是相关资料的链接,知道里貌似不能加网址
文章题目:java代码详细分析 java代码分析开源
标题来源:http://ybzwz.com/article/hpcpdg.html