MyEnigmaスマートフォン用の表示で見るMyEnigmaとあるエンジニアのブログです。真偽値型はboolean1Byteの数値データ型はbytefloatとlongに値を代入する時は数値の末尾にFとLを付ける。今はオラクルという会社が開発しているプログラミング言語です。最近はAndroidの影響で、モバイルにも広く使われるようになっています。今回は、C++ユーザの自分が、Javaを勉強した時のメモを残しておきたいと思います。同じコードを様々なプラットフォームで動かせることを売りにしています。あなたとJavaまた、C++と同じでオブジェクト指向のプログラミング言語です。事前にコードをコンパイルして実行ファイルを生成する形になっています。インストールそれぞれのOSに対するインストールは下記を参照下さい。QiitaJavaの種類Javaには用途に応じて、いくつかの種類があるためインストールの際には注意が必要です。Editionいわゆる一般的なデスクトップで使用するJavaです。Edition携帯電話や家電などの組み込み向けのJavaです。MEはAndroidとは異なり、互換性は無いようです。Edition企業用のフルセットのJavaです。大規模サーバ向けの機能が拡張されています。WikipediaC++ユーザが注意すべき所JavaはC(C++)言語を元に設計されたので、C(C++)を使ったことがある人は、あまり迷うことは無いかと思いますが、それでも設計思想の違いなどで、JavaとC(C++)には違う部分もあります。そこで、C(C++)ユーザのためにJavaを使う上で注意すべき所をまとめておきます。falseの真偽値はC++ではboolですが、javaではbooleanです。true;1Byteの数値データ型はbyteC++では、1Byteの数値はchar型を使うことが多いですが、Javaではcharは一文字の文字列しか格納出来ないので、byteという型を使います。128floatとlongに値を代入する時は数値の末尾にFとLを付ける。9223372036854775807L;Stringと数値を連結させると数値が文字列になる自動的に数値が文字列に変換されるので便利です。Num:100となるちなみに、2進数は0bを頭につけて、16進数は0xを頭につけて、コードを埋め込むことができます。(アンダーバー)を入れてもOKです。10nはEnで表すことができます。d=12.34E-2;Javaの配列Cの配列と異なり、配列のサイズなどのフィールドがあり、STLのvectorのように使うことができます。tens;のように、カギカッコを変数名の前と後のどちらにおいても同じように配列を宣言できます。一般的に変数名の前にカッコを置くのが普通のようです。二次元の配列は一定である必要はありません。下記のような配列もOKです。添字無しで簡単にアクセスすることができます。System.out.println(s);}クラスメソッドで、メンバ変数(フィールド)にアクセスする時はthisを使うC++ではthisポインタみたいな感じですね。}}クラスの継承クラスの継承に関しては、C++とJavaで書き方が異なります。親クラスのコンストラクタをアクセスする場合は、superというコマンドを使います。Javaではアクセス修飾子(publicなど)でメンバ変数のアクセスを制御する場合、それぞれのフィールドにアクセス修飾子を付ける必要があります。}}また、親クラスの関数をオーバライドするには、@Overrideというデコレータを関数宣言の前におくと、コンパイラが、関数名のタイポなどを検出し、ちゃんとoverrideできているかチェックしてくれます。クラスの中でtoString関数をオーバライドする必要があります。メソッドでしかアクセスできません。別クラスのインポートC++では別クラスを利用する時は、includeを使いますが、Javaの場合はimport文を使います。ちなみに数学関連のMathクラスはインポートせずに使えます。自動的にスーパークラスの引数なしコンストラクタが呼ばれます。呼ばれるコンストラクタを指定したい場合はsuper()を使います。多重継承javaは多重継承をサポートしていないようです。インターフェースを使うと、多重継承っぽいことを実現できます。C++のconstを使いたい時は、finalを変数の型の前に置けば、その変数は変更できなくなるので、C++のconstのような働きをしてくれます。exception_nameと宣言する必要があります。finallyのfinallyの部分は実行されるような機能があります。下記のような方法で実行可能です。実行時にチェックされる例外が存在します。インターフェースC++で言う所の抽象クラスは、Javaではインターフェースとして、文法的に準備されています。インターフェースはクラスのように、フィールドやメソッドを定義できますが、インターフェースがもつフィールドは必ず定数インターフェースのメソッドは抽象メソッドインターフェースはインスタンスを作れないというルールがあります。このインターフェースの実装にはimplementsという予約語を使います。マルチスレッドプログラミングJavaでマルチスレッドの処理をする場合は、Threadクラスをextendする方法と、Runnableインターフェースをimplementsする方法があります。複数のスレッドで同時に実行できなくなり、排他制御が可能になります。ここで、synchronizedはメソッドではなく、インスタンスがロックされるイメージであることに注意が必要です。関数にsynchronizedをつけることもできますし、ブロックで一部のコードに排他制御を入れることもできます。Thread.startはスレッドの計算終了を待ちたい場合は、Thread.runを使います。Javaのマルチスレッドについては下記を参照ください。myenigma.hatenablog.comパッケージ管理Javaのpackageは名前空間を作るものです。C++のnamespaceに似ています。Javaでは、Importで、package内のpublicのクラスなどを使えるようにできます。includeを使いますが、Javaのimportではアスタリスク(*)を使って、すべてのpublicクラスをインポートできます。再帰的には読み込んでくれないので注意が必要です。みんなに見せるものといった、使い方をします。一つのソースファイルには、一つのpublicクラスしか置けません。一つにまとめることになります。会社のURLを逆にして、パッケージ名の前につける方法がよく取られるそうです。一行ずつデータを読む時でも、ディスクからの読み込みが早くなります。文字コードを変換しつつ、データをやり取りできます。HashMapがあります。型パラメータを使って、型宣言する機能をジェネリクスといいます。下記のようなラッパークラスを使います。VoidC++と同じような所C++と同じような所もメモしておきます。同じメソッド名で引数で、複数の関数にディスパッチすること初心者勉強用おすすめ資料ドットインストールのJava入門クラスまず初めにおすすめなのは下記のドットインストールのJavaのクラスです。プログラミングならドットインストールJavaの基本的な言語的な部分は、このクラスのスクリーンキャストを見ることで理解できると思います。下記のページが初めから一つ一つ説明しているためおすすめです。下記の書籍もおすすめです。非常に参考になりました。本記事は下記の資料を元に作成しました。Supportersもしこの記事が参考になり、ブログをサポートしたいと思われた方は、こちらからよろしくお願いします。はてなブログProとあるエンジニアのブログです。Page月別アーカイブスポンサーリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。