03 December 2013

最近这两篇“从零学Java”并没有涉及特别难的问题,都是些需要特殊注意的地方,但是写起来也没有那么容易。今天动手研究了一下Android,折腾来去算是开了个头,下图是用我的kindle fire做的测试,当然还有那卡的要死的模拟器。这个例子是根据《Google Android开发入门指南》一步步得来,其中也遇到了很多问题,好在都解决了。


控制流也是各种语言都会涉及到的,想当年if-else还刚从lisp流行开来,现在已经有超过百种的编程语言,不得不说时间这把杀猪刀真“狠”。今天也说说Java中那些比较特别的用法。

Foreach


举个例子,很好理解:

for (int i = 0; i < 10; i++)
	f[i] = rand.newtFloat();
for (float x : f)
	System.out.println(x);

其实就是用简单的方法实现遍历整个数组。再来一个有趣的用法:

for (char c : "hello world".toCharArray())
    System.out.print(c + " ");

打印结果:

h e l l o   w o r l d

toCharArray()方法使得字符串返回一个字符数组。

标签


自从Dijkstra发表了那著名的论文后,goto一直被认为是糟糕的编程方法,因为它使得程序复杂化,难以理解。感觉不能因为刀能杀人就认为刀有害,其实工具好不好在于其如何使用。尽管Java没有引入goto,但它保留了“标签”,与goto类似:

label:

在Java中,标签起作用的唯一地方刚好是在迭代语句之前。“刚好之前”的意思是说,在标签和迭代之间置入任何语句都不好。其常常和continue、break组合用:

label:
outer-iteration {
	inner-iteration {
	//...
	break;(1)
	//...
	continue;(2)
	//...
	continue label;(3)
	//...
	break label;(4)
	}
}
  • (1) 与其他语言一致,break中断内部迭代,回到外部迭代。
  • (2) 与其他语言一致,continue使执行点移回内部迭代的起始处。
  • (3) continue label同时中断内部迭代和外部迭代,直接转到label处;随后,继续执行迭代过程,从外部迭代开始。要注意“中断”的意思,相当于从标签处开始再次执行,但之前的变量依然是“中断”前的数值,不重新开始(特殊情况除外)。
  • (4) break label同时中断内部迭代和外部迭代,直接转到label处;但随后不再进入标签所指向的迭代,这里是outer-iteration迭代,当然外面进不去,里面的就更进不去了。

switch语句


switch语句基本用法与C/C++相似,但其选择因子必须是int或char那样的整数值。到底什么区别?感觉类什么的就别拿来当选择因子了吧。(选择因子即switch后面紧跟的需要判断的因子)

今天写的有点短,明天再接再厉!



blog comments powered by Disqus