JAVA面向对象程序设计(第二版) 袁绍欣 第四章答案
面向對象(上)
1.名詞解釋:構造方法、抽象
構造方法一般是用來初始化數據成員的,與類名相同,無返回值。
分為有參和無參數,當一個類中沒有定義構造函數時,系統會給該類中加一個默認的空參數的構造函數,方便該類初始化。
構造函數可以重載。
2.對象位于內存何處?聲明能引用對象的本質是什么?
對象位于堆內存中,實質是從棧空間中初始化一個引用,保存對象的地址。
3.對象和基本數據類型作為參數傳遞時,有什么不同?
對象傳遞的是它的地址,基本數據類型是值傳遞。
4.對象在什么時候成為垃圾對象并被釋放?
對象沒有任何引用時,才會成為垃圾,當系統資源不夠時,垃圾會被釋放。
5.final修飾符有什么用?
修飾類時表示不可被繼承
修飾方法時表示方法不可被重寫,對子類隱藏
修飾變量時表示變量不可被更改
7.static修飾的屬性和方法有什么特點?
在堆中的公共儲存單元,不屬于任一個類
main函數是特殊的靜態方法
8.Application程序執行時,為什么不能帶后綴名?
當運行 java x.y 時
java會找 package x 下面 類 y 的 main函數運行
如果寫成 java x.class
java 會找 package x 下面 類 class 的main 函數運行,顯然是找不到的
10.輸出下列圖形
5 5 5 5 54 4 4 43 3 32 2 1 void display(n) {if(n==1) return;for(int i=0;i<n;i++){System.out.print(n+" ");}System.out.print("\n");display(n-1); }11.馬周游問題
?在一張國際象棋棋盤上(8*8方格),騎士(knight,馬)位于任意一個位置。問如何才能讓騎士不重不漏的經過棋盤上的每個格?共有多少種跳法?
package com.text; //課后習題 4.11 import java.util.*; public class Chess {public static int dx[] = {-2,-1,1,2,2,1,-1,-2};public static int dy[] = {1,2,2,1,-1,-2,-2,-1};public static int n = 5;public static int res = 0;//public static int step = 0;public static void dfs(int x,int y,boolean[][] tabu,int step){if(step == 24) {res++;System.out.println("ok");return;}tabu[x][y] = true;//step++;for(int i=0;i<8;i++){int xx = x+dx[i];int yy = y+dy[i];if(xx>=0&&xx<n&&yy>=0&&yy<n&&tabu[xx][yy]==false){//System.out.println(xx+","+yy);step++;dfs(xx,yy,tabu,step);step--;}}tabu[x][y] = false;}public static void main(String[] args) {boolean[][] tabu = new boolean[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){tabu[i][j] =false;}}dfs(0,0,tabu,0);System.out.println(res);} }這里我設置的棋盤是 5 * 5 的,答案304種,和網上給出的一樣。
你問我為什么不 8 * 8 ?說多了都是淚。。。
8 * 8的我跑了好長好長時間,出不來結果,一直以為自己算法出錯了,改來改去,一度崩潰。。。
實在受不了的我google了一下:
對于8 * 8棋盤,一共有26,534,728,821,064種封閉巡邏,但是到底有多少種開巡邏仍然未知 --摘自維基百科
(封閉巡邏就是跳回原位置,開巡邏就是最后可以跳到任意位置)
我算你個鬼,你個糟老頭子壞得很~
轉載于:https://www.cnblogs.com/lyc1226/p/10661458.html
總結
以上是生活随笔為你收集整理的JAVA面向对象程序设计(第二版) 袁绍欣 第四章答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Axure5.1不能输入中文问题.
- 下一篇: 什么是jsp,什么是Servlet?js