この資料からハイパーリンクされているコンテンツの内 http://wwws.kobe-c.ac.jp/deguchi/c/ 以下はC言語に関する資料なので、リンク箇所から離れてハイパーリンクを辿ったり、スクロールし過ぎないように注意すること。
JSE | Java Standard Edition | クライアントアプリケーション |
JEE | Java Enterprise Edition | サーバー用 |
JME | Java Micro Edition | モバイル等の組み込み系 |
![]() |
![]() |
Javaの場合 | Cの場合(詳細はこちら) |
|
// 「ようこそJavaへ!」と画面に表示するプログラム
class Sample1
{
public static void main(String[] args)
{
System.out.println("ようこそJavaへ!");
}
}
// end of Sample1.java
|
書式指定 | 意味 | 対応する型 | 備考 | ||||||
%d、%o、%x | 整数(10進、8進、16進) | int |
| ||||||
%f | 実数 | double | |||||||
%c | 文字 | char | |||||||
%s | 文字列 | String | |||||||
%n | プラットフォーム固有の行区切り文字 | \nは改行文字(C言語はこれで良かったのだが...) | |||||||
%% | %を表示 | 書式指定に関するエスケープ | |||||||
その他はその文字列のまま表示 | 但し"の中ではエスケープしなければならない文字もある |
クラスの宣言 [修飾子] class クラス名 { //メンバー(member) //・フィールド(field)(0個以上) ・・・ C言語の変数(より正確には構造体メンバー)に相当する [修飾子] 型名 フィールド名 ; //・メソッド(method)(0個以上) ・・・ C言語の関数に相当する [修飾子] 戻り値の型 メソッド名(引数リスト) { 文 ; return 式 ; } }
main()メソッドの定義 public static void main(String[] args) // (String args[]) でも構わないが... { 文 ; } [修飾子]はオプション(アクセス修飾子、static修飾子、final修飾子) public:クラス外からアクセスすることができる ⇔ private:クラス外からアクセスすることができない static:クラスに関連付けられている(クラスメソッド) ⇔ インスタンスメソッド staticの付いたメソッド(mainも含まれる)から同じオブジェクトのメンバーを参照する場合、 メソッドもstaticの付いた、クラスメソッドでなければならないし、 フィールドもstaticの付いた、クラス変数(フィールド)でなければならない。
\n | 改行 |
\t | 水平タブ |
\' | ' |
\" | " |
\\ | \ |
\ooo | コードが8進数oooの文字 |
\uhhhh | コードが16進数hhhhの文字 |
10進数 | : | 123 | |
8進数 | : | 0173 | 先頭に 0 を付ける |
16進数 | : | 0x7B | 先頭に 0x を付ける |
例: |
|
例: |
|
例: |
|
変数(variable)は値を入れる箱のようなもので、メモリ(memory)を利用して値を記憶する。 変数は名前(name)、型(data type)、値(value)という属性を持つ。
名前 | 値の範囲 | 備考 |
boolean | trueまたはfalse | |
char | 2バイト文字(\u0000〜\uffff) | |
byte | 1バイト整数(-128〜127) | 低 い ↑ 精 度 ↓ 高 い |
short | 2バイト整数(-32,768〜32,767) | |
int | 4バイト整数(-2,147,483,648〜2,147,483,647) | |
long | 8バイト整数(-263〜263-1) | |
float | 単精度浮動小数点数(IEEE754 32bit) | |
double | 倍精度浮動小数点数(IEEE754 64bit) |
型名 変数名; // 変数の宣言 型名 変数名, 変数名2; // 同じ型の複数の変数をまとめて宣言 型名 変数名 = 式; // 初期化は変数の宣言と同時に値を格納(代入)する これは、 型名 変数名; // 宣言 変数名 = 式; // 代入 と同じ |
![]() |
変数名 = 式; この = は数式の等号ではなく代入演算子(「左辺と右辺が等しい」という意味の関係演算子は == )
// キーボードから入力された文字列を画面に表示するプログラム
import java.io.*; // おまじない
class Sample4
{
public static void main(String[] args) throws IOException
{
System.out.println("文字列を入力して下さい。"); // 入力を要求
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// BufferedReaderクラスのインスタンス br を生成している
String str = br.readLine(); // 入力された文字列をstrに読み込む
System.out.println(str + "が入力されました。");
/*
str = br.readLine(); // 次に入力された文字列をstrに読み込む
・・・strを使った処理が続く
*/
}
}
// end of Sample4.java
各ラッパークラスメソッド | 機能 | C標準ライブラリ関数 |
Integer.parseInt() | intに変換 | atoi() |
Long.parseLong() | longに変換 | atol() |
Float.parseFloat() | floatに変換 | |
Double.parseDouble() | doubleに変換 | atof() |
// キーボードから入力された整数を画面に表示するプログラム
import java.io.*; // おまじない
class Sample5
{
public static void main(String[] args) throws IOException
{
System.out.println("整数を入力して下さい。"); // 入力を要求
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// BufferedReaderクラスのインスタンス br を生成している
String str = br.readLine(); // 入力された文字列をstrに読み込む
int num = Integer.parseInt(str); // 文字列strを整数に変換してint型変数に格納
System.out.println(num + "が入力されました。");
/*
str = br.readLine(); // 次に入力された文字列をstrに読み込む
・・・strを使った処理が続く
*/
}
}
// end of Sample5.java
キーボードや文字列を入力元とし、空白文字(スペースや改行)を区切り文字として、入力をトークンに分割してそれぞれの型の値に変換して取得する。
// キーボードから入力された文字列と整数を画面に表示するプログラム
import java.util.Scanner; // おまじない
class Sample5sc
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("文字列を入力して下さい。"); // 入力を要求
String str = sc.next(); // 入力された文字列をstrに読み込む
System.out.println(str + "が入力されました。");
System.out.println("整数を入力して下さい。"); // 入力を要求
int num = sc.nextInt(); // 入力された整数をint型変数に格納
System.out.println(num + "が入力されました。");
sc.close();
}
}
// end of Sample5sc.java
Scanner sc = new Scanner(System.in); | キーボードから入力する場合 |
String text = ○○; Scanner sc = new Scanner(text); | 入力元を文字列にする場合 |
メソッド名 | 機能 |
String next() | 文字列(String)を取得する |
int nextInt() | 整数(int)を取得する |
float nextFloat() | 実数(float)を取得する |
double nextDouble() | 実数(double)を取得する |
boolean hasNext() | 取得できる文字列があるか |
boolean hasNextInt() | 取得できる整数があるか |
boolean hasNextFloat() | 取得できる実数があるか |
boolean hasNextDouble() | 取得できる実数があるか |
void close() | 閉じる |
例: |
|
例: |
|
例: |
|
例: |
|
例: |
|
![]() |
"変数xの値は"+ y +"です。" "変数yの値は"+ x +"です。" |
例: |
|
例: |
|
![]() |
"変数xの値は"+ y +"です。" "変数yの値は"+ x +"です。" |
式(expression)は演算子(operator)と被演算数・オペランド(operand)から成り、 式の値(value)を計算することを評価(evaluation)という。
演算子 | 機能(数学) | 備考 | ||
---|---|---|---|---|
+ | 加算 | 足し算(+) | a + b | 文字列を連結することもできる(文字列連結演算子) |
- | 減算 | 引き算(−) | a - b | |
* | 乗算 | 掛け算(×) | a * b | |
/ | 除算 | 割り算(÷) | a / b | 整数型同士の場合、商は0に向かって丸められる |
% | 剰余 | 割り算の余り | a % b | aをbで割った余り、必ず a == (a/b)*b + a%b となる |
演算子 | 機能 | 備考 |
---|---|---|
+ | プラス | +a |
- | マイナス | -a |
演算子 | 機能 | 備考 | ||
---|---|---|---|---|
& | ビット毎の論理積 | a & b | ビットマスクに使われる | オペランドがboolean(真理値)の場合は論理演算となる (両オペランドを評価してから論理演算する) |
| | ビット毎の論理和 | a | b | ビットオンに使われる | |
^ | ビット毎の排他的論理和 | a ^ b | ビット反転に使われる | |
<< | 左シフト | a << b | aをbビット左シフト(右から0が入る)、2bを掛けるのと同じ | |
>> | 算術右シフト | a >> b | aをbビット右シフト(最上位の符号ビットを保存する)、2bで割るのと同じ | |
>>> | 論理右シフト | a >>> b | aをbビット右シフト(左から0が入る)、符号無し数の場合に 2bで割るのと同じ | |
~ | 1の補数 | ~a | aの各ビットの0/1を反転する |
被演算ビット | 論理積(and) | 論理和(or) | 排他的論理和(xor) | 論理否定(not) | |
a | b | a & b | a | b | a ^ b | ~a |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
|
変数 = 式
変数 op= 式
|
![]() |
演算子 | 機能 | 数学 | 備考 |
---|---|---|---|
> | より大きい | > | 算術演算子よりも優先順位が低く、 論理演算子よりも優先順位が高い 結果はboolean型で、 真のとき true、 偽のとき false |
>= | 以上 | ≧ | |
< | より小さい | < | |
<= | 以下 | ≦ | |
== ※ | 等しい | = | |
!= | 等しくない | ≠ |
演算子 | 機能 | 備考 | ||
---|---|---|---|---|
&& | 論理積(and) | 式1 && 式2 | 式1の値が false のとき、式2を評価せずに、false 式1の値が true のとき、式2を評価して、 その値が false ならば false、true ならば true | 結果はboolean型で、 true または false |
& | 式1 & 式2 | 式1と式2の値が共に true のときのみ true、それ以外は false | ||
|| | 論理和(or) | 式1 || 式2 | 式1の値が true のとき、式2を評価せずに、true 式1の値が false のとき、式2を評価して、 その値が false ならば false、true ならば true | |
| | 式1 | 式2 | 式1と式2の何れかが true のとき true、それ以外は false | ||
^ | 排他的 論理和(xor) |
式1 ^ 式2 | 式1と式2の真理値が異なるとき true、同じとき false | |
! | 論理否定(not) | !式1 | 式1の値が true のとき false、 false のとき true |
被演算式 | 論理積(and) | 論理和(or) | 排他的 論理和(xor) | 論理否定(not) | |
式1 | 式2 | 式1 && 式2 式1 & 式2 |
式1 || 式2 式1 | 式2 |
式1 ^ 式2 | !式1 |
false | false | false | false | false | true |
false | true | true | true | ||
true | false | false | true | true | false |
true | true | true | false |
数学 | 意味 | Javaの式 | 備考 |
---|---|---|---|
x = 1 | x に 1 を代入する | x = 1 | 代入演算子、 == と間違わないこと |
a = b | a と b が等しい | a == b | 関係(比較)演算子、 = = ではダメ、= と間違わないこと |
a ≠ b | a と b が等しくない | a != b | 関係(比較)演算子、 ! = や <> ではダメ、論理否定を使って !(a==b) でも良い |
a ≧ b | a は b 以上 | a >= b | 関係(比較)演算子、 > = ではダメ |
a ≦ b | a は b 以下 | a <= b | 関係(比較)演算子、 < = ではダメ |
a = b = 0 | a 、b に 0 を代入する | a = b = 0 | 代入演算子、 場所によっては a = 0; b = 0; や a = 0, b = 0 でも良い |
a = b = 0 | a も b も 0 に等しい | a == 0 && b == 0 | 関係(比較)演算子と論理演算子、 a == b == 0 はダメ |
1 < x < 3 | x は 1 より大きく、3 より小さい | 1 < x && x < 3 | 関係(比較)演算子と論理演算子、 1 < x < 3 はダメ |
x ≦ 1,3 ≦ x | x は 1 以下または 3 以上 | x <= 1 || 3 <= x | 関係(比較)演算子と論理演算子、 x <= 1, 3 <= x はダメ |
a = 2,b = 4 | a は 2、b は 4 に等しい | a == 2 && b == 4 | 関係(比較)演算子と論理演算子、 a == 2, b == 4 はダメ |
(型名 )式
Java演算子 | 優先 順位 | 結合 規則 | 備考 | ![]() | C演算子 |
[] . () | 高 ↑ ↓ 低 |
→ | 配列、メンバ/構造体、メソッド/関数 | [] . -> () | |
! ~ ++ -- + - (型) new | ← | 単項 | ! ~ ++ -- + - * & (型) sizeof | ||
* / % | → | 2項(乗、除、剰余) | * / % | ||
+ - | → | 2項(加、減) | + - | ||
<< >> >>> | → | ビットシフト(左、右) | << >> | ||
< <= > >= instanceof | → | 比較 | < <= > >= | ||
== != | → | 比較 | == != | ||
& | → | ビット毎の論理積 | & | ||
^ | → | ビット毎の排他的論理和 | ^ | ||
| | → | ビット毎の論理和 | | | ||
&& | → | 論理積 | && | ||
|| | → | 論理和 | || | ||
? : | ← | 条件式(3項) | ? : | ||
= += -= *= /= %= &= ^= |= <<= >>= >>>= | ← | 代入 | = += -= *= /= %= &= ^= |= <<= >>= | ||
カンマは演算子ではない※ | → | カンマ | , |
abstract continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
定数を表現する方法には、文字リテラル、数値リテラル以外に、名前付き定数(変更不可能な変数)、列挙型(JSE1.5.0で追加された)がある。
final double PI = 3.141592653589793;
enum Suit { SPADES, HEARTS, CLUBS, DIAMONDS }
Suit suit = Suit.DIAMONDS;
switch(suit)
{
case SPADE:
case CLUB:
・・・
}
例: |
| ![]() |
例: |
| ![]() |
例: |
|