public class VariableParameter {
public static void main(String[] args) {
System.out.println(add(1,2));
System.out.println(add(1,2,3,4));
}
public static int add(int x,int...args){
//是3个点,args必须是最后、一个参数即args后面不能再有其他参数
int sum = x;
for(int i=0; i< args.length ; i++){
sum = sum +args[i];
}
return sum;
}
}
输出的结果:
3
10
......
语法:
for ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
public class AdvancedFor {
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1, 2, 3, 4));
}
public static int add(int x, int... args) {
int sum = x;
for (int i : args) {
sum = sum + i;
}
return sum;
}
}
输出的结果:
3
10
......
override是覆写,对应于OO编程的继承特性,意思就是在子类中重写父类中的方法;
overload是重载,对应于OO编程的多态特性,意思就是在同一个类中同样名称的多个方法, 这多个方法之间的区别在他们的参数列不同。
例如:
public interface UserDao {
public void save();
}
public class Override_Overload implements UserDao{
@Override
public void save() {
// TODO Auto-generated method stub
}
//以下三中方就是overload是重载
public int find(String name){
return 1;
}
public int find(String name,Long id){
return 1;
}
public int find(Long id){
return 1;
}
}
......
译注
:本文来自straight_talking_java@yahoogroups.com讨论组,已经是一年多前
的文章。Alan Williamson是Java Developers
Journal的编辑,下文来自他在IBM的一个消息来源。SWT和Swing的论争我见过不少,Netbeans和Eclipse的也同样多。译者翻译
此文并不是要激起什么争执,也不是支持哪一方(虽然我的确是站在SWT一边的),更不是要攻击Amy。我最重要的理由是,这是一篇有趣的文章。里面有内
幕、线人、公司政治、垄断巨头、美女、商界风云……足够拍一出电影。有趣,这就够了。不过此文反映了IBM对Swing的看法和SWT的由来,还是有一点
营养的。
要想弄清楚为什么一切都被弄得如此混乱,要从几年前只存在AWT的时候说起。SUN当时已经建立了一套基本的可移植控件
类,这些类映射到不同操作系统上的原生窗口组件(native widget),显然下一步应该继续增强这套模型,除了初始的CUA
92组件(文字、按钮等等),再继续加上表格、树、记事本、滑块等等……当时的AWT还满是漏洞,远不能称为可靠,还需要SUN的coder们去修补。
SUN的developer们如Graham和Otto总是习惯于公开把他们的bug归咎为操作系统的差异,比如“Windows和OS/2的焦点 ......
一位ID为ultimus的程序员开发了一种名为anic的新语言,近日引起业界关注。根据Google Code上该项目的简介,该语言的正式名称是ANI,anic是这种语言的参考实现。
ANI是一种实验性、高性能、静态安全、完全隐含支持并行、面向对象的通用数据流编程语言。
anic用GNU工具链写成,因此可移植性很好,可以运行于所有主流操作系统,包括*NIX,Mac OS X和Windows(借助Cygwin)。
用anic编写的Hello World程序是这样的:
"Hello, World!" -std.out
而用C语言编写并不轻松的多线程、实时的时钟+计算器混合程序,用anic写起来将如此简洁:
@std.in;a=[[0\]]; op=[[' '\]]; b=[[0\]]; r=[[0\]];0 { clock = [[int ms]] { ("\r" + ms/1000.0 + ":" + a + op + b + "=" + r) -std.out; 1 std.delay (ms+1) clock} };inLoop = {\in-a \in-op \in-b inLoop};\\op ?? {'+': (\a+\b) '-': (\a-\b) '*': (\a*\b) '/': (\a/\b) : 0} -r;
该项目的论坛上目前已经非常热烈,其中不乏Google公司的程序员参与其中。
很酷,不是吗?赶快开始尝试吧: http://code.google.com/p/anic/
追赶技术是很困难的,但是抓住内层实质,确是可能的。
......
一位ID为ultimus的程序员开发了一种名为anic的新语言,近日引起业界关注。根据Google Code上该项目的简介,该语言的正式名称是ANI,anic是这种语言的参考实现。
ANI是一种实验性、高性能、静态安全、完全隐含支持并行、面向对象的通用数据流编程语言。
anic用GNU工具链写成,因此可移植性很好,可以运行于所有主流操作系统,包括*NIX,Mac OS X和Windows(借助Cygwin)。
用anic编写的Hello World程序是这样的:
"Hello, World!" -std.out
而用C语言编写并不轻松的多线程、实时的时钟+计算器混合程序,用anic写起来将如此简洁:
@std.in;a=[[0\]]; op=[[' '\]]; b=[[0\]]; r=[[0\]];0 { clock = [[int ms]] { ("\r" + ms/1000.0 + ":" + a + op + b + "=" + r) -std.out; 1 std.delay (ms+1) clock} };inLoop = {\in-a \in-op \in-b inLoop};\\op ?? {'+': (\a+\b) '-': (\a-\b) '*': (\a*\b) '/': (\a/\b) : 0} -r;
该项目的论坛上目前已经非常热烈,其中不乏Google公司的程序员参与其中。
很酷,不是吗?赶快开始尝试吧: http://code.google.com/p/anic/
追赶技术是很困难的,但是抓住内层实质,确是可能的。
......
本文讲解了Java序列化的机制和原理。从文中你可以了解如何序列化一个对象,什么时候需要序列化以及Java序列化的算法。
00 00 00 0B: 11, containVersion的值.
0x70:TC_NULL,没有超类了。
0x49: 域类型. 49 代表"I", 也就是Int..
00 0E: 域名字长度.
63 6F 6E 74 61 69 6E 56 65 72 73 69 6F 6E: containVersion, 域名字描述.
0x78: TC_ENDBLOCKDATA对象块结束的标志.
0x73: TC_OBJECT, 声明这是一个新的对象.
0x72: TC_CLASSDESC声明这里开始一个新Class.
00 07: 类名的长度.
63 6F 6E 74 61 69 6E: contain,类名描述.
FC BB E6 0E FB CB 60 C7: SerialVersionUID, 序列化ID.
0x02: Various flags. 标记号. 该值声明该对象支持序列化
00 01: 类内的域个数。
00 00 00 42: 66, version域的值.
00 00 00 0A: 10, parentVersion域的值.
0x49: 域类型. 49 代表"I", 也就是Int.
00 0D: 域名字长度.
70 61 72 65 6E 74 56 65 72 73 69 6F 6E: ......