Java 言語をある程度理解したら、Java の学習を始めることができます。
Java 学習の初日として、マスターする必要がある内容は次のとおりです。
記事ディレクトリ
確かに!JDK をインストールし、HelloWorld の作成、コンパイル、実行をテストしたことを前提としているため、後は次のコンテンツに集中するために使いやすいエディターを選択するだけです。
1. コメント
プログラマーの実際の仕事では、プログラミングの目的を達成するまでに大量の論理的なコードを記述することになります。
頭の中に大量のコードのイメージがない場合は、HelloWorld が山積みになっていると想像できますが、HelloWorld が多すぎると、関数を呼び出すときに時間が大幅に増加し、作業効率が低下します。そのため、コメントを使用して説明することができ、たとえ時間がかかりすぎても、コードの実際の機能をすぐに反映できます。
では、アノテーションとは一体何なのでしょうか?
ほとんどのプログラミング言語と同様、Java のコメントは実行可能プログラムには表示されません。
つまり、コメントの定義はプログラムの実行中に無視されます。
1. 3種類のコメント
Java には 3 種類のコメントがあります。
1.1 単一行コメント
最も一般的に使用される導入は単一行コメントと呼ばれるもので、例として HelloWorld コードを使用すると次のようになります。
public class HelloWorld{
public static void main(String args[]){
// 一个简单的输出语句
System.out.println("Hello!!!~World");
}
}
1.2 複数行のコメント
もちろん、さらに内容を説明する必要がある場合は、次のような複数行のコメントを使用することもできます。
/*
public 是权限修饰符,用于控制该代码在其程序中被访问的权限
class 是类的关键字,在Java中,所有的代码都定义在一个类中
HelloWorld 是该类的名称,要注意的是该名称需与其文件名称一致
{} 相当于标准语法,Java是强类型语言,一定要注意语法规范
static void 暂时不需顾虑,面向对象章节会详细介绍
main 是主方法,该文件在被虚拟机执行时,虚拟机会根据main来执行器内部内容
System.out System系统下的out对象,然后通过.调用 println 方法
; 分号是逐行结束必须要写的规范
*/
public class HelloWorld{
public static void main(String args[]){
System.out.println("Hello!!!~World");
}
}
1.3 ドキュメントのコメント
実際には、複数行のコメントは上記のように明確に記述する必要はなく、単一行のコメント以上の内容に基づいてプログラムを説明できれば十分です。説明が上記のように明確な場合は、ドキュメントの作成に役立つため、ドキュメント コメントを使用する必要があります。
ドキュメントのコメントは /** で始まり */ で終わります。そして、各文の空白行には次のように * が付いています。
/**
*public 是权限修饰符,用于控制该代码在其程序中被访问的权限
*class 是类的关键字,在Java中,所有的代码都定义在一个类中
*HelloWorld 是该类的名称,要注意的是该名称需与其文件名称一致
*{} 相当于标准语法,Java是强类型语言,一定要注意语法规范
*static void 暂时不需顾虑,面向对象章节会详细介绍
*main 是主方法,该文件在被虚拟机执行时,虚拟机会根据main来执行器内部内容
*System.out System系统下的out对象,然后通过.调用 println 方法
*; 分号是逐行结束必须要写的规范
*/
public class HelloWorld{
public static void main(String args[]){
System.out.println("Hello!!!~World");
}
}
3 つのアノテーションの使用方法は理解できたので、
学習の動機は 3 つのアノテーションが何であるかをすぐに理解することなので、当面はドキュメントを自動生成する方法については説明しません。
2. 識別子とキーワード
識別子とキーワードの概念は本質的に異なるため、混同しないでください。
2.1 識別子の構成:
識別子は、文字、数字、_ (アンダースコア)、$ (ドル記号) で構成されます。
数字で始めることはできません。また、Java 言語自体で使用されるキーワードにすることもできません。
.注意してください
! Java 言語自体は大文字と小文字を厳密に区別します。
2.2 では、識別子とは正確には何でしょうか?
キーワードとは、Java 言語自体の開発者が言語開発時に定義した名前である正式に定義された名前を指します。たとえば、public と class がキーワードです。
したがって、識別子はコーディングプロセス中に定義した名前として理解できます。
初心者としてよく理解できない場合は、コード スニペットを書いて説明します。
Java 言語が中国市場で普及した後、JDK 1.7 の後に中国語のサポートが追加されました。
理解するために中国語の定義識別子を使用してみましょう。
//这里我们将类的标识符定义为了你好
public class 你好{
public static void main(String args[]){
System.out.println("Hello!!! ~World");
}
}
3. データ型の分類
厳密に言えば、どのプログラムもデータ処理ゲームです。したがって、データの保存には厳格な制限が必要であり、その制限はデータ タイプの分割に反映されます。つまり、異なるデータ タイプには異なるデータ内容を保存できます。
注
: Java は厳密に型指定された言語です。つまり、変数ごとに型を宣言する必要があります。
プログラミングを学習していく過程で必ず後から気づくのですが、今は理解できていない概念があっても、 Java のデータ型は基本データ型と参照データ型の 2 種類に分類されることをお伝えしておきます。
基本的なデータ型には、byte、short、int、long、float、double、char、boolean が含まれます。
参照データ クラスの概念は、操作中にメモリを割り当てる必要があることです。
つまり、基本データ型にはメモリ領域の開発は必要ありませんが、参照データ型を使用するには、開発者がデータ型に領域を割り当ててから、関係のマッチングを実行する必要があります。
また、Java の基本データ型は主に値の形式で定義されており、これらの基本データ型のデータ範囲とデフォルト値を表に示します。
いいえ。 | データの種類 | サイズ/ビット | 表現可能なデータ範囲 | デフォルト |
---|---|---|---|---|
1 | バイト | 8 | -128~127 | 0 |
2 | short (短い整数) | 16 | -32768 ~ 32767 | 0 |
3 | int(整数型) | 32 | -2147483648 ~ 2147483647 | 0 |
4 | long(長整数型) | 64 | -9223372036854775808 ~ 9223372036854775807 | 0 |
5 | float (単精度) | 32 | -3.4E38(-3.4 10^38) ~ 3.4E38(3.4 10^38) | 0.0 |
6 | double (倍精度) | 64 | -1.7E308(-1.7 10^308) ~ 1.7E308(1.7 10^308) | 0.0 |
7 | char (文字) | 16 | 0~255 | 「\u0000」 |
8 | ブール値 | - | 正しいか間違っているか | 間違い |
データ範囲に加えて、上記の表の内容を覚えておく必要がありますが、バイト値の範囲も覚えておくことが最善です。
表内のデータ型のサイズの単位はビットです。コンピュータでは、1 バイトは 8 ビットに相当します。
データ型とデータ型の区分を相対的に理解したら、
1つずつ分析していきます。
3.1 データ型を 1 つずつ分析:
3.2 整数型:
3.2.1. 整数
10、30、50、90... などの数値定数は、Java の int データ型に属します。
つまり、Java で設定されるすべての整数コンテンツは、デフォルトでは int 型データです。
public class TestintDemo {
public static void main(String args[]){
//语法:数据类型 变量名称 = 变量;
int num = 10; // 10 是常量,常量的默认值是int
int result = num * 2; //变量num的值乘以2,计算结果存于变量result当中
System.out.println(result); // 输出打印 result
}
}
変数と定数の概念が理解できない場合は、とりあえず横に置いておいて、次の知識ポイントで説明します。
TestintDemo コード スニペットの説明:
記事にちょっとしたロジックのコードを埋め込むのは初めてなので、新寿村の友達のことを考慮して詳しく説明します。 このプログラムは、最初にデータ型が int の num 変数を定義し、次にそれに代入します
。定数値: 10。
次に、同じく int データ型である 2 番目の変数 result を定義し、固定の定数値ではなく、四則演算の乗算演算を代入します。最後の出力ステートメントの出力も結果変数ですが、その値が何であるか想像できますか?
もちろん、ここでは単純な乗算演算のみを説明します。ユーザーが必要に応じて、四則演算のいずれかを使用することもできます。(加算+、減算-、乗算*、除算)
次に、値の範囲の重要性を強調したいと思います。
3.3 値の範囲の重要性!
上の表を思い出してください。そう、データ型ごとに紹介されたテーブルです!
プログラムが値の範囲を超えた場合はどうなりますか?
int 型を使用してテストを行ってみましょう。
public class TestintOutDemo {
public static void main(String[] args) {
int max = Integer.MAX_VALUE; //取最大值
int min = Integer.MIN_VALUE; //取最小值
//查看int类型取值范围的最大值和最小值
System.out.println(max); //控制台的输出结果:2147483647
System.out.println(min); //控制台的输出结果:-2147483648
//给最大值做加法
// 预计结果:2147483647 +1
System.out.println("最大值+1后:"+(max+1));
//给最小值做减法
// 预计结果:-2147483648 -1
System.out.println("最小值-1后:"+(min-1));
}
}
プログラムの実行結果を見てみましょう。
これは同じことですか?
最大値 +1 を超えると負の数になり、最小値 -1 を超えると実際には正の数になります。?
計算がそのデータ型自体の値の範囲を超える場合、循環演算が発生します。最大値が増加し続ける場合は、最小値になり、次の最小値まで循環し続けます。それ以外の場合は、循環演算が発生します。最小値から 1 を引いた値が最大値になる、この現象をオーバーフローといいます。.Binary はコンピュータの基本単位で、int 型のデータは合計 32 ビットの長さを占めます。つまり、最初のビットが符号ビット、残りの 31 ビットがデータ ビットです
。
もちろん、データがすでにデータ型で保存されている最大値である場合、+1 の演算を続けると符号ビットが変化し、最終的にこのようなデータ オーバーフローの問題が発生します。
一般に、この種の問題では、適切なデータ型を選択するだけで十分です。たとえば、年齢関連のデータを格納したい場合は、int 型を使用できます。int 型の値の範囲は、格納するのに十分です。 age. 結局のところ、ageはint型を超えません. 値の範囲は? そうじゃないですか…
整数型には byte short int long の 4 つがあることを忘れないでください。
3.4 変換とは何ですか?
整数型には byte short int long の 4 種類があり、
それぞれにメモリ空間のサイズがあり、小さいものから大きいものまで byte short int long に並べられています。大から小まで:long int short バイト。
小さいメモリ空間を大きいメモリ空間に切り替えることを自動変換、大きいメモリ空間を小さいメモリ空間に切り替えることを強制変換といいます。
では、このデモを転送するにはどうすればよいでしょうか?
3.2.2 long (自動型変換命令)
int 型に対して、より大きなバイト領域を占有する long 型への自動型変換を実装できるようにすることができます。
public class TestintTolongDemo {
public static void main(String[] args) {
int max = Integer.MAX_VALUE; //取出最大值
int min = Integer.MIN_VALUE; //取出最小值
System.out.println("输出向上转型后的最大值:"+(max+1L));
System.out.println("输出向上转型后的最小值:"+(min-1L));
}
}
変革を達成する方法:
変換プロセス中に、操作に含まれる値の 1 つがより大きな型に変換される場合、結果のデータ型も、整数型のデフォルトの int ではなく、より大きな型に自動的に変換されます。
変換方法は、特定のステートメントを追加することで簡単に実現できます。
のように:
int num1 = 10; //int类型
int num2 = 20; //int类型
System.out.println((long)num1 + num2); //long 可以加给参与运算的任意一个变量
例:
操作に関与する 2 つの変数がない場合: たとえば、定数と変数
int num1 = 10;
System.out.println(num1 + 20L); //可以直接给常量加上L,将其转型为不是默认int的long
System.out.println((long)num1 + 20); //或者还是将变量的存储方转为long
3.5 強制型変換の説明
私たちは、小さいパーティが占有するメモリ空間を大きいパーティに変更する方法をすでに知っています。
次に、大きい方のメモリ空間を小さい方に変更する方法を説明します。
long num = 1000;
int x = (int)num; //强制类型转换的语法为:
//在转型方的前面加上优先级运算符(),然后在符号内填写所转换的目标数据类型
System.out.println(x);
プログラムは強制的な型変換をサポートしますが、プログラムのオーバーフローによるデータ損失の問題に注意する必要があります。
3.6 より合理的な型変換図:
3.2.3バイト
整数型には、まだ導入されていないデータ型が他に 2 つあります。それは、byte と short です。
バイトデータ型の値の範囲: -128 ~ 127 これに注意してください。
public class TestbyteDemo {
public static void main(String[] args) {
byte num = (byte) 130; //由于:默认的int整数130 超过了byte数据范围,
//需要做强制类型转换
System.out.println(num); //程序运行结果为:-126
//强制类型转换造成了数据丢失
}
}
概念を説明するために、値の範囲を超える例を選択します。
Java はバイト型の自動型変換を改善します
public class TestbyteDemo {
public static void main(String[] args) {
byte num = 127; //127默认为int类型,这里没有做强制类型转换!
//因为:没有超过byte数据类型的取值范围!
System.out.println(num);
}
}
3.6 データ型のデフォルト値について
各データ型にはデフォルト値があることはわかっていますが、jdk1.4 バージョンより前では、次の点に特別な注意を払う必要があります。クラス内の変数は一時的にデフォルト値を指定できず、メソッド内の変数はデフォルト値を指定する必要があります。そうでない場合はコンパイル エラーになります。
例:
public class TestintDemo{
static int num;
public static void main(String args[]){
System.out.println(num);
}
}
しかし:
public class TestintDemo{
public static void main(String args[]){
int num;
num = 0; //但是此编码形式在 jdk 1.4 及之前会报错
// 必须写为:int num = 0;
System.out.println(num);
}
}
確かに。このノードはあくまで補足説明です!
3.7 浮動小数点型
浮動小数点型は数学における 10 進数型です。整数のデフォルトの型は int で、10 進数のデフォルトの型は double です (「この型はデータの格納に最も広く使用されています」)。
Javaでは10進数の型を表すデータ型がfloatとdoubleの2つあり、doubleの格納データ範囲はfloatのちょうど2倍となるため、doubleのことを倍精度値と呼びます。
3.7.1 ダブル
まず、double を使用して小数を定義する方法を見てみましょう。
public class TestdoubleDemo {
public static void main(String[] args) {
double num = 10.2;
System.out.println(num * 2); //这里包含一个自动类型转换
//因为 double的内存空间所占大于int数据类型,
//固较小的int类型会自动转换为较大的double类型
}
}
look プログラムの実行結果:
3.7.2 フロート
10 進数のデフォルトの型は double であるため、float 型を使用する場合は、キャスト型変換を行う必要があります。変換には 2 つの方法があります: 変数の場合は文字「F」または「f」を使用し、定数の場合は定数値の前に括弧を追加し、括弧内に浮動小数点数を入力します。
public class TestfloatDemo {
public static void main(String[] args) {
float num1 = 10.2F;
float num2 = 10.2f;
float num3 = (float)10.2;
System.out.println(num1 + num2 + num3);
}
}
プログラムの最終的な実行結果は次のようになります: 30.6. 実行して確認してみましょう:
実際には私が期待していた 30.6 ではありませんでした。?
これは Java 自体のバグによるもので、計算だけでは解決できず、後述する BigDecimal クラスや Math クラスを利用して解決する必要があります。
3.8 小数を保存できるのは double または float のみです
int x = 9;
int y = 5;
System.out.println(x / y);
このコードの実行結果では、小数点以下が自動的に省略されます。
2つのint型で定義されているので、結果を変更したい場合はどちらか一方を変換すれば大丈夫です。
int x = 9;
int y = 5;
System.out.println(x / (double)y);
// System.out.println(x / (float)y);
プログラム変換後の実行結果を見てみましょう。
3.9 文字の種類
3.9.1 文字
従来の概念によれば、byte は bytes に属します。1 文字は 2 バイトに等しい (1 文字は 2 バイトに等しい)。
次のサンプル コードでは、char 変数と int 変数の変換を示します。
コンピューターの世界ではすべてがエンコードされており、Java では UNICODE エンコード形式が使用されます。
Unicode エンコード形式には ASCII エンコードの一部が含まれており、英語の文字の範囲は次のとおりです。
- 大文字:65~90
- 小文字:97~122
大文字と小文字のエンコード範囲には 32 の差があります。
Java では、文字列を表すには「二重引用符」が使用されますが、文字は「一重引用符」を使用して表されます。
コードを見てください:
public class TestcharDemo {
public static void main(String[] args) {
char a = 'A';
int num = a;
System.out.println("测试的字符为:"+a);
System.out.println("该测试字符所对应码点为:"+num);
}
}
コードポイント:
エンコーディングにおける特定の文字に対応するコード値は、コード ポイントと呼ばれます。
コードを記述し、コード ポイントの概念を追加したら、プログラムの実行結果を見てみましょう。
3.10 共通のコーディング範囲
「A」(65)~「Z」(90);
'a'(97)~'z'(122);
'0'(48)~'9'(57);
3.11 エンコード範囲を使用して大文字と小文字を変換する
public class TestcharToBig {
public static void main(String[] args) {
char letter = 'A';
int num = letter + 32;
letter = (char) num;
System.out.println(letter);
}
}
//程序的最后输出结果一定为字符:'a'
3.12 ブール型
ブールという言葉は、ジョージ・ブールという数学者の名前に由来しています。
ブール型は論理的な結果であり、主に true と false の 2 種類のデータを格納します。
ブール値の使用:
public class TestbooleanDemo {
public static void main(String[] args) {
boolean flag = false;
//利用if语句判断条件是否成立
//if语句会在后续内容中进行介绍
if (!flag){
System.out.println("Hello!!!~World");
}
}
}
ブール値は論理的な判断によく使用され、値は 2 つだけであることを必ず覚えておいてください。: 真/偽。
整数値とブール値の間の変換はできません。
C++ などの他の多くのプログラミング言語では、数値またはポインターでブール値を置き換えることができます。値 0 はブール値 false に相当し、ゼロ以外の値はブール値 true に相当します。一方、Java では、ブール値の代わりに 0 または 1 を使用することはできません。
4. 変数と定数
すべてのプログラミング言語と同様、Java は変数を使用して値を保存します。定数とは、値が変化しない量です。
これまで、変数と定数の概念を明示的に述べてきませんでしたが、
このセクションでは以下について詳しく説明します。
4.1 変数の宣言
その構文は次のとおりです。
//声明变量
数据类型 变量名称;
//声明并赋值
数据类型 变量名称 = 常量值;
// 你甚至可以同时声明多个变量
数据类型 变量名称1,变量名称2,变量名称3;
4.2 変数の初期化
初期化されていない変数を直接使用すると、コンパイラはエラーを報告します。
int num;
System.out.println(num);
変数の初期化は、この問題に対する最良の解決策です。
いわゆる初期化とは実際には...
int num = 0; //赋值....赋初始值
System.out.println(num); //然后就可以正常使用了!
初期化の方法は2通りあり、1つは上記のように1行に直接記述する方法です。
2 番目の方法:
int num; //这种写法只是在声明
//使用时做初始化操作
num = 0; //这样写是在赋值
System.out.println(num);
//而第一种写法是声明并赋值
4.3 変数と定数
上記の内容では、変数の宣言と使用についてのみ述べました。それでは、定数と変数とは正確には何でしょうか?
定数:
整数であっても浮動小数点数であっても固定値として理解できますが、固定値であれば定数と呼ばれます。
変数:
変数は最初に宣言する必要があります。int num; など、まだ値は代入されていませんが、次のように値を代入すると、
int num = 10; ここでは、int 型で名前が num の変数が宣言されています。
次に、定数 10 が割り当てられます。実際、変数には値が格納されており、この値は定数です。
しかし実際には、定数の使用は次のようになります。
public class TestDemo{
final static int num = 0;
//经 final 修饰符修饰后,只能赋值一次且值永远不可改变。
}
5. オペレーター
3 つの単語の演算子が私の頭の中に現れたとき、私の最初の反応は数学における演算子の概念でした。四則演算と同様に、「+」、「-」、「*」、「/」、「%」は常に切り離せません。コンピュータープログラミング言語にも演算子の概念があります。
さらに驚くべきことは、プログラミング言語の演算子が、関係演算子、数学演算子、三項演算子、論理演算子、ビット演算子などのカテゴリに分類されていることです。
それらを 1 つずつ分析してみましょう。
関係演算子から始めましょう!
5.1 関係演算子
主な機能はデータのサイズを比較することです。返される結果はブール データ (true と false のみ) です。一般的に使用される関係演算子は次のとおりです: より大きい > より大きいか等しい > = より小さい < より小さいか
等しい< =等しいか等しい= =等しくない! =
コードデモ:
package TestOperator;
public class TestRelation {
public static void main(String[] args) {
System.out.println("大于:"+ (3 > 1));
System.out.println("大于等于:"+(3 >= 1));
System.out.println("小于:"+ (3 < 1));
System.out.println("小于等于:"+(3 <= 1));
System.out.println("等等于:"+ (3 == 1));
System.out.println("不等于:"+(3 != 1));
}
}
関係演算子の結果値は true または false の 2 つだけであることがわかっており、プログラムの実行結果も想像できます。
5.2 数学演算子
四則演算も実際の開発でよく使われる演算子で、その内容は主に四則演算、剰余、オートインクリメントなどです。
5.2.1 四則演算コード例
四則演算: 加算、減算、乗算、除算
int numA = 10;
int numB = 20;
System.out.println("加法计算:" +(numA + numB));
System.out.println("减法计算:" +(numA - numB));
System.out.println("乘法计算:" +(numA * numB));
System.out.println("除法计算:" +(numA / numB));
四則演算のテスト結果を見てみましょう
。トリガーの計算結果は実際にはゼロです。?
正しい結果値ではない 0.5 は、2 つの int 型に対して計算が実行され、小数部分が切り捨てられるためです。
次のように入力時に変換できます。
System.out.println("除法计算:" +((double)numA / numB));
今回も結果は問題なし!
しかし、割り算で余りが出た場合はどうすればいいのでしょうか?
除算方程式に無尽蔵の剰余がある場合、モジュロ演算子を使用して剰余を取得できます。
のように:
int numA = 10;
int numB = 3;
System.out.ptintln(numA % numB);
モジュロ演算子の魅力を感じられない場合は、奇数と偶数を決定するために使用してみてはいかがでしょうか。
5.2.2 モジュロ演算子を使用して奇数と偶数を判断する
int num = 10;
if(num % 2 ==0){
System.out.println("您选择的数字是一个偶数!");
}else{
System.out.println("您选择了一个奇数~");
}
ここで使用するif分岐文については後ほど詳しく紹介します!
プログラムの実行結果を見てみましょう。
5.3 演算子の簡略化
簡素化された演算子は、*=、/=、+=、-=、%=、++、– などのユーザーの記述を簡素化します。
5.3.1 四則演算の簡略化された演算子
//设置变量
int numA = 10;
System.out.println("乘等于:"+(numA*=2));
使用方法は似ていますが、コードでは乗算の簡略化された演算子のみを示します。実行結果を読んだ後、より重要なインクリメント演算子とデクリメント演算子に直接ジャンプします。
5.3.2 インクリメント演算子とデクリメント演算子
++ と -- は自己増加型と自己減少型と呼ばれます。この演算子がどこに設定されているかに応じて、実行順序も異なります。
例として自動インクリメント演算子を取り上げます。
変数の後にインクリメント演算子を設定します。
int num =1;
num++;
System.out.println(num);
ここでは、変数が設定され、次に変数がインクリメントされ、最後に変数が出力されます。結果は 1 ずつインクリメントされるため 2 になります。
しかし、この変数がいつどのように増加するか知っていますか?
わかりやすく説明するためにコードを変更します。
int num =1;
System.out.println(num++);
System.out.println(num);
変数の初期値は 1 に設定されます。最初の印刷データには ++ 演算が定義されていますが、変数の後に ++ を記述すると ++ 演算も行われるため、出力時に値は ++ されません。実行が完了した後。プログラムの実行結果を確認することができます。
プログラム結果の実行図:
演算子が変数の前に書かれたらどうなるでしょうか?
自己減分演算子を使用してテストしています。
int num = 5;
--num;
System.out.println(num);
プログラムの実行結果は次のようになります。
それでは、いつ自己減少作用を完了したのでしょうか?
//同上述自增测试思路相同
int num = 5;
System.out.println(--num);
System.out.println(num);
ステートメントが実行されると、デクリメントアクションが完了していることがわかります。
5.4 三項演算子
三項演算子は三項演算子とも呼ばれます。これは代入の一種であり、この演算子を実行すると、ブール式の結果を代入できます。
基本的な構文:
数据类型 变量 = 布尔表达 ? 设置满足条件所执行的内容 : 设置不满足条件时所执行的内容;
具体的な例としては以下のようなものがあります。
//定义变量,存储整数
int numA = 10;
//定义变量,存储第二个整数
int numB = 20;
//定义三目运算符,条件设置为 两个变量的大小比较
//如果第一个变量的值大于第二个变量,则输出第一个变量存储的值
//否则,与其相反。切记还要定义变量进行接收。
int max = numA > numB ? numA : numB;
//输出存储三元运算符表达式的变量
System.out.println(max);
結果は次のように表示されます。
5.5 論理演算子
論理演算には 3 種類あります:
AND (複数の条件が同時に満たされる)
または (複数の条件のうち 1 つだけが満たされる)
NOT (値を否定する効果を得るには「!」演算を使用します)
5.5.1 「!」の使用
値を否定する効果。たとえば、結果が true の場合、結果は false になります。結果が false の場合は、true を取得します。
boolean flag = true; //第一个标志为true值
System.out.println(!flag); //输出时利用 '!' 进行取反
プログラムの実行結果:
5.5.2 プレーン「&」と短絡「&&」
通常の AND と短絡 AND の文法上の違いは、通常の AND では & を 1 つ記述する必要があるのに対し、短絡 AND では && を 2 つ記述する必要があることです。機能の実際の違いは、次のコード例で示されています。
普通&:
if ((1 == 2) & (10 / 0 == 0)){
System.out.println("HelloWorld!");
}
プログラムの実行結果:
プログラムの実行後にエラー メッセージが表示されました。数学では、ゼロは無意味であるため、約数として使用できないことが知られています。さらに重要なことには!: 通常の AND 演算を使用しました。最初の条件の直接の結果が false の場合、短絡効果はありませんが、後続の条件文は引き続き実行されます。通常を使用し、設定されたすべての条件文が実行された後にのみ結果を返します。そうだよ、これが普通だし!
つまり
、条件値が false の場合、その結果はすでに false になります。ただし、短絡効果はなく、設定されたすべての条件文が実行された後にのみ結果が返されます。
短絡の影響に関する作業は、短絡の責任であり、次のとおりです。
if ((1 == 2) && (10 / 0 == 0)){
System.out.println("HelloWorld!");
}
結果は出力されませんが、エラー メッセージは報告されません。最初の結果が false の場合、結果も false になることが運命づけられており、後続のステートメントは短絡されるためです。
5.5.3 または
OR演算は複数の条件をまとめて判定するもので、いずれかの結果値がtrueを返せば結果はtrueとなります。すべての結果が false の場合にのみ false が返されます。
もしくはシングル|
とダブルの2種類があります||
通常または:
if ((1 == 1) | (10 / 0 == 0)){
System.out.println("HelloWorld!");
}
結果:
通常の or の関数は、1 が true であるにもかかわらず、結果は true になります。条件がすべて false の場合、結果は false になりますが、プログラムではエラーが発生しますが、ご想像のとおり、効果は通常と同じであり、ショート効果はありません。
一方、短絡または:
if ((1 == 1) || (10 / 0 == 0)){
System.out.println("HelloWorld!");
}
本当に素晴らしい!!実際にHelloWorld!を出力してみます。
短絡と短絡または短絡効果は両方ともあるようですが、正常と普通または短絡効果はありません。
短絡 AND の機能は、すべての条件が true の場合にのみ結果が true になることです。
短絡または効果は、すべての条件の 1 つが true の場合、結果が true として返されることです。すべて false は false を返します。
5.6ビット演算子
ビット演算子は、基礎となるバイナリ データを操作します。ビット演算子には、&、|、^、>>、<<、>>> が含まれます。
ここでの内容は根底に関わるものなので、言葉でわかりやすく伝えたい場合は、たくさんの本を読んでわかりやすく伝える必要があります。
ここではほんの一例を示します。
要件により 2 * 2 * 2 の値をできるだけ早く計算できる場合。あなたは何をしますか?
直接 Sysmte.out.println(2 * 2 * 2); ? いいえ!!! その場合、コンピューターはまず計算のために 10 進数の 2 を 2 進数に変換し、次に出力のために結果を 10 進数に変換する必要があります。コンピューターの世界はバイナリ言語であることを忘れないでください。
より高速な方法が必要な場合は、ビットごとの演算子を使用できます
int num = 2;
System.out.println(num <<2);
このコードは、コンピュータのビット単位のデータ ストレージ メカニズムを使用してビットを直接操作し、ビット上のデータを 2 つずつ左に移動します。結果は次のようになります。基数間の変換を省き、データを直接ビット単位で移動して結果を出力するため効率が高い。
プログラムの実行結果: