今日の内容
データ型変換
算術演算子
比較演算子
論理演算子
三項演算子
簡単なメソッド定義と呼び出し
教育目的
データ型の強制を理解する
データ型の自動変換を理解する
ASCIIコード表を理解する
理解int类型和char类型的运算原理
理解运算符++ - -的运算方式
理解+符号在字符串中的作用
理解比较运算符
理解逻辑运算符
掌握三元运算符的格式和计算结果
了解方法的概念
掌握无返回值无参数方法的定义格式
了解方法定义的注意事项
第1章データ型変換
Javaプログラムの計算に参加するために必要なデータは、データ型の一貫性を保証する必要があります。データ型が一貫していない場合、型変換が行われます。
1. 1自動変換
int型変数とbyte型変数が追加されますが、結果はどのようなデータ型になりますか?
操作の結果、変数の型はint型になります。これは、データ型の自動型変換の現象です。
自动转换:将取值范围小的类型自动提升为取值范围大的类型 。
int i = 1 ;
byte b = 2 ;
変換原理図
バイト型メモリは1バイトを占有し、int型で操作するとint型に昇格し、自動的に3バイト加算されるため、計算結果はint
型のままです。
同様に、int型の変数がdouble型の変数で演算されると、int型は自動的にdouble型に昇格して演算されます。
変換ルール
範囲が狭い型は範囲が広い型に昇格され、byte、short、charの各操作は直接intに昇格されます。
1. 2強制変換
public static void main(String[] args) {
int i = 1 ;
byte b = 2 ;
// byte x = b + i; // 报错
//int类型和byte类型运算,结果是int类型
int j = b + i;
System.out.println(j);
}
public static void main(String[] args) {
int i = 1 ;
double d = 2. 5 ;
//int类型和double类型运算,结果是double类型
//int类型会提升为double类型
double e = d+i;
System.out.println(e);
}
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
1. 2強制変換
int型の変数に1.5を割り当てるとどうなりますか?コンパイルの失敗が発生したため、割り当てないでください。
double型は8バイトで、int型は4バイトです。1. 5はdouble型であり、値の範囲はintより大きい。doubleは8
リットルのケトル、intは4リットルのケトルであると理解できますが、大きなケトルの水を小さなケトルに直接入れることはできません。
割り当てを成功させるには、型変換によってdouble型をint型にキャストする場合にのみ、値を割り当てることができます。
强制类型转换:将取值范围大的类型强制转换成取值范围小的类型。
対照的に、自動変換はJavaによって自動的に実行されますが、強制変換では手動で実行する必要があります。
変換フォーマット:
1.5をint型に割り当て、コードを次のように変更します。
同様に、short型が1に追加されると、型が昇格されることがわかりますが、結果をshort型変数に割り当てる場合は、キャストする必要があります。
変換原理図
int i = 1. 5 ; // 错误
データ型変数名=(データ型)転送されたデータ値。
// double类型数据强制转成int类型,直接去掉小数点。
int i = (int) 1. 5 ;
public static void main(String[] args) {
//short类型变量,内存中 2 个字节
short s = 1 ;
/*
出现编译失败
s和 1 做运算的时候, 1 是int类型,s会被提升为int类型
s+ 1 后的结果是int类型,将结果在赋值会short类型时发生错误
short内存 2 个字节,int类型 4 个字节
必须将int强制转成short才能完成赋值
*/
s = s + 1 ;//编译失败
s = (short)(s+ 1 );//编译成功
}
強い注意
浮動小数点は整数に変換され、小数点は直接取り消されるため、データの精度が失われる可能性があります。
int 强制转成short 砍掉 2 个字节,可能造成数据丢失。
1. 3 ASCIIコードテーブル
コンピューターの内部にはバイナリの0と1のデータがありますが、コンピューターはどのようにして直接人間のキャラクターを認識できますか?コーディングテーブルのコンセプトが生まれました。
コーディングテーブル:対応する人間のキャラクターと10進数でテーブルを作ることです。
// 定义s为short范围内最大值
short s = 32767 ;
// 运算后,强制转换,砍掉 2 个字节后会出现不确定的结果
s = (short)(s + 10 );
public static void main(String[] args) {
//字符类型变量
char c = 'a';
int i = 1 ;
//字符类型和int类型计算
System.out.println(c+i);//输出结果是 98
}
算術演算子には次のものがあります。
+加算演算、文字列連結演算
-減算演算
*乗算
/除算
%モジュロ演算、2つの数値を除算して剰余を取得
++、-操作の増加と減少
文字値
0 48
9 57
A 65
90から
a 97
z 122
人々は規定する:
10進表記のすべての英字、数字、記号に対応した、世界初のエンコードテーブルASCII(
American Standard Code for Information Interchange 美国标准信息交换码)。
小贴士:
在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到 97 ,再和 1 求和,结果为 98 。char类型提升
为了int类型。char类型内存 2 个字节,int类型内存 4 个字节。
第2章オペレーター
2. 1算術演算子
Javaでは、整数は上記の演算子を使用します。どのように計算されても、小数は取得されません。
++操作、変数は1ずつ増加します。逆に、-演算、変数は1減らされます。使用法は++と一貫しています。
独立した操作:
変数が独立して操作される場合、フロント++とバック++の間に違いはありません。
变量前++ :例如 ++i 。
变量后++ :例如 i++ 。
public static void main(String[] args) {
int i = 1234 ;
System.out.println(i/ 1000 * 1000 );//计算结果是 1000
}
代入演算子には次のものがあります。
=等号
+ =プラス
-=等しい
* =等しい
/ =割り算
%=モジュロなど
混合操作:
他の変数と一緒に置くと、フロント++とバック++は異なります。
变量前++ :变量a自己加 1 ,将加 1 后的结果赋值给b,也就是说a先计算。a和b的结果都是 2 。
变量后++ :变量a先把自己的值 1 ,赋值给变量b,此时变量b的值就是 1 ,变量a自己再加 1 。a的结果是 2 ,b
的结果是 1 。
文字列内の+記号の操作:
+記号は、文字列に遭遇したときの接続とスプライシングの意味を示します。
"a"+"b"的结果是“ab”,连接含义
2. 2代入演算子
代入演算子は、シンボルの右側の値を左側の変数に代入することです。
2. 3つの比較演算子
public static void main(String[] args) {
int a = 1 ;
int b = ++a;
System.out.println(a);//计算结果是 2
System.out.println(b);//计算结果是 2
}
public static void main(String[] args) {
int a = 1 ;
int b = a++;
System.out.println(a);//计算结果是 2
System.out.println(b);//计算结果是 1
}
public static void main(String[] args){
System.out.println(" 5 + 5 ="+ 5 + 5 );//输出 5 + 5 = 55
}
public static void main(String[] args){
int i = 5 ;
i+= 5 ;//计算方式 i=i+ 5 变量i先加 5 ,再赋值变量i
System.out.println(i); //输出结果是 10
}
比較演算子は次のとおりです。
== 比较符号两边数据是否相等,相等结果是true。
< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
> 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<= 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。
>= 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。
!= 不等于符号 ,如果符号两边的数据不相等,结果是true。
論理演算子には次のものがあります。
&&ショートサーキット
1. 两边都是true,结果是true
2. 一边是false,结果是false
短路特点:符号左边是false,右边不再运算
||短絡または
1. 两边都是false,结果是false
2. 一边是true,结果是true
短路特点: 符号左边是true,右边不再运算
!否定する
1.! true 结果是false
2.! false结果是true
2. 3つの比較演算子
比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false 。
2. 4つの論理演算子
逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true或者false
public static void main(String[] args) {
System.out.println( 1 == 1 );//true
System.out.println( 1 < 2 );//true
System.out.println( 3 > 4 );//false
System.out.println( 3 <= 4 );//true
System.out.println( 3 >= 4 );//false
System.out.println( 3 != 4 );//true
}
2. 5三項演算子
三項演算子の形式:
三項演算子の計算方法:
布尔类型表达式结果是true,三元运算符整体结果为结果 1 ,赋值给变量。
布尔类型表达式结果是false,三元运算符整体结果为结果 2 ,赋值给变量。
第3章メソッドの概要
3. 1概要
演算子を学習するときは、各演算子の新しいクラスとメインメソッドを個別に作成します。このようなコードを記述するのは非常に面倒で、
コードの繰り返しが多すぎることがわかります。これらの重複コードを回避できますか?これはメソッドによって実現する必要があります。
方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
この関数が必要なときに呼び出すことができます。このようにして、コードの再利用性が実現され、コードの冗長性の現象も解決されます。
3. 2メソッドの定義
定義フォーマット:
定義フォーマットの説明:
修饰符: 目前固定写法 public static 。
public static void main(String[] args) {
System.out.println(true && true);//true
System.out.println(true && false);//false
System.out.println(false && true);//false,右边不计算
System.out.println(false || false);//falase
System.out.println(false || true);//true
System.out.println(true || false);//true,右边不计算
System.out.println(!false);//true
}
データ型変数名=ブール型式?結果1:結果2
public static void main(String[] args) {
int i = ( 1 == 2 ? 100 : 200 );
System.out.println(i);// 200
int j = ( 3 <= 4 ? 500 : 600 );
System.out.println(j);// 500
}
修飾子の戻り値のタイプメソッド名(パラメーターリスト){
コード...
return ;
}
返回值类型: 目前固定写法 void ,其他返回值类型在后面的课程讲解。
方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。
参数列表: 目前无参数, 带有参数的方法在后面的课程讲解。
return:方法结束。因为返回值类型是void,方法大括号内的return可以不写。
举例:
3. 3メソッド呼び出し
メソッドが定義された後、メソッドはそれ自体では実行されないため、実行するにはコールする必要があります。メインメソッドmainで自分で定義したメソッドを呼び出すことができます。では
mainメソッドは、単にそれを呼び出すために呼び出されるメソッドの名前を書きます。
3. 4コール演習
三項演算子コードをカスタムメソッドに抽出して呼び出します。
3.5ノート
メソッド定義に関する注意:
メソッドはクラスのメソッドの外で定義する必要があります
メソッドは別のメソッドで定義できません
public static void methodName() {
System.out.println("这是一个方法");
}
public static void main(String[] args) {
//调用定义的方法method
method();
}
//定义方法,被main方法调用
public static void method() {
System.out.println("自己定义的方法,需要被main调用运行");
}
public static void main(String[] args) {
//调用定义的方法operator
operator();
}
//定义方法,方法中定义三元运算符
public static void operator() {
int i = 0 ;
i = ( 1 == 2 ? 100 : 200 );
System.out.println(i);
int j = 0 ;
j = ( 3 <= 4 ? 500 : 600 );
System.out.println(j);
}
第4章JShellスクリプトツール
JShellスクリプトツールはJDK 9の新機能です
JShellツールはいつ使用されますか?コードをほとんど書かないが、クラス、メインメソッドを作成したくない、またはコンパイルして実行したくない
場合は、現時点でJShellツールを使用できます。
JShellツールを起動し、DOSコマンドラインで直接JShellコマンドを入力します。
次に、Javaコードを記述できます。クラスやメソッドを記述する必要はありません。メソッドにコードを記述するだけで、コンパイルして実行する必要はありません。Enterキーを押すだけです。
public class Demo {
public static void main(String[] args){
}
//正确写法,类中,main方法外面可以定义方法
public static void method(){}
}
public class Demo {
public static void main(String[] args){
//错误写法,一个方法不能定义在另一方法内部
public static void method(){}
}
}
チップ:
JShell工具,只适合片段代码的测试,开发更多内容,建议编写在方法中。
第5章知識ポイントの拡大
5. 1 + =符号拡張
次のプログラムに問題はありますか?
分析:s + = 1は論理的にs = s + 1と見なされます。計算結果がint型にプロモートされ、値の範囲が
大きい型を値の範囲が小さい型に割り当てることができないため、short型に値を割り当てるときにエラーが発生します。 。ただし、s = s + 1は2つの演算を実行します。+ =は演算子であり、1つの演算のみであり、強制変換の特性があり
ます。つまり、s + = 1はs =(short)(s + 1)なので、プログラムは問題なくコンパイルおよび通過し、実行結果は2です。
5. 2定数と変数の操作
次のプログラムに問題はありますか?
public static void main(String[] args){
short s = 1 ;
s+= 1 ;
System.out.println(s);
}
分析:b 3 = 1 + 2、1、2は固定データの定数であり、コンパイル時(javacコンパイラー)、1 + 2は
タイプのバイト範囲を超えていなかったとの結果が決定されました、変数b 3に割り当てることができるため、b 3 = 1 + 2が正しい。
逆に、b 4 = b 2 + b 3、b 2 およびb 3は変数であり、変数の値の変更は可能です。コンパイル時に、コンパイラーjavac不定b 2 + b 3はその結果です
。したがって、結果はint型として処理されるため、int型をバイト型に割り当てることができないため、コンパイルは失敗します。
jshellに反映:
public static void main(String[] args){
byte b 1 = 1 ;
byte b 2 = 2 ;
byte b 3 = 1 + 2 ;
byte b 4 =b 1 + b 2 ;
System.out.println(b 3 );
System.out.println(b 4 );
}