目次
Java言語の基本
1. 変数の概念
変数はコンピュータ メモリ内の記憶領域であり、データを保存するための基本単位です。
要素:
データ型は、保存できるコンテンツの範囲を定義するために使用されます。
変数名は操作対象のコンテンツを見つけるために使用されます。
value、保存された最終コンテンツ。
隠し要素: アドレス、
2. 変数の定義と使用
1. 最初に宣言してから値を割り当てます
public class Test1 {
public static void main(String[] args) {
// 先声明
int num; // int类型,整数,num变量名
// 后赋值,使用=作为赋值符号
num = 5;
// 打印变量中的值
System.out.println(num);
}
}
注: Java は厳密に型指定された言語であり、変数の型は割り当てられた値の型と一致している必要があります。
2. 宣言時に値を代入する
public class Test1 {
public static void main(String[] args) {
// 声明的同时赋值
int num1 = 10;
// 打印变量中的值
System.out.println(num1);
}
}
3. 同じ型の複数の変数の宣言と代入が同時に行われます (非推奨)
public class Test1 {
public static void main(String[] args) {
// 多个变量同时声明并赋值(不推荐使用)
int n1 = 3, n2 = 5, n3 = 7, n4 = 9;
System.out.println(n1);
System.out.println(n3);
}
}
3. データ型
3.1 概要
Java は厳密に型指定された言語です。
タイプは、次の 2 つの大きなカテゴリに分類されます。
基本的なデータ型
整数
10進数
ブール値
キャラクター
参照データ型
弦
配列
カスタム型とシステム定義型
3.2 基本的なデータ型
3.2.1 整数
byte: バイト型、1バイト、-128~127、-2^7~2^7-1
short:short型、2バイト、-32768~32767、-2^15~2^15-1
int:int型、4バイト、-2147483648~2147483647、-2^31~2^31-1
long:long型、8バイト、-2^63~2^63-1
// 整数类型
public class Test1 {
public static void main(String[] args) {
// byte类型,1字节,-128 ~ 127,-2^7 ~ 2^7-1
byte num = -128;
System.out.println(num);
// short类型,2字节,-32768 ~ 32767,-2^15 ~ 2^15-1
short num2 = 32767;
System.out.println(num2);
// int类型,4字节,-2147483648 ~ 2147483647,-2^31 ~ 2^31-1
int num3 = 2147483647;
System.out.println(num3);
// long类型,8字节,-2^63 ~ 2^63-1
long num4 = 9223372036854775807L;
System.out.println(num4);
// 注意:程序中直接使用的整数默认为int类型,
// 所以当需要写一个长整形时需要在数字的最后加一个字母L(大小写均可)
}
}
注:プログラム内で直接使用される整数はデフォルトで int 型であるため、長整数を記述する必要がある場合は、数値の末尾に文字 L を追加する必要があります (大文字と小文字の両方)。
3.2.2 小数(浮動小数点数)
float:単精度浮動小数点数、4バイト、負の数の範囲:-3.4E38~-1.4E-45、正の数の範囲:1.4E-45~3.4E38
double:倍精度浮動小数点数、8バイト、負の数の範囲:-1.7E308~-4.9E-324、正の数の範囲:4.9E-324~1.7E308
// 小数类型
public class Test2 {
public static void main(String[] args) {
// float,单精度浮点数,4个字节, 负数的范围:-3.4E38~-1.4E-45,正数范围:1.4E-45~3.4E38
float f1 = 34795.9375678F;
System.out.println(f1);
// double,双精度浮点数,8个字节,负数的范围:-1.7E308~-4.9E-324,正数范围:4.9E-324~1.7E308
double d1 = 3.1415926535897932384626;
System.out.println(d1);
// 浮点数不精确
System.out.println(1.0-0.9);
// 注意:小数默认是double,如果要定义一个float,需要在数字最后加上字母F(大小写均可)
}
}
デフォルトの 10 進数値は double です。float を定義したい場合は、数値の末尾に文字 F を追加する必要があります (大文字と小文字の両方)。
浮動小数点演算は正確ではありません
float は long よりも範囲が広い
3.2.3 ブール値
boolean: ブール型、ブール値、2 つの値、true または false、1 バイト
// 布尔类型
public class Test3 {
public static void main(String[] args) {
// 布尔类型,boolean,两个值,真true或假false,1个字节
boolean b = true;
b = false;
b = 5 > 3; // 用表达式赋值
System.out.println(b);
// 注意:boolean类型不能参与运算,不能转换成其他类型
}
}
注:ブール型は演算に参加できず、他の型に変換できません。
3.2.4 キャラクター
文字エンコーディング、文字セット:
ASCII: American Standard Information Interchange Code、1 バイト。下位ビットは英数字を表し、上位ビットはタブ文字を表します。
GB2312: 簡体字中国語。2 バイトを使用し、上位ビットの一部を使用します。
GBK: 簡体字中国語。GB2312 よりも幅が広く、2 バイトを使用し、上位ビットのほとんどを使用します。
GB18030 はより広範囲の中国語をカバーしており、少数民族の文字も含まれています。
Unicode: Java で文字を表すために 2 バイトを使用するユニバーサル コード。
UTF-8: 統一された送信フォーマット。英語を表すのに 1 バイトを使用し、他の各国文字を表すのに 3 ~ 4 バイトを使用します。
注:文字化けの原因は、入力文字エンコーディングと出力エンコーディングが一致していないことです。
// 字符类型
public class Test4 {
public static void main(String[] args) {
// 字符类型,2个字节,万国码,使用单引号表示,可以作为数字表示,范围为0~65535
char ch = 'A';
int n = 'A';
char ch1 = 65; // 字符A
System.out.println(ch);
char ch2 = '中';
// \\u表示万国码
char ch3 = '\u4f01';
System.out.println(ch3);
}
}
エスケープ文字:
\n
改行
\t
タブ文字
\\
を表します\
\'
一重引用符を表します
\"
二重引用符を表します
// 字符类型
public class Test4 {
public static void main(String[] args) {
// 转义字符,
char ch5 = '\n'; // 换行
System.out.print(ch5);
char ch4 = '\'';
System.out.println(ch4);
char ch6 = '\t';
char ch7 = 'a';
System.out.print(ch6);
System.out.print(ch7);
}
}
3.3 参照データ型
すべての非基本データ型は参照データ型と呼ばれます。例: 文字列、配列、カスタム タイプなど。
文字列型はシステムに付属する型で、複数の文字で構成でき、二重引用符で囲みます。
// 字符串类型
public class Test5 {
public static void main(String[] args) {
// 字符串,可以由多个字符组成,使用双引号,内容长度可以为0或者多个
String str = "Hello world";
char ch = 'n';
System.out.println(str);
}
}
4. 型変換
1. 自動型変換
互換性のあるタイプ
ターゲット タイプの範囲がソース タイプよりも大きい
2. 強制型変換
互換性のあるタイプ
ターゲット タイプの範囲がソース タイプより小さい
// 自动类型转换
public class Test6 {
public static void main(String[] args) {
// 整数的类型转换
short sh = 234;
// 将sh变量中的值赋值给变量n
int n = sh; // 自动类型转换
System.out.println(n);
byte b = 120;
short s1 = b;
long l = n;
char ch = 'B';
int n1 = ch;
}
}
// 强制类型转换
public class Test7 {
public static void main(String[] args) {
// 整数的类型转换
int n = -129;
// 强制类型转换,如果该值能够存入对应的类型,则无损存入,
// 如果超出范围,则会进入一个环,超出最大值变为最小值,超出最小值变为最大值
byte b = (byte)n; // 结果为127
System.out.println(b);
}
}
整数と小数の間で変換します。
// 类型转换
public class Test8 {
public static void main(String[] args) {
// 整数和小数的转换
// 将整数放入到小数中,自动类型转换
long l = 3472393742942342347L;
float f = l;
System.out.println(f);
// 将小数放入到整数中,强制类型转换
double d = 3.54;
int n = (int) d;
System.out.println(n);
}
}
5. オペレーター
5.1 算術演算子
加算、減算、乗算、除算、剰余
注:整数を整数で割った結果も整数です。余りは小数や負の数などを使用して計算できます。
// 算术运算符
public class Test9 {
public static void main(String[] args) {
// +
int n = 5 + 3 + 2; // 将5+3的结果赋值到n中
System.out.println(n);
// 注意:+还可以用来做字符串拼接
String str = "hello";
String str1 = "world";
String str2 = str + str1;
System.out.println(str2);
System.out.println("hello, " + "world" + "!!!");
System.out.println(str + ",tom");
System.out.println(str + n); // 所有的类型与字符串相加,都是拼接
// -
int n1 = 10 - 4;
System.out.println(n1);
// *
int n2 = 6 * 6 * 6;
System.out.println(n2);
// /
// 注意:在Java中整数除以整数,结果仍是整数
int n3 = 5 / 2; // 除
System.out.println(n3); // 结果为2
// 求余 %,优先级与乘除一样
int n4 = 10 % 3;
System.out.println(n4);
double d1 = 4.8 % 2.2;
System.out.println(d1);
int n5 = -10 % 3;
System.out.println(n5);
int n6 = 10 % -3;
System.out.println(n6);
int n7 = -10 % -3;
System.out.println(n7);
}
}
5.2 単項演算子(単項演算子)
これは、使用できる変数は 1 つだけであることを意味します。
++:1ずつ増加
--: 1減少
// 单目运算符
public class Test10 {
public static void main(String[] args) {
// ++,自增1
int n1 = 5;
n1++;
System.out.println(n1);
int n2 = 5;
++n2;
System.out.println(n2);
// --,自减1
int n3 = 5;
n3--;
System.out.println(n3);
int n4 = 5;
--n4;
System.out.println(n4);
int m1 = 5;
// ++ 如果在后面,先将值拿出用来参与运算,后自增1
int m2 = m1++ + 5;
// ++ 如果在前面,先自增1,后将结果拿出用来参与运算
// int m2 = ++m1 + 5;
System.out.println(m2);
System.out.println(m1);
int m3 = 5;
// m4 = 5 + 6 + 7;
// int m4 = m3++ + m3++ + m3++;
// m4 = 5 + 6 + 5 + 6 + 5;
// int m4 = m3++ + m3-- + m3++ + m3-- + m3++;
// m4 = 5 + 6 + 6 + 6 + 5;
int m4 = m3++ + m3-- + (++m3 + m3--) + m3++;
System.out.println(m4);
System.out.println(m3);
}
}
5.3 代入演算子
最初に計算し、後で割り当てます
// 赋值运算符
public class Test11 {
public static void main(String[] args) {
// =
int n = 5;
n += 6; // 等同于n = n + 6;
System.out.println(n);
int m = 6;
m++; // 自增1,相当于m = m + 1;
m+=2; // 自增2
int m1 = 4;
m1 -= 5; // 自减5,相当于m1 = m1 - 5;
int m2 = 6;
m2 *= 3; // 相当于m2 = m2 * 3;
int m3 = 3;
m3 /= 2; // 相当于m3 = m3 / 3;
System.out.println(m3);
int m4 = 6;
m4 %= 4; // 相当于m4 = m4 % 4;
System.out.println(m4);
// b++和b+=1会隐式类型转换,而b=b+1需要强制类型转换
byte b = 127;
// b++; 与 b += 1; b = b + 1;
b++;
System.out.println(b);
}
}
バイト b = 1;
b++; と b = b + 1; の違いは何ですか?
回答: b++ と b+=1 は暗黙的な型変換を実行しますが、b=b+1 は強制的な型変換を必要とし、そうでない場合はエラーが報告されます。
5.4 関係演算子
==等しい、等しくない!=
boolean b3 = 10 > n2 > 5; // コードエラー、連続比較は実行できません
// 关系运算符
public class Test12 {
public static void main(String[] args) {
// >、<、>=、<=与数学中一样
boolean b = 5 >= 3;
System.out.println(b);
int n = 5;
boolean b1 = n == 5; // 等于
System.out.println(b1);
boolean b2 = n != 5; // 不等于
System.out.println(b2);
int n2 = 7;
// 注意:==等于,不等于是!=,
// boolean b3 = 10 > n2 > 5; // 不能连续比较
}
}
5.5 論理演算子
// 逻辑运算符
public class Test13 {
public static void main(String[] args) {
// and
int n = 7;
boolean b = n > 5 && n < 10; // 并且,两个条件同时成立
System.out.println(b);
// boolean b1 = n > 5;
// boolean b2 = n < 10;
// boolean b3 = b1 && b2;
boolean b1 = n > 5 || n < 7; // 或者,两个条件有一个成立即可
// 注意:&& 和 || 有短路的特征。
// 如果前面一个表达式能表示整个结果,那么后面的表达式不会执行判断
// & 和 | 计算结果与&&和||相同,但是无论如何都会计算两边的表达式的结果
int n1 = 5;
boolean b2 = n1 > 3 || n1 / 0 == 3; // 只用|,会计算两边,代码会报错,使用||,代码不会报错,后面的不会计算
System.out.println(b2);
boolean b3 = !(n1 > 3);
System.out.println(b3);
// 用来进行算术运算
int n2 = 5 & 3;
System.out.println(n2);
}
}
&& と & (|| と |) の違いは何ですか?
答え:
&& と || には短絡特性があります。前の式で結果全体を表現できる場合、後の式では & と | の判定は行わず、計算結果は && と || と同じになりますが、両辺の式の結果が計算されます。
&& と || は論理演算としてのみ使用できますが、& と | は算術演算としても使用できます。
5.6 三項演算子
構文: ブール式? 結果 1: 結果 2
ブール式が true の場合は結果 1 を返し、そうでない場合は結果 2 を返します。
// 三目(三元)运算符
public class Test14 {
public static void main(String[] args) {
// ? :
// 布尔表达式?结果1:结果2
// 当布尔表达式为true时,返回结果1,否则返回结果2
int hp = 250;
String str = hp > 200 ? "撤退" : "越塔强杀";
System.out.println(str);
int n = hp < 100 ? 3 : 2;
System.out.println(n);
}
}
6. 表現
式: 結果を計算できる操作によって接続される変数またはリテラル値ですが、独立したコード行ではありません。
例: n > 5、a + b
7. 複数種類の混合演算の結果の型
基本データが演算に参加する場合、結果は最大範囲の変数タイプになります。
複数のオペランドの型が byte または short の場合、結果は int になります。
注: 4 つの混合操作の順序にも従います。剰余の優先順位を求めることは、乗算と除算と同じです。
文字列を + とともに使用すると、結果は文字列になります。
// 混合运算
public class Test15 {
public static void main(String[] args) {
double d = 5 / 2; // 2.0
System.out.println(d);
System.out.println("结果为:" + 5 + 2); // 结果为:52
System.out.println("hello, " + 'A' + 1); // hello, A1
}
}
8. コンソール入力
コンソール入力を受信します。
import java.util.Scanner;
// 控制台输入
public class Test16 {
public static void main(String[] args) {
// 创建一个控制台扫描对象,用来接收控制台的输入
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
// nextLine()上面不能有接收整数
// next()不识别空格
String str = input.nextLine();
System.out.println(str);
System.out.println("请输入第一个整数:");
// 接收输入的整数
int n1 = input.nextInt();
System.out.println("请输入第二个整数:");
int n2 = input.nextInt();
System.out.println("结果为:" + (n1 + n2));
}
}