記事のディレクトリ
A、Javaの演算子の優先順位
演算子 | 結合性 |
---|---|
[]()(メソッド呼び出し) | 左から右へ |
!〜+(プラスから) - (デクリメント)+(N) - (マイナス) | 右から左へ |
* /% | 左から右へ |
+(加算) - (減算) | 左から右へ |
<< >> >>>(移位) | 左から右へ |
<< = >> =(比較演算子)のinstanceof | 左から右へ |
==!=(代入演算子) | 左から右へ |
& | 左から右へ |
^ | 左から右へ |
| | 左から右へ |
&& | 左から右へ |
|| | 左から右へ |
?:(三項演算子) | 右から左へ |
= | 右から左へ |
第二に、データの種類
ビット(「ビット):即ち、バイナリビット、コンピュータは情報の最小単位である
バイト(バイト):Bと呼ばれる、すなわち、隣接する8つのビット バイトは、情報の量の尺度であり、基本的な情報記憶の単位、最小単位、ならびに一般的に使用KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、その変換の関係にあります。
1 KB = 1024B 1 MB = 1024 KB = 1024×1024B
1ギガバイト= 1024 MB = 1024×1024キロバイト= 1024×1024×1024B
コンピュータ最小記憶単位:ビットビット- >ビットb
1B = 8ビット
1キロバイト= 1024B
1メガバイト= 1024キロバイト
1ギガバイト= 1024メガバイト...
第三に、代入演算子
第四に、論理演算子
ショート回路と &&
a&&b
- > falseの場合、Bが実行されません
短絡または ||
a||b
- > trueの場合、Bが実行されません
五、Javaが値によって渡されます
-パラメータの形式で、パラメータの基本データ型を変更するため、実際のパラメータの値は影響しない
-パラメータのタイプへの参照を変更し、仮パラメータの値が実際のパラメータに影響を与える
参照型の値を渡す方法によって
変化させる方法は、上を通過場合基準値型と影響力。
import java.util.Arrays;
public class MethodTran {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeArrValue(arr);
System.out.println(Arrays.toString(arr));
}
public static void changeArrValue(int[] arr) {
arr[0] = 0;
arr[1] = 0;
arr[2] = 0;
}
}
出力:
アドレス値を変更する方法は、参照型、全く効果を渡す場合(特定のコードを参照)
public class TestCSDN {
public static void main(String[] args) {
int[] arr = new int[0];
int[] tranArr = tranValue(arr);
int[] arrCy = arr;
System.out.println(Arrays.toString(tranArr));
System.out.println(Arrays.toString(arrCy));
}
private static int[] tranValue(int[] arr) {
arr = new int[3];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
return arr;
}
}
?かどうかは、上記の出力は[0、1、2]ですが、そうではありません。
出力:
良い値は、それを通過したと言うことではない?なぜこの方法は、それの配列arrの値を変更しませんか?
以下のチャート分析スラグスラグ?見
概要
出典:「Javaのコア技術巻」
第六に、メソッドのオーバーロード - >ブラザー原則
6.1メソッドのオーバーロード
- 同じクラスの複数の方法 -
父亲(类)相同
- この方法は、同じメソッド名を複数有し、 - 兄弟
姓氏(方法)相同
- 兄弟間 - 異なる複数のパラメータの方法
名字(参数)不同
異なるパラメータを区別する方法:
- このような方法(INT)及び方法(INT、INT)などのパラメータの異なる数、
- このような方法(INT)及び方法(文字列)などのパラメータの異なるタイプ
- このような方法(整数、文字列)と方法のような異なる順序パラメータ(文字列、整数)
注前提の異なる順序パラメータは、いくつかのパラメータに異なる順序でなければならないことのタイプが同じであることができない
場合、方法(INT、INT)、次いで、例えば、順序を変更する方法に関係なく区別することができません
この方法は、戻り値の型とは関係が過負荷にしません
6.2メソッドのオーバーライド
7人のメンバーとローカル変数
新しいヒープに、左プッシュ
入力し
堆内存
、それはデフォルト値を使用して、スペースを開きます
と栈内存
。あなたは、使用する前に、ローカル変数を初期化する必要はありません
- メンバ変数(クラスのメソッド以外の変数):クラス全体での役割
堆内存
-メンバ変数としてオブジェクトを作成するために作成された、と消えオブジェクトの消失- ローカル変数(メソッドまたはフォームパラメータ):その過程での役割
栈内存
-ローカル変数として作成したメソッドと呼ばれる、と一緒に消えメソッドの呼び出しが完了しました
注:
場合は、同じ名前の、その値はメンバ変数、したがって、シールドする同じ名前のローカル変数を、名前のメンバ変数しないようにしよう!成员变量
局部变量
八、文字列の連結ヒープメモリの条件
文字列の連結のために、最初にすべての希望+
接続するのではなく、多くのメモリを消費しますが、速度はそれが推奨され、非常に遅いですStringBuilder
なぜ分析+
メモリの多くを取りますか?
上記のチャートから、元の文字列と文字列の連結は消えませんが、一定のプールが存在しない場合、それはステッチの後に新しい文字列を格納するためのメモリ空間、および文字列を再度開きます。
そしてStringBuilder
中各コールのappend()メソッドは、その文字列を同じオブジェクトであり、+
時間の節約に比べステッチ!推奨されるStringBuilder类
文字列のスプライシングを操作します。
九、Javaアクセス修飾子
(:から図を理解することができるため、保護、プライベート、パブリックのJavaの範囲、及び差分が書き込まれていない場合)
- 公共:同じパッケージまたは、それが継承されているかどうか、缶のアクセスであるかどうかに関係なく。
- プライベート:現在のクラスに加えて、他を使用することはできません
まず明確にする、他の2つはと思うかもしれ、覚えやすい2以上
- 友人は、同じパッケージであります
- 同じパッケージ内かどうかは、家族の継承があります
- デフォルト(書込みない修飾を行うこと、である):(やさしい)フレンドリーであると理解はとてもへのアクセスに加えて、友人が(すなわち、同じパッケージの下)ことができるということです。
- 保護:保護手段を、彼らはまた、(家族)にアクセスすることができますサブクラスの継承と、同じパッケージ(友人)にアクセスできるように、その保護、友人や家族に加えて、あなたを保護することができます。
要約
本クラス-privateにのみ表示)1を
すべてのクラス-publicに見える2)
。パッケージの3)とすべてのサブクラスの可視-保護
)(デフォルトなし修飾子-可視パッケージ4)
テン、finalキーワード
- プライベートとして定義され、これが唯一のクラスメソッド呼び出すことができます。
- 静的として定義され、一方のみを強調し、一度だけ実行されます。
- 最終のように定義さ、それが一定であることを示しており、変更することができません
-
finalクラスは、いかなるサブクラス、メソッドを継承することはできません、最後のクラスのデフォルトは、メンバ変数を含まない、最終的です。
-
最終的な方法は、サブクラスでメソッドをオーバーライドすることはできませんが、継承することができます。
- プロセスの民間最終型がデフォルトのタイプであるので、親クラスのプライベートメンバーの方法は、オーバーライドされたメソッドをサブクラスにすることはできません。
-
最後のメンバ変数は定数を表し、割り当てられた値が変化しないの後、一度だけ割り当てられることができます。
- 場合は、基本的なデータ型の変数、値が初期化後に変更することはできません。
- もし参照型の変数の初期化の後に、それは別のオブジェクトを指すことはできませ。ただし、オブジェクトの値を変更することができますメンバーを指摘
-
この方法は、最終的な建設を変更するために使用することはできません。
XIと暗黙のパラメータ表示パラメータ
パラメータを表示します。メソッドのパラメータを中に
隠されたパラメータ:クラスメソッドは、ドメインクラスのインスタンスを呼び出します。またはスーパー;このような、呼び出しオブジェクトは、メソッドまたはオブジェクトが隠されたパラメータで初期化されます。
public class People{
private String name;
private int age;
public People() {}
public People(String name, int age) {
this.name = name; // this为正在初始化的对象
this.age = age;
}
public void setName(String name) {
this.name = name; // this为调用该方法的对象
}
}
古典の問題のJavaの基礎:A
あなたはこれを参考に感じる場合は、私はあなたが賞賛の何点をサポートすることができると思います。もちろん私はコンテンツの後ろに見るために継続的に焦点を当てることができ、有益な書き込み何かに継続されます。サポートをありがとう。
こうしたバラのような香りのように微妙な動き、