中国星星

向往自由的空气/灿烂的阳光/轻柔的风……

 

2008年10月31日

关键字final、finally和方法finalize()

关键字final

 

1、声明变量,阻止对其内容进行修改:

 

Java代码
final int FILE_NEW = 1; 

final int FILE_NEW = 1;

 

2、在继承中使用:

 

    a、阻止重写

 

Java代码
class A {   
    final void meth() {   
        System.out.println("The final method.");   
      }   
}   
 
class B extends A {   
    void meth() { //错误的,无法继承。  
        System.out.println("Illegal.");  
      }   
}  

class A {
    final void meth() {
        System.out.println("The final method.");
      }
}

class B extends A {
    void meth() { //错误的,无法继承。
        System.out.println("Illegal.");
      }

    声明为final的方法有时候可以提高程序性能。

 

    b、使用final阻止继承

 

Java代码
 final class A {   
        //...   
}  
 
class B extends A {     //错误的   
        //...   
}  

 final class A {
        //...
}

class B extends A {     //错误的
        //...

    声明一个类为final则隐式的声明了它的所有方法也为final,声明一个类既是abstract又是final是不合法的。

 

关键字finally

 

    当抛出异常的时候,方法内的程序会采取一种突变的非线性的路线,这样就改变了方法内的正常程序流。根据方法的编码形式,异常可能使方法过早的返回。finally就是用来解决这种意外事件的。 finally创建一个代码块,该代码将在执行完成try/catch块之后执行try/catch块后面的代码之前被执行。无论是否抛出异常,finally块都将执行。如果抛出异常,即使没有catch语句匹配这个异常,finally块也将执行。

 

方法finalize()

 

    在撤销一个对象的时候,有时候需要完成一些操作。比如:一个对象正持有某些非Java资源,要确保在对象被销毁之前释放这些资源。为处理这种情况Java提供了一种称为结束(finalization)的机制。使用结束,可以定义特殊的动作,这种动作在一个对象要被垃圾收集器收回时执行。要给一个类添加结束器,只需定义finalize()方法。

 

Java代码
protected void finalize()   
{   
        // finalization code here   

protected void finalize()
{
        // finalization code here
}

posted @ 2008-10-31 09:46 Jesin 阅读(290) | 评论 (0)编辑 收藏

下一版本的Ubuntu将给我们带来什么?

    离Ubuntu 8.10发布没多长时间了,乍看貌似没给我们留下太深刻的印象。当然,它是个成熟的操作系统,所以肯定会经常更新,但是还有很多东西值得他们去做。

 

    下面是7个最被期待的但没加入这个版本的特性,有望在下个版本加入。

 

1.更好的用户界面

 

    我们喜欢Ubuntu是因为他拥有者很好的安全性,很低的系统要求。但是想象一下如果有更好的界面,比Windows或者MAC更富有吸引力,更实用并且保持很低的硬件要求的界面。以下是用户自己定制的一些界面,不知道下一个版本能否整合过来呢?

 

2.统一的硬盘资料库

 

    我们需要一个数据资料存放中心来存放madwifi,核心补丁等。用户只需在这个“控制中心”即可很简单找出他们所需要的文件。对一些编写摄像头驱动,读卡器驱动的人来说,能找到所需的文件的确是个挑战。

 

3.“开箱即用”

 

    不要预装一些有限制的额外的软件,只需要装大众常用的软件就行,比如播放器等。这些方面可以学学gOS3,他们预装Skype, Wine  和 Picasa等,为初级用户提供了方便。

 

4.多显示器支持

 

    这个功能是面对高端玩家的,那些需要多显示器来工作的人,这功能是必不可少的。

 

5.电源管理

 

    在这方面之前的版本也取得不少进展,但是太有限了。需要更加强大的电源管理能力,在笔记本领域这是很值得关注的。

 

6.音频引擎

 

    ALSA, PulseAudio在Ubuntu只是个没价值的东西,当然想使用5.1声道也只是徒劳。播放MIDI音频时,PulseAudio还有锁住的危险。

 

7.更多的阅读器选择

 

    对于你来说你最想让Ubuntu改变的是什么,很可能就是阅读器,希望能够对此进行改进。

posted @ 2008-10-31 09:43 Jesin 阅读(114) | 评论 (0)编辑 收藏

2008年5月19日

找出重複次數最多的字元

 1import java.util.*;
 2
 3@SuppressWarnings("unchecked")
 4public class Test
 5{
 6
 7    // 找出重複次數最多的字元,並列印出數量和字元
 8    public static void main(String[] args)
 9    {
10        String a = "aaabbdcfeeswdfttrrccaa";
11        List ls = new LinkedList();
12        Test test = new Test();
13        for (int i = 0; i < a.length(); i++)
14        {
15            if (!test.isHave(ls, (a.charAt(i) + "")))
16            {
17                ls.add(a.charAt(i) + "");
18            }

19        }

20        // 保存相應的位置的字母的個數
21        int[] ret = new int[ls.size()];
22        // 最大數
23        int max = 0;
24        for (int i = 0; i < ls.size(); i++)
25        {
26            ret[i] = test.getNum(ls.get(i).toString(), a);
27            if (ret[i] > max)
28            {
29                max = ret[i];
30            }

31        }

32        // 檢查個數最大的,返回位置列表
33        List ls2 = new LinkedList();
34        for (int i = 0; i < ret.length; i++)
35        {
36            if (ret[i] == max)
37            {
38                ls2.add(i + "");
39            }

40        }

41
42        // 遍曆ls2,列印出相應字母和個數
43        System.out.println("\n列印出個數最多的字母及個數:");
44        for (int i = 0; i < ls2.size(); i++)
45        {
46            int m = Integer.parseInt(ls2.get(i).toString());
47            System.out.println("字母:" + ls.get(i).toString() + "   個數:" + ret[m]);
48        }

49
50        System.out.println("\n列印出所有字母及個數:");
51        for (int i = 0; i < ret.length; i++)
52        {
53            System.out.println("字母:" + ls.get(i).toString() + "   個數:" + ret[i]);
54        }

55    }

56
57    // 查詢該列表 ls 是否有該字元
58    private boolean isHave(List ls, String k)
59    {
60        boolean flag = false;
61        for (int i = 0; i < ls.size(); i++)
62        {
63            if (ls.get(i).toString().equals(k))
64            {
65                flag = true;
66                break;
67            }

68        }

69        return flag;
70    }

71
72    // 查詢 a 中有幾個 k
73    private int getNum(String k, String a)
74    {
75        int j = 0;
76        for (int i = 0; i < a.length(); i++)
77        {
78            if ((a.charAt(i) + "").equals(k))
79            {
80                j++;
81            }

82        }

83        return j;
84    }

85}

86

posted @ 2008-05-19 13:27 Jesin 阅读(152) | 评论 (0)编辑 收藏

仅列出标题  

导航

统计

常用链接

留言簿(1)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜