JAVA report4


課題

試験問題については全ての解答について記述し、コードの考察を主に行うこと。 講義資料サンプルプログラム考察については、オブジェクト指向プログラム・ クラス・メソッド・オブジェクトまでとする。 Q1 Javaのソースファイル(Sample.java)をコンパイルせよ. A:javac Sample.java 「javac ソースファイル名」 でコンパイラを起動させてコンパイルします. Q2 Javaソースファイル(Sample.java)をコンパイルした後にできるファイル名を述べよ. A:Sample.class クラスファイルはソースをバイトコード形式に変換したものです. Q3 Javaコンパイラに対して,実行時に使われるjavaコマンドは何と言うか述べよ. A:Java interpreter Q4 Javaアプリケーションにたいして、Webブラウザ上で動作するプログラム を何と言うか述べよ。 A:Java Applet Q5 Webブラウザ上で動作するJavaプログラムをほかの方法で実行するコマン ドは何と言うか述べよ。 A:appletviewer Q6 サーバ上で動作するJavaプログラムを何と言うか述べよ。 A:Java Servlet Q7 メインメソッドを定義せよ。 A:public static void main(String[] argv) {} メソッドを定義するとは文を記述する範囲が必要なので{}がないと定義し たことにはなりません. Q8 標準出力を使用し、"Hello"のみ出力せよ。 A:System.out.print("Hello) System.outprintln だと \n まで出力してしまいます. Q9 Java言語には含まれていない予約語を2つ述べよ。 A:const, goto Q10 char型のサイズと保持できる値を述べよ。 A:16bit, Unicode 16ビットのUnicodeエンコーディングは,ほとんどの世界の言語の文字を 表すことができます.しかしUnicodeが使えるテキストエディタはわずか しかないためほとんど使われていません. Q11 データ型として整数を保持できる型を4つ述べよ。 A:byte, short, int, long Q12 参照型を2つ述べよ。 A:クラス, 配列 Q13 文字列や数値の連結ができる演算子を述べよ。 A:文字列連結演算子 + のことです. Q14 実行のフローを分岐させる制御文を2つ述べよ。 A:if, swich Q15 反復処理を行う制御文を3つ述べよ。 A:wile, do, for Q16 例外処理を行う制御文を述べよ。 A:thorow, try, catch, finally Q17 配列の生成で使用されるキーワードを述べよ。 A:new Q18 int型の配列名aの宣言方法を2つ述べよ。 A:int a[];, int[]a; Q19 配列名aの要素数(大きさ)を述べよ。 A:a.length Q20 concatメソッドのクラスを述べよ。 A:java.lang.String Q21 int[]a={};の要素数を数値で述べよ A:0 {}内になにもないので,0です. Q22 int型変数numが100で割り切れるかどうかを判断する制御文を述べよ。 A:if(num%100==0) Q23 int型変数yearが、閏年かどうかを判断する条件式を述べよ。 (閏年:4で 割れ100で割り切れないが、400で割り切れる年) A:( year%4==0 && year%100!=0 || year%400==0 ) Q24~Q30 public class test1 { public static void main(String args[]) { System.out.println("Q 24"); Q24(); System.out.println("?nQ 25"); Q25(); System.out.println("?nQ 26.1"); Q261(); System.out.println("?nQ 26.2"); Q262(); System.out.println("?nQ 27"); Q27(); System.out.println("?n?nQ 28"); Q28(); System.out.println("?nQ 29"); Q29(); System.out.println("?nQ 30"); Q30(); } public static void Q24() { int x,y; //xとyを宣言 x = 100; x +=1; //xに100を代入,xにx+1を代入 x--; y = 200 + x; //xから1引く,yに200+xを代入 System.out.println(y++); //yの値を出力した後に,yに1足す } public static void Q25(){ int a=0, x=0; //aとxを宣言し,共に0を代入 a = 5; a +=3; x = ++a; //aに5を代入,aにa+3を代入, //xにa+1を代入 System.out.println(x); //xの値を出力 } public static void Q261(){ int a=9, b=3; //aとbを宣言し,aに9,bに3を代入 a /= b; //aにaをbで割った値を代入 System.out.println(a %= b); //aをbで割った余りの値を出力 } public static void Q262(){ int i, j; //iとjを宣言 for(i=0,j=0; i<3; i++) ++j; //iとjを0から,3未満なら1ずつ足す System.out.println(i*j); //iとjを掛けた値を出力 } public static void Q27(){ int i=2; //iを宣言し,2を代入 while(i-- > 0) System.out.print(i); //iが0以上なら1ずつ引き. //1引く毎に出力 } public static void Q28(){ int num=10000; //numを宣言し,10000を代入 for(int i = 0; i < 4; i++) num >>= i; //iを宣言し,0を代入.iが4未満ならiに1ずつ足し,numをiビット //ずつ右にシフト System.out.println(num); //numの値を出力 } public static void Q29(){ int num = 0; //numを宣言し,0を代入 for (int i = 1; i <= 10; i++) { if (++num % i ==0) num++; } //iを宣言し,0を代入.iが10以下なら1ずつ足し,num+1がiで割り //切れるならnumに1足す System.out.println(++num); //numに1足して出力 } public static void Q30(){ int a = 9; //aを宣言し,9を代入 if(a++ != 10 | a++ == 10) a++; //a+1が10でない,またははさらにaに1足した値が10ならaに1足 //した値を代入 System.out.println(a); //aの値を出力 } } Q 24 300 Q 25 9 Q 26.1 0 Q 26.2 9 Q 27 10 Q 28 156 Q 29 12 Q 30 12

サンプルプログラム

class CircleC { // クラス double pai = 3.14; // paiを宣言し,3.14を 代入 double circle(int r) { // メソッドcircleを定義 return pai * r * r; //pai*r*rを返す } } class Demo { // クラス public static void main(String args[]) { // mainメソッド double area; // areaを宣言 CircleC obj; // CircleC型の変数objを宣言 obj = new CircleC(); //オブジェクトを作成し,objに代入 area = obj.circle(10); //メソッドcircleの変数rに10を代入 //した値をareaに代入 System.out.println("area = " + area); } } [Yuji-TAIRA:~/java4] j03027% java Demo area = 314.0 class ObjSample { public static void main(String args[]) { Display obj = new Display(); // クラスDisplayのオブジェクト // obj生成 obj.Disp("Hello Java"); // オブジェクトobjのメソッド // Dispを呼ぶ } } class Display { // クラスDisplayの定義 void Disp(String message) { // メソッドDispの定義 System.out.println(message); } } [Yuji-TAIRA:~/java4] j03027% java ObjSample Hello Java public class Comp4 { // クラスComp4を定義 int add(int x, int y) { // メソッドadd(int // x,int y)を定義 return x + y; // x + y を返す } int substract(int x, int y) { // メソッドsubstractを //定義 return x - y; // x - y を返す } int multiply(int x, int y) { // メソッドmultiplyを定 // 義 return x * y; // x * y を返す } int divide(int x, int y) { // メソッドdivideを定義 return x / y; // x / y を返す } } class Keisan { public static void main(String args[]) { int a, b, wa, sa, seki, sho; Comp4 enzan = new Comp4(); // クラスComp4のオブ // ジェクトenzan作成 a = 20; b = 10; wa = enzan.add(a, b); // オブジェクトenzan // のadd(a,b)を実行 sa = enzan.substract(a, b); // 同上の // substract(a,b)を実行 seki = enzan.multiply(a, b); // 同上の // multiplu(a,b)を実行 sho = enzan.divide(a, b); // 同上のdivide(a,b) // を実行 System.out.println(a + " + " + b + " = " + wa); System.out.println(a + " - " + b + " = " + sa); System.out.println(a + " * " + b + " = " + seki); System.out.println(a + " / " + b + " = " + sho); } } [Yuji-TAIRA:~/java4] j03027% java Keisan 20 + 10 = 30 20 - 10 = 10 20 * 10 = 200 20 / 10 = 2

考察

public class Cpmp4 について Comp4での計算は class Keisan 内で,足す,引く,掛ける,割るの 必要なところでそれぞれのメソッドを呼び出されて使用されています. どれも引数xにはa,引数yにはb が代入されています.

反省.感想

考察が微妙ですがいっぱいいっぱいです.

参考文献

JAVAクイックリファレンス やさしいJava第2版