レビュー問題 - 第3章

まず、タイプと変数を区別。
タイプは、設定された値であり、動作がこれらの値に行うことができます。変数値は、指定位置の特定のタイプに格納されている(データの特定のタイプによって定義され、値は型制約を満たすために格納されていてもよいです)

Javaの
基本データ型(プリミティブ型):int型、長い 、ブール、二重、チャー、
オブジェクトデータ型:文字列、BigIntegerの、の定義されたオブジェクトの種類
基本データ型小文字開始、開始オブジェクトのデータ・タイプ大文字
ここに画像を挿入説明
、オブジェクトデータは、さらに、実質的に含み、またタイプパッケージの種類が、効率に影響を与えます。
すべてのクラスは、デフォルトではObjectクラスを継承しています。サブクラスは親クラスを継承し、目に見えるメンバ変数やメソッドをオーバーライドすることができます。
Javaは、オペレータは、+と-オーバーロードできます* /、および機能、
Javaは静的に型付けされた言語で、すべての変数はコンパイル時にチェックを再コンパイル時の型の種類を知っておく必要があります。(とPythonは、実行時にチェックする動的な型です)

コンテンツ静的型チェックは-の種類に
構文エラー(動的言語の検査は、このチェックを行うことになる)
クラス名/関数名、間違った
引数の数が間違っ
間違ったタイプ
の戻り値のエラー

コンテンツの動的な型チェック-の値に
不正のパラメータ値:ゼロによる除算のような
戻り不正値が
オーバーインデックス
ヌルポインタ

ジャワのいくつかの基本的な種類があり、動的な5/2、大きな整数オーバーフローなどNaNのような特別な値の浮動小数点型として例外を、チェックされません
言及しない間違ったが、結果は無限大ですん
 java.lang.ArithmeticException:/ゼロによる
静态检查:ローカル変数bが初期化されていないかもしれません

  • 可变与不可变
    改变variable和改变value
    对变量赋值是在改变变 量的指向,指向不同的值
    改变可变变量的内容时 ,是在改变变量内部内容的引用
    由于改变常常是不可预测的,所以优秀的程序需要维护某些不变性
    immutable type:不变类型的实例创建完之后,值不可修改
    immutable reference:不变引用一旦指定位置,不可再次指定——使用final关键字,利于静态检查
    final class不可被继承,final variable不能被改变,final method不能被重写

不可变的对象:一旦被创建,他们总是表示同样的值
可变的对象:拥有mutator,可以改变自身的值

String是典型的不可变类型。如果要修改String对象表示的值,只能将这个引用指向其他内存区间。
スナップショットの説明
而StringBuilder则是可变的字符串类型。
ここに画像を挿入説明

不可变类型:许多临时的拷贝,性能差,但安全
可变:性能好,可共享,但不安全,带来内存别名的风险,返回时需要defensive copy
不可变类型可能没有可变类型高效,但是它不需要denfensive copy

  • Snapshot diagrams
    表示程序在运行时的内部状态
    栈:方法和局部变量
    堆:现存的对象
    不可变的引用和对象都用双线
    可以有:不可变的引用指向可变的值,如 final StringBuilder sb,可变的引用指向不可变的值,如String s

一般的な不変の
基本タイプとその梱包は不変です。あなたが操作の数が多い場合は、BigIntegerのとはBigDecimalがで不変です。コレクションは、パッケージング方法Collections.unmodifiableList、Collections.unmodifiableSet、(防御的なコピーに使用されてもよい)Collections.unmodifiableMap他の不変取得セットを提供します。

非空のコレクションがヌル含むことができ、主なタイプはnullに譲渡することはできません。必要でない場合は、プログラムにnullを使用しないでください。

おすすめ

転載: blog.csdn.net/qq_43351085/article/details/92796732