1995年にSumMicrosystemが開発したJava言語。オラクルに食われた。
C++言語から構造化プログラミングを、Smalltalkからはオブジェクト指向を混ぜてコードを書くことができる。
2017年になってもプログラミングのランキングみたいなので1位をキープしている。業務系では飛びぬけて使われている。
でもGoやらRustやらのモダンな言語に世代が移りそう。
CPU、OSの環境の違いを無視 [ソース]->[中間コード]->[Java仮想マシン]->[OS]とJavaはプログラムを実行する。 その中でも[中間コード]->[Java仮想マシン]の仕組みによって、Windowsでビルドした中間コードをRaspberryPiで動かしたりできるはず。Write one, run anywhere. PythonやRubyなどのスクリプト言語も移植できるけど、中間コードにビルドしているJavaはそいつらより早い。速さも移植性も兼ね備えたハイブリッド。
メモリ管理 & GC C言語であった忌まわしきポインタが無くなり、Cより楽にコードが書ける。と思ったが、メソッド名が長くて度々ググらないといけないので±0
なぜこの言語を使うのか? "業務系では飛びぬけて使われている" "ポインタが無い(2017では当たり前だけど)" "どこでも動く" 正直これぐらいしか無い。
JRE 中間コード(.jarとか.classとか)を実行するためのラインタイム?らしい。Minecraftとかで見たことある。Cはバイナリなのでダブルクリックとかで動くけど、javaはJREを使って仮想マシンの中で動かす。 JDK 開発者用。javac(java compiler)っていう中間コードをビルドするやつや、アーカイバが入ってる。
1ファイル1クラス
ファイル名=クラス名 別々の名称にしても動くけど、デフォルトで中間コードはクラス名で作られるので、問題の元になる。
キーボードからはコマンドライン引数やBufferedReader() Cだったらscanf()とかfgets()とか。Pythonならinput()とか。
System.out.println() は画面出力 画面出力する関数がこんなに長いのが今だに理解できない。
final は定数にする修飾子 定数は初期値をいれると、プログラムからteisu=1;
とかするとコンパイルエラーになる。
\u0012でユニコード入力
long整数型は64bit
String型は参照型 参照型って何だろ
string=""+123; で数値を文字列に まあキャスト演算子string=(string)123;
でもできそう。
最初で最後