zheif you can learn,why care who tell you,how to tell you?
1.控制表状态进入后先更新为process,最后更新为SUCCESS,为了防止其他sql更新其他字段导致版本号加1,最后的SUCCESS状态就不做乐观锁控制了
2.遍历日期,第0天跳过,每天指定商户跳过,不影响其他商户和其他天,
注意while 和 for 的双层循环i==0跳过的时候需要日期加1,否则死循环了大哥
int i=0;
int k=5;
while(i<k) {
System.out.println("日期"+i);
if(i==0) {
i++;
continue;
}
for (String ppMerchantNo : merchantList) {
System.out.println(ppMerchantNo);
if(ppMerchantNo.contains("1111111")) {
continue;
}
String [] nameStrings={"TRADE","REFUND"};
for (String string : nameStrings) {
if(string.equals("TRADE")) {
System.out.println("你成功了!");
continue;
}
System.out.println("继续生成");
}
}
i++;
}
3.注意调用另外的方法注意要用return还是continue
int i=0;
int k=5;
while(i<k) {
System.out.println(i);
test();
i++;
}
System.out.println("end");
public static void test() {
String [] nameStrings={"TRADE","REFUND"};
for (String string : nameStrings) {
if(string.equals("TRADE")) {
System.out.println("你成功了!");
return;
}
System.out.println("继续生成");
}
4.break你知道要加,那么不加的时候输入2的时候结果是几呢?
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
case 4:
result = result + i * 3;
}
System.out.println(result);
return result;
}
没有加break的时候,2和3和4都会执行,结果是16
5.jdk1.8用拉姆达表达式的时候不能用continue和break,可以使用return,他的意思是跳出此次循环?
//这个可以简化上面的写法,但是这个list不能操作元素,只能遍历
List<String> list = Arrays.asList("1","2","3","4");
//拉姆达表达式内不能使用break contine等,可以用return,他的return相当于continue,跳过这次循环
list.forEach((s)->{
if(s.equals("3")) {
return;
}
System.out.println(s);
});
System.out.println("ok");
其他的基础坑在有道云笔记,懒得复制了
http://note.youdao.com/noteshare?id=39a200a3ee1cc7ce965eb8d8ccac7624
重点说下tryfinally的东西
public static int TestTryFinally2() {
int result = 10;
try {
int i=0/0;
return result;
} catch (Exception e) {
System.out.println("catch");
result = 20;
return result;
}finally {
System.out.println("finally");
result =30;
return result;
}
}
结果是 catch finally 30,很常见,最终的返回值会被finally的结果覆盖
public static int TestTryFinally4() {
int result = 10;
try {
int i=0/0;
} catch (Exception e) {
System.out.println("catch");
result = 20;
return result;
}finally {
System.out.println("finally");
result =30;
}
System.out.println(result+"----");
return result;
}
结果是catch finally 20,最后的一句话不会被执行,finally是在return后面的表达式运算后执行的(执行到catch return的时候并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,对基础类型变量做什么操作,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的,catch 的时候已经决定了缓存的值是20,又是基础类型,因此直接返回20
public static A TestTryFinally5() {
A a = new A("cp");
try {
int i=0/0;
} catch (Exception e) {
a.setName("cp1");
return a;
}finally {
a.setName("cp2");
}
System.out.println("----");
return a;
}
这里的执行结果,是cp2,finally是在return后面的表达式运算后执行的(执行到catch return的时候并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,对基础类型变量做什么操作,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的,但是这里是引用类型,对变量的操作会影响变量本身的内容,因此返回cp2.