`
xitongyunwei
  • 浏览: 926056 次
文章分类
社区版块
存档分类
最新评论

java高新编程 ------ 1

 
阅读更多
1:首先是import的使用
import可以导入一个类,或者某个包的所有类,相信这个我们之前都用的很多了。
import static 这个可以导入某个类中的静态方法,或者所有的静态方法。(是不是曾经有导入了一个类,却无法使用这个类中的静态方法的尴尬事情呢,呵呵)
举个栗子:
import static java.lang.Math.*;

class Struct
{
public static void main(String[] args)
{
System.out.println(min(3, 9));
}
}
min(3, 9)这个是我们Math里的一个静态方法,不用static导入,无法使用这个方法哦,不妨试一下


2:一个方法接受参数不固定(看到这个我觉得很不可思议,呵呵),深入一下吧。
方法定义:public static int add(int x,int ...args) //定义一个参数不固定,但都是int型的add函数(我们之前的重载虽然能定义一个函数不一样的参数个数,但也是必须制定有哪几种的吧)
这个我们的编译器做了哪些处理呢?它为我们的方法的参数创建了一个数组,然后将我们调用时候放的参数都存到数组中,很不错的方法哦。(不过我觉得这个方法虽然方便,却存在一定的空间浪费(每次都需要定义数组),且效率相对要低一点(每次都要将数据往数组里存,如果调用次数很多,肯定会影响程序的性能),所以最好不要太常用哦)
tips:注意使用方法(args放在参数的最后,“...”放在int(类型) 和args(变量名)之间)。看一个栗子吧
import static java.lang.Math.*;
class Struct
{
public static int add(int x,int ...args) {
int sum = x;
for(int i=0;i<args.length;i++) {
sum += args[i];
}
return sum;
}
public static void main(String[] args) {
System.out.println(add(1,2,3,5));
System.out.println(add(2,3,5));
}


}
程序不难,不多啰嗦了。

3:增强for循环
之前在博客中有提到过这种for循环,我们这里详细看一下吧
for ( type 变量名:集合变量名 ) { … }
这个我们不去深究编译器是怎么实现的了,就像记住for( ; ; )一样,能用的很顺畅就好啦
a:迭代变量必须在( )中定义!
b:集合变量可以是数组或实现了Iterable接口的集合类。
举个栗子:(上一个栗子的add函数)
public static int add(int x,int ...args) {
int sum = x;
for(int arg:args) {
sum += arg;
}
return sum;
}

这里我们可以看下这个循环:for(int arg:args) {sum += arg;} 定义的时候,我们定义了int arg:args 可见:int arg是我们新定义的模板,通过上个栗子我们知道args其实是我们系统开辟的那个数组名,所以应该有一个比较清晰的了解了哦。那么,我们该如何使用这个数组里德元素呢??arg[i]酱紫吗?肯定不行了,我们看程序里 sum += arg; 显然我们之接用我们定义的这个模板,不可思议哦,呵呵,不过记住就好啦,编译器这斯做的事情常常太过复杂,我们也不用马上全部都去熟悉,慢慢来了。


4:基本数据类型的装箱和拆箱
这个看着有些犯晕,回去需要看下视频。

5:枚举:
枚举,看名字就知道是例举的意思啦,哈哈,它是用来将所有的变量可能的值都例举出来,我们定义变量的时候只能在这些个值里面选。例如workday:只可能是周一到周日。month:只可能是一月到12月。没听说过有十三月的,呵呵。所以我们很多地方都有使用这个枚举的必要的。
应用:
举个栗子先
class Struct
{
public enum WeekDay{
MON,TUE,WED,THU,FIR,SAT,SUN
}

public static void main(String[] args)
{
WeekDay[] day = WeekDay.values();
for(WeekDay d : day) //现学现用哈,遍历打印所有的枚举值
{
System.out.println(d);
}
}
}

a:枚举也相当于一个类,我们可以在里面定义构造函数,成员变量,普通函数,抽象函数。
构造方法的定义:1:构造方法必须是私有的(私有的?)2:如果有多个构造方法,我们应该使用哪个构造方法(这个相信大家都了解的哈,通过参数嘛)3:对于MON和MON()都是调用相同的构造函数
再来个栗子:
class Struct
{
public enum WeekDay{
MON(1) {//实现虚函数,以下的TUE...等等都一样的,打印下一天是星期几
public void nextday()
{
System.out.println("next day is tuesday");
}
},
TUE(2) {
public void nextday() {
System.out.println("next day is Wednesday");
}
},
WED(3) {
public void nextday() {
System.out.println("next day is Thursday");
}
},
THU(4) {
public void nextday() {
System.out.println("next day is Friday");
}
},
FIR(5) {
public void nextday() {
System.out.println("next day is Saturday");
}
},
SAT(6) {
public void nextday() {
System.out.println("next day is Sunday");
}
},
SUN(7) {
public void nextday() {
System.out.println("next day is monday");
}
};

private WeekDay(int i) //构造函数,打印定义的是星期几,切记enum的构造函数必须为private的。
{
switch(i)
{
case 1:System.out.println("it is monday");break;
case 2:System.out.println("it is tuesday");break;
case 3:System.out.println("it is Wednesday");break;
case 4:System.out.println("it is Thursday");break;
case 5:System.out.println("it is Friday");break;
case 6:System.out.println("it is Saturday");break;
case 7:System.out.println("it is Sunday");break;
}
}

public abstract void nextday(); //定义enum的虚函数

}

public static void main(String[] args)
{
WeekDay[] day = WeekDay.values();
for(WeekDay d : day)
{
System.out.println(d); //打印enum元素
d.nextday(); //调用nextday()函数
}
}
}
这个可能像块插脚布,真的是又臭又长了,(其实就是实现了打印定义的是星期几,然后打出定义的元素,并且打印明天是星期几)呵呵,我把注释写上面了,这里就不啰嗦了,相信都能看明白哦。到这enum就比较全面了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics