【Java】Java的三个特点
Java的特点
-
オブジェクト指向
Java仮想マシン
ガベージコレクション
面向对象是以数据为中心思考的方法。
-
そもそも本質はデータをどう加工するか、何をしたいのかはデータが中心に考える
オブジェクト指向ではプログラムの中で扱う対象をモノ(オブジェクト)で表現
アプリを構成するものは全てオブジェクトによって表現され、その組み合わせによってアプリを構成する
データとその操作をカプセル/一体化してコードをかく
よくやりがちな失敗は他のオブジェクトのデータを参照するメソッドを書き、他のオブジェクトのメソッドが別のオブジェクトのデータを参照してしまう
オブジェクト1のメソッドが意味がなくなる→データオブジェクトという(凝集性が悪い)
オブジェクト1のデータを参照するのはオブジェクト1のメソッドでないといけない
基本的にはデータとメソッドは一体化しよう!

以下是中文的同义句选项:
Java虚拟机能够执行二进制代码。

C++: C语言的增强版
-
PCに電気が入りCPUが動く
CPUはマシン語で動いてる
アセンブラ記述(C/C++)→コンパイル→マシン語(バイナリコード)
アセンブラでかくとダイレクトにマシン語になる
バイナリコードのみがCPUを直接動かすことができる
Java – Java
-
Java仮想マシンの上で動作
CPUの上にJava仮想マシンを作る
Java仮想マシンがCPUを直接動かせるバイナリコードである
JDK、JREをインストールしないとJava仮想マシンが動かない
Javaをコンパイルすると中間コードを吐き出す
中間コードはバイナリコードの上で動かす必要
中間コードを介するので直接CPUを動かすC++より遅い(と言われた)
Javaなので遅いのではない

垃圾收集会自动释放内存。
中央处理器/CPU、内存/DRAM和存储器/硬盘驱动器(SSD/HDD)的组成

内存的机制
-
例えばZ80の場合、
データバス8本+アドレスバス16本 (=CPUがアクセスしたい番地を示す)
0000 0000 0000 0000 ~ 1111 1111 1111 1111 までアクセスできる
8bitCPUのZ80の場合、0~65535番地まである
Java仮想マシンはOSにメモリを使う使わないを要求する
OSはメモリをブロックで管理する機能がある
Java仮想マシンはOSに100byteのメモリを要求
OSが管理している使ってない番地を仮想マシンに返す
Javaはそのメモリを使うことができる
メモリリーク: あるApplicationで仮想マシンが使うと指定して終わりを伝えず死ぬと100byte使ったままになってしまい、他の領域に使えない
C/C++ではポインタを使いメモリアロケーターを使って割当、解放命令で解放してあげる
Javaでは、提供するメモリはJDKのJavaマシン管理下
hoge = null; と書くかJava仮想マシン終了で自動でガベージコレクションがメモリを解放してくれる
