1. 程式人生 > >Java類與物件練習題

Java類與物件練習題

1.建立一個Test類,包含有一個public許可權的int型成員變數與一個char型別的成員變數,觀察在main方法中的初始值。

public class StrTest
{
    public int x;
    public char ch;

    public static void main (String[] args)
    {
        StrTest a = new StrTest();
        System.out.println (a.ch);
        System.out.println (a.x);
        boolean bo = false;
        if (a.ch == '\u0000')
        {
            bo = true;
        }
        System.out.println(bo);
    }
}

執行結果:

注意:

char的預設值是'\u0000',不是空格

\u0000代表的應該是nul,一個控制字元,表示沒有值,不可見,輸出控制檯是空,但不是真正的空格,因為真正的空格的unicode編碼是'\u0020'

2.遞迴與非遞迴求菲波那切數列(一個斐波那契數列是由數字1、1、2、3、5、8、13、21、34等等組成的,其中每一個數字(從第三個數字起)都是前兩個數字的和。建立一個方法,接受一個整數引數,並顯示從第一個元素開始總共由該引數指定的個數所構成的所有斐波那契數字。例如,如果執行 java Fibonacci 5(Fibonacci為類名),那麼輸出應該是1、1、2、3、5。)

//求斐波那契數列
public class Fibonacci
{
    public static void main(String[] args)
    {
        //System.out.print(fibonacciArrs1(5));
        fibonacciArrs(9);
    }
    public static int fibonacciArrs1(int num)//用遞迴的方法列印第num個數時的斐波那契數(只顯示最後一個數)
    {
        if (num == 1 || num == 2)
        {
            return 1;
        }
        else
        {
            return fibonacciArrs1(num-1)+fibonacciArrs1(num-2);
        }
    }

    public static void fibonacciArrs(int num)//用陣列的方法列印前num個斐波那契數(顯示num個數)
    {
        if (num <= 0)
        {
            System.out.println ("num 的值有誤!!!");
            return ;
        }
        int[] arrs = new int[num];
        arrs[0] = 1;
        if (num > 1)//防止num == 1,陣列越界
        {
            arrs[1] = 1;
        }
        for (int i=2; i<num; ++i)
        {
            arrs[i] = arrs[i-1]+arrs[i-2];
        }
        for (int x:arrs)
        {
            System.out.print(x+" ");
        }
    }
}

執行結果:

 


3.建立一個帶預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數,並在這個有參構造方法中把"Hello Constructor"和接收的引數一起打印出來。

 public class Constructor 
{
    public Constructor()
    {
        System.out.print ("Hello Constructor");
    }

    public Constructor(String str)
    {
        this();//呼叫本類構造方法
        //this
            //呼叫普通方法:this.方法名(引數);
            //呼叫構造方法:this(引數);
        System.out.println (str);
    }
    public static void main(String[] args)
    {
        new Constructor("aaaaaaaaaaa");//匿名物件(匿名物件不會有任何棧空間所指向,所以使用一次後就成為垃圾空間。)
    }
}

 

執行結果: