2013.9.9以及2013.9.10
已经系上海易娱工作第二日,正在过着昼夜不分噶代码生活,刺激、新奇、好玩,心情犹如滔滔江水连绵不绝
,虽然艰苦万分但系学到噶野系成正比噶,仲见到好多未使用过噶软件,java5噶新功能感觉比较神奇
,Frank噶视频讲得唔错,清晰易明,如果有机会真想可以亲身体验一番,系视频入边听到噶课堂气氛一个
字:great!! 比起大学入边D老师犹如天渊之别。
岩岩扯得好似比较远啦,宜家分享下呢两日新认识噶java5出现新知识点和个别重点(部分运用的是伪代码):
一、
public int sum(int...numbers){
return 0;
}
一开始见到呢段代码我仲以为系杨帆写错,听下听下竟然系java5噶新知识,真估唔到sun(宜家sun比
oracle收购左)想法如此大胆,正常人大概知道呢个参数究竟系乜意思吧?
无错,代表噶系唔确定参数的个数,也就是可以这样子调用这方法,例子:
int value = sum(1);
int value = sum(1,2);
int value = sum(1,2,3);
.......
二、
int[] a1 = new int[]{1,2,3};
for(int a : a1){
System.out.println("\t"+a);
}
结果: 1 2 3
java的代码变得越来越灵活,清晰易懂,可以理解为:
for(int i=0;i<a1.length;i++){
System.out.println("\t"+a1[i]);
}
三、
@SuppressWarnings("unused")
你在使用IDE如eclipse的时候,当你定义了一个变量如int a=0;但是你后面根本就没有使用到这个变量,
这一行的前面会有一个黄色的警告标志,你将鼠标移动到上面会提示“这个变量从未被使用”,你用上面
的标注后就没有这个提示了。
四、
4.1、
class:Student
int id;
String name;
public setId(int id);
public setName(String name);
@Override
public String toString(){
return "id:"+id+",name:"+name;
}
main:
Student stu1 = new Student(11,"Tom");
Student stu2 = stu1;
System.out.println(stu2);
stu1.setId(12);
System.out.println(stu2);
结果:
id:11,name:Tom
id:12,name:Tom
这里有两个知识点:1、对象的赋值是引用:可理解为传递的是地址而不是值,所以改变stu1的属性,stu2
的属性也会跟着发生变化。2、重载toString()函数,只要在类中重载toString()函数,调用
System.out.println()就可以实现输出的内容。
五、
5.1、
利用Comparable接口实现类对象的排序问题:
class:Student implemenets Comparable
int id;
String name;
@Override
public int compareTo(Student that){
if(this.id>that.id){
return 1;
}
if(this.id<that.id){
return -1;
}
return 0;
}
@Override
public String toString(){
return "id:"+id+",name:"+name;
}
main:
Student[] stu={
new Student(23,"Tom"),
new Student(11,"Marry"),
new Student(28,"home")
};
Arrays.sort(stu);
System.out.println(Arrays.toString(stu));
结果为:[id:11,name:Marry ,id:23,name:Tom ,id:28,name:home]
要实现类对象数组的内容根据id排序必须重写Comparable里的compareTo()方法,这里又运用了4.2的重写
toString方法实现方便的输出。
5.2
利用Comparator接口实现类对象的排序问题:
class StudentComparator implements Comparator{
@Override
public int compare(Student x,Student y;){
if(x.Id>y.Id){
return 1;
}
if(x.Id<y.Id){
return -1;
}
return 0;
}
}
main:
Arrays.sort(stu,new StudentComparator);
结果为:[id:11,name:Marry ,id:23,name:Tom ,id:28,name:home]
Comparator跟Comparable其实差不多,都是比较但是请看清楚他们需要重写的方法是不同的,参数的数量
也是不同的。
六、
对象的比较其实是地址的比较:
String str1="Hello Word";
String str2="Hello Word";
String str3=new String("Hello Word");
String 其实是一个对象而不是基本变量;
java简化了String的操作,String str1="Hello word";已经在内存里新建了一个空间存储;
System.out.println(str1 == str2); //输出的是true
这是一个特例,因为"Hello word"已经存在,java优化了程序直接把str2指向str1的"Hello word"
System.out.println(str1 == str3); //输出的是false
因为str3=new String("Hello word"),运用了new所以内存新建了另外一个空间存储
注意:String str=new String("Hello word");
这一句代码在内存中新建了两个空间,一个是"Hello word",另一个是new出来的。
注意:System.out.println(str1.equals(str3)); //输出的是true
因为equals做的是值的比较而不是地址的比较。
七、
int i=1;
i=-+-i++;
System.out.println(i);
结果为: 1
先做i++ 因为++在后所以当时值还是1,再做-+-,+是没有意义的,所以两个负等于正,结果为1。
八、
outer: for(int i=0; i<9 ;i++){
inner: for(int j=0 ;j<9 ;j++){
System.out.println("i:"+i+" j:"+j+"\t");
// break outer; //退出两个循环
// continue outer; //重新进入outer
}
System.out.println();
}
时间过得真系快,又要同大家讲拜拜,精彩听日继续!!