01 | Javaのソースファイル{Sample.java}をコンパイルせよ |
ーーー> javac Sample.java |
02 | Javaソースファイル{Sample.java}をコンパイルした後に出来るファイル名を述べよ |
ーーー> Sample.class |
03 | Javaコンパイラに対して、実行時に使われるJavaコマンドは何というか述べよ |
ーーー> Javaインタプリンタ |
04 | Javaアプリケーションに対して、Webブラウザ上で動作するプログラムを何というか述べよ |
ーーー> Javaアプレット |
05 | Webブラウザ上で動作するJavaプログラムを他の方法で実行するコマンドは何というか述べよ |
ーーー> appletviewerプログラム |
06 | サーバ上で動作するJavaプログラムを何というか述べよ |
ーーー> Javaサブレット |
07 | メインメソッドを定義せよ |
ーーー> public static void main(String[] args) |
08 | 標準出力を使用し、"Hello"のみ出力せよ |
ーーー> System.out.print("Hello"); |
09 | Java言語には含まれていない予約語を2つ述べよ |
ーーー> const と goto |
10 | char型のサイズと保持できる値を述べよ |
ーーー> 16ビット、UNICODE |
11 | データ型として整数を保持できる型を4つ述べよ |
ーーー> byte, short, int, long |
12 | 参照型を2つ述べよ |
ーーー> クラス と 配列 |
13 | 文字列や数値の連結が出来る演算子を述べよ |
ーーー> +演算子 |
14 | 実行のフローを分岐させる制御文を2つ述べよ |
ーーー> if文、switch文 |
15 | 反復処理を行う制御文を3つ述べよ |
ーーー> while文、do文、for文 |
16 | 例外処理を行う制御文を述べよ |
ーーー> throw文 |
17 | 配列の生成で使用されるキーワードを述べよ |
ーーー> new演算子 |
18 | int型の配列名aの宣言方法を2つ述べよ |
ーーー> int[] a と int a[] |
19 | 配列名aの要素数(大きさ)を述べよ |
ーーー> a.length |
20 | concatメソッドのクラスを述べよ |
ーーー> java.lang.String |
21 | int[] a={}; の要素数を数値で述べよ |
ーーー> 0 |
22 | int型変数numが100で割り切れるかどうかを判断する制御文を述べよ |
ーーー> if(num%100==0) |
23 |
int型変数yearが、閏年かどうかを判断する制御文を述べよ。 (閏年:4で割れ100で割り切れないが、400で割り切れる年) |
ーーー> (year%4==0 && year%100!=0) || year%400==0 |
[nw0343:~/java-rep/rep#4] j03043% cat firsttest.java class firsttest{ public static void main (String[] args) { System.out.print("[Q24] --> "); t1(); System.out.print("[Q25] --> "); t2(); System.out.print("[Q26a] --> "); t3a(); System.out.print("[Q26b] --> "); t3b(); System.out.print("[Q27] --> "); t4(); System.out.print("\n[Q28] --> "); t5(); System.out.print("[Q29] --> "); t6(); System.out.print("[Q30] --> "); t7(); } /*Q24*/ public static void t1() { int x, y; x=100; x += 1; x--; y=200+x; System.out.println(y++); } /*Q25*/ public static void t2() { int a=0, x=0; a=5; a += 3; x = ++a; System.out.println(x); } /*Q26a*/ public static void t3a() { int a=9, b=3; a /= b; System.out.println(a %= b); } /*Q26b*/ public static void t3b() { int i, j; for(i=0, j=0; i<3; i++) ++j; System.out.println(i * j); } /*Q27*/ public static void t4() { int i=2; while(i-- > 0) System.out.print(i); } /*Q28*/ public static void t5() { int num=10000; for(int i=0; i<4; i++) num >>= i; System.out.println(num); } /*Q29*/ public static void t6() { int num=0; for(int i=1; i<=10; i++) {if(++num % i ==0) num++;} System.out.println(++num); } /*Q30*/ public static void t7() { int a=9; if(a++ != 10 | a++ == 10) a++; System.out.println(a); } } |
[nw0343:~/java-rep/rep#4] j03043% java firsttest [Q24] --> 300 [Q25] --> 9 [Q26a] --> 0 [Q26b] --> 9 [Q27] --> 10 [Q28] --> 156 [Q29] --> 12 [Q30] --> 12 |
Q1,2 : Javaのソースファイルをコンパイルするために必要なコマンドは「Javac ソースファイル名」。 コンパイルすると「.class」を拡張子に持つクラスファイルが生成される。 Javaのソースプログラムのファイル名の拡張子は「.java」でなければいけない。 Q3 : コンパイルされたファイルを実行するときに使用するJavaコマンドをJavaインタプリンタという。 Q4〜6 : Webブラウザ上で実行できるJavaプログラムをJavaアプレットという。 appletviewer コマンドで実行できる。 アプレットについてはレポート2でもやった。 対してサーバー上で実行できるプログラムをサブレットという。 Q7 : メインメソッドは public static void main(String[] args) で定義される。 Q8 : Helloのみを出力するには System.out.print(Hello); にしなければならない。 System.out.println(Hello); にすると、改行(\n)も出力されてしまう。 Q9 : Javaに含まれていない予約語は const と goto である。 C言語では予約語となっている。 Q10,11 : char型のサイズは16ビット、保持できる値はUNICODE。 また、整数を扱う型は byte, short, int, long です。
型 | サイズ | 保持できる値 | 範囲 |
boolean | 1ビット | trueまたはfalse | |
char | 16ビット | UNICODE | \u0000 〜 \uffff (0 〜 65535) |
byte | 8ビット | 符号付き整数 | -128 〜 127 |
short | 16ビット | 符号付き整数 | -32768 〜 32767 |
int | 32ビット | 符号付き整数 | -2147483648 〜 2147483647 |
long | 64ビット | 符号付き整数 | -9223372036854775808 〜 9223372036854775807 |
Q12 : 参照型にはクラスと配列がある。 参照型とは、データを指定する時「データそのもの」を指定するのでは無く、 「データが保存されている場所」を指定する時に使う変数。 Q13 : 文字列や数字の連結ができる演算子は「+」で、文字列連結演算子という。 例: [Masaki-HIGA:~/java-rep/rep#4] j03043% cat plus.java /* 文字列結合演算子 */ class plus{ public static void main (String[] args) { System.out.println(123 + 456); System.out.println("123" + 456); System.out.println("123" + "456"); System.out.println(123 + "456"); System.out.println("abc" + "efg"); System.out.println("abc" + 123); } } 結果: [Masaki-HIGA:~/java-rep/rep#4] j03043% java plus 579 123456 123456 123456 abcefg abc123 文字列同士を連結するときは両方の文字列を””で囲む、文字列と数字のときは 囲むのは文字列のみでも構わない。数字同士はどちらか片方で十分。 数字をどちらも””で囲まなかったら加算される。 Q14,15 : これらの制御文については何回目かのレポートでやったので略。 Q16 : 例外処理を行う制御文はthrow。 例外処理で主に throw, throws, try-catch の3つの文を用いる。 例外処理はクラス間をまたがって処理を移すことが出来る。 Q17〜19 : 配列を宣言するときには 型名 変数名[]; もしくは 型名[] 変数名; で可能。 宣言した変数に領域を割り当てるときに new が使われます。 変数名 = new 型名[サイズ]; 配列の宣言と領域の割り当てを同時に行う時は 型名 変数名[] = new 型名[サイズ]; でできます。 宣言と同時に値を代入するときには new は必要ありません。 int[] rei = {1,2,3}; <ーー例 また、配列の大きさを調べるには、配列名.length とすればよい。 Q20 : concatのメソッドはjava.lang.Stringです。 concatは指定した文字列をこの文字列の後ろに連結します。 "文字列".concat("文字列") というふうに使用します。 Q21: [nw0343:~/java-rep/rep#4] j03043% cat Q21.java public class Q21{ public static void main(String args[]){ int a[]={}; System.out.println(a.length); } } [nw0343:~/java-rep/rep#4] j03043% java Q21 0 Q23 : 閏年の条件は「4で割り切れて100で割り切れないが400で割り切れる」なので (year%4==0 && year%100!=0)||year%400==0 Q24 : まずxに100を代入。 でxにx+1を代入。 この時xは101 xから1引く 200+xをyに代入。 yを出力した後に1プラスされるので出力されるのは200+xの300。 Q25 : まずaに5を入れる。 aにa+3を代入。 この時aは8 全置インクリメントなのでaに1足した後にxに代入。 なので出力されるのは9 Q26a : まずaに9、bに3を代入。 aにa÷bの値を代入。 この時aは3 a÷bの余りを出力。 結果は0 Q26b : i=0 --> j=1 i=1 --> j=2 i=2 --> j=3 i=3 --> for文から抜ける iとjをかけた値を出力。 Q27 : iに2を代入。 iが0より大きい限りiを表示、whileの中でiが0より大きいか比較後1引かれて表示される。 System.out.print();では改行は出力されないので結果は1と0がくっついて10 Q28 : numに10000代入。 iが0から3まで増加させる。 numをiの数だけ右にシフトさせる。 1+2+3=6で合計右に6シフトして表示。 Q29 : numに0代入。 iが1から10まで増加。 ++num÷1の余りが0ならnumに1足す。 iが1の時は余り0でnumが2になる。 その後は余りが0になることはなくiが10の時numは11。 表示する時先に1足して表示するので結果は12。 Q30 : aに9代入。 aが10と違うか比べて1足す。 aが10と同じか比べて1足す。 上の二つのどっちか(両方でもいい)が真ならまたaに1足す。 aを表示。・・多分。
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); } } |
実行結果 20 + 10 = 30 20 - 10 = 10 20 * 10 = 200 20 / 10 = 2