基础坑

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.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值