目次
3.バグ解決策:Welcome.java:6:エラー:GBKをエンコードするマップされていない文字
4.ブールboolean_ifステートメントの使用ポイント_booleanはスペースの問題を占有します
2年生の頃はなじみがありましたが、やっぱり久しぶりなので、またやったほうがいいです。結局、体系的に勉強しなければなりません。もちろん、あまり詳細ではありません。
1.コメント(1行、複数行、ドキュメント)
// 1行コメント
/ *複数行
コメント* /(複数行のコメントを有効なコードの間に配置することもできます)
ドキュメントノート:
ドキュメントのコメントは「/ **」で始まり、「* /」で終わります。コメントには、説明テキストとJavaDocタグが含まれています(後でプロジェクトを作成するときに、プロジェクトのAPIを生成できます)-後で説明します
/**
* test 文档注释
* @author 深海鱼肝油
* @version 1.0
*/
public class Welcome {
public static void main(String[] args /*参数名称,可变*/){
//单行注释
System.out.println("hello world!");
}
}
/*
多行啊
百无聊赖啊
*/
2.Identifier_Keyword_Humpの原則
識別子の命名規則:
識別子は、文字、アンダースコア、ドル記号$で始まる必要があります。
識別子の他の部分は、文字、アンダースコアの
ドル記号「$」、および数字の任意の組み合わせにすることができます。
Java識別子は大文字と小文字が区別され、長さに制限はありません。
識別子をJavaキーワードにすることはできません。
Javaは、通常の言語で使用されるASCII文字セットを使用しませんが、Unicodeなどの標準の国際文字セットを使用します。したがって、ここでの文字の意味は、英語だけでなく漢字などでもあります。ただし、識別子を定義するために漢字を使用することはお勧めしません。
ASCII文字セットは1バイトを使用して文字を表すため、2 ^ 8 = 256文字のみですが、Unicode文字セットは2バイトを使用して1文字を表すため、2 ^ 16 = 65536文字です。
例えば:
public class Welcome {
public static void main(String[] args /*参数名称,可变*/){
int 随便=123;//java用的是Unicode字符集,所以汉字可以作为变量名称
int abc=12;
int $salary=3500;
int _year=2021;
System.out.println("hello world!");
}
}
クラス名を表す識別子:Manなど、各単語の最初の文字は大文字です。GoodMan
はメソッドと変数の識別子を表します。最初の単語は小文字で、2番目の単語の最初の文字は大文字です。これを「キャメルケースの原則 ""、eat()、eatFood()など
3.バグ解決策:Welcome.java:6:エラー:GBKをエンコードするマップされていない文字
コマンドラインでjavacファイル名を使用してコンパイルすると、エンコードエラーが報告され、コマンドラインはローカルオペレーティングシステムのエンコードを使用するため、アイデアの下でGBKエンコードに変換されます。
右下隅でGBKタイプに変換します。
もちろん、コードがメモ帳またはメモ帳で記述されていない限り、コマンドラインは通常コンパイルには使用されません。。
4.定数定数
finalで変更すると定数になり、割り当て後に値を変更することはできません。変更しないと、エラーが報告されます。
5.データ型
C ++とは異なり、異なるコンパイラに対応するデータ型のバイト数はそれに応じて変更される可能性があります。Javaは固定されています。
変数を定義するときは、int i、j;のようにではなく、読みやすさを向上させるために1行ずつ定義することをお勧めします。
1.整数
byte1バイト、short2バイト、int4バイト、long8バイト
8進数:016などの先頭に0を追加します
16進数:0x16などの最初に0xまたは0Xを追加します
2進数:0b1000101などの最初に0bまたは0Bを追加します
また、長い型として宣言するには、Lまたはlが後に続く必要があります
例えば:
int a=100;
int b=5030303;
int c=05;//八进制
int d=0x15;//十六进制
int e=0b101011;//二进制
long f=5555555;
long f2=55555555555555L;//将整数常量定义为long类型
2.浮動小数点
小数は無限であるため、float4バイトとdouble8バイトは間違いなく十分ではありません。小数は無限であるため、多くの桁では不十分です。したがって、小数の格納にエラーがあります。
float型の値には接尾辞Fまたはfがあり、接尾辞F / fのない浮動小数点値はデフォルトでdouble型になります。浮動小数点値の後に接尾辞Dまたはdを追加して、それがdouble型であることを明確にすることもできます。
例えば:
コード:
double d1=3.14;
double d2=3.14e2;//科学计数法表示小数
System.out.println(d2);
//浮点数是不精确的,尽量不要直接进行比较
float d3=0.1F;
double d4=1.0/10;
System.out.println(d4);
System.out.println(d3==d4);
float f5=1234567412356L;//long转float
float f6=f5+1;//如果f5和f6都是整型性的话肯定不相等
System.out.println(f5==f6);
出力結果:
314.0
0.1
false
true
3.文字タイプ
文字のシリアル番号を表示するためにint型に変換できます:(int)c
Unicodeのエンコーディングは0〜65535で、通常は「\ u0000」から「\ uFFFF」までの16番目のメカニズムで表され、接頭辞uはUnicodeを意味します。
コード:
char c1='a';
char c2='中';
//也可以通过每个字符对应的编码来输出字符
char c3='\u0061';//0061的十六进制就是97
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//java中的字符串不是基本数据类型,而是一个独立定义的类
String str ="我爱中国";
System.out.println(str);
//转义字符
System.out.println("a\nb\nc\nd\te\tf\tg,\",\',\\");
出力結果:
a
中
a
我爱中国
a
b
c
d e f g,",',\
4.ブールboolean_ifステートメントの使用ポイント_booleanはスペースの問題を占有します
ブール型の数バイトの
説明:「Java仮想マシン仕様」という本の説明:「このブールデータ型は定義さ
れていますが、Java仮想マシンのサポートは非常に限定されていません。バイトコードはありません。
ブール値専用の命令。Java言語式によって操作されるブール値は、コンパイル後にJava仮想マシンのintデータ型に置き換えられ、ブール配列はJava
仮想マシンのバイト配列にエンコードされます。ブールの各要素要素は8ビットを占有します」。すなわち、そのうち、JVM仕様点と言うことであるブール整数として扱われる
4バイトであり、このように、我々は、boolean型4つの占有すると結論付けることができる。、およびブール配列をバイト配列として扱われる
バイトを単一の使用のため、および配列内の特定の単語です。セクション。
提案:
このように書かないでください:if(flag == true)、初心者だけがそれを書きます。キーはif(flag = true)が間違っていると書きやすいので、判断ではなくtrueにフラグが割り当てられます!ベテランの書き方はif(flag)またはif(!flag)です。
サンプルコード:
boolean b1=true;
boolean b2=false;
if (b1){
System.out.println("正确");
}
else{
System.out.println("错误");
}
Six。オペレーター
整数演算:
2つのオペランドのいずれかが長い場合、結果も長くなります。long
がない場合、結果はintになります。オペランドがすべてshort、byteであっても、結果はintになります。
例えば:
int a=5;
long b=7;
long c=a+b;//要用long类型来接受a与b的和,否则报错类型不兼容
浮動小数点演算:
2つのオペランドの一方がdoubleの場合、結果はdoubleになります。
両方のオペランドがfloatの場合のみ、結果はfloatになります。
モジュロ演算:
オペランドは浮動小数点数にすることができます。通常、整数が使用され、結果は「剰余」になります。「剰余」の符号は、左のオペランドの符号と同じです。たとえば、7%3 = 1、 -7%3 = -1、7%-3 = 1。
例えば:
int a=1;
Long b=2L;
boolean flag=b instanceof Long;//注意是Long(包装类)
System.out.println(flag);
long c=a+b;
System.out.println(c);
double d=31/3;//先31/3=10(整型运算),之后,再将10赋给double型
System.out.println(d);
出力:
true
3
10.0
関係:
&&、||コントラスト&、|は、前者が短絡である、つまり前半が条件を満たしていないこと、後半を読み取る必要がないことを意味します。
シフト:
int a=5<<2; //相当于5*2*2=20
System.out.println(a);
System.out.println(40>>3); //相当于40/2/2/2=8
文字列の連結:
String a="3";
int b=4;
System.out.println(a+b);
//条件是String,不是char,为char时,仍然是加号。不是连接符
char c1='h';
char c2='i';
System.out.println(c1+c2);
System.out.println(""+c1+c2);//通过加""+,将整个运算转化为字符串连接操作
出力:
34
209
hi
条件演算子:
int score=90;
String a=score<60?"不及格":"及格";
System.out.println(a);
優先度:
これらの優先順位を意図的に覚えておく必要はありません。式を整理するために括弧が優先されます!!
論理AND、論理OR、および論理NOTの優先順位はよく知っている必要があります!(論理NOT>論理AND>論理名声)。例:
allb&cの演算結果は:al(b&c)であり、(alb)&cではありません
自動型変換:
自動型変換とは、次の図に示すように、容量の小さいデータ型を容量の大きいデータ型に自動的に変換できることを意味します。
実線はデータ損失のない型変換を示し、破線は変換の精度が低下する可能性があることを示します。
整数定数は、テーブルの数を超えない限り、強制的な型変換を必要とせずに、byte、short、charなどの型変数に直接割り当てることができます。
//从容量小的类型可以自动转化为容量大的类型
int a = 2345;
long b=a;
//int c= b; //long类型不能自动转为int
double d = b;
float f= b;
//特例:整型常量是int类型,但是可以自动转为: byte,short,char。只要不超过对应类型的表数范围。
byte h1 = 123;
//byte h2 = 1234; //1234超过 了byte的表数范围[-128,127]。
char h3 = 600;
//char[0,65535]之间
System.out.println(h3);
出力:
ɘ
強制型変換:
double a = 3.9415;
int b = (int)a;//b:3.浮点数强制转成整数,则直接丢失小数部分(不会四舍五入)
System.out.println(b);
int c=97;
System.out.println((char)c);
//强制转型,超过了表数范围,则会转成一个完全不同的值。
byte d = (byte)300;
System.out.println(d);
出力:
3
a
44
一般的な変換オーバーフローの問題(Lの問題):
Intは、長整数を使用する必要がある場合に使用されます
//溢出问题
int money = 1000000000; //10亿
int years = 20;
//返回的total是负数,超过了int的范围
int total = money*years;
System.out.println(" total= " + total);
//返回的total仍然是负数。默认是int ,因此结果会转成int值,再转成long。但是已经发生了数据丢失
long total1 = money*years;
System.out.println(" total1="+ total1);
//返回的total2正确:先将一个因子变成long ,整个表达式发生提升。全部用long来计算。
long total2 = (money*(long)years);
//long total2 = 1L*money*years;
System.out.println(" total2=" + total2);
//人的寿命是80岁,经历了多少次心跳
long num = 100L *60*24*365*80; //注意这里100L是长整型
System.out.println("人的一-生心跳次数: " +num);
出力:
total= -1474836480
total1=-1474836480
total2=20000000000
人的一-生心跳次数: 4204800000
メンバー変数のデフォルト値:
整合性:0
浮動小数点タイプ:0.0
文字タイプ: '\ u0000'
ブール値:false
すべての参照型:null
セブン。工法
パラメーターを使用せずにコンストラクターを作成するか、パラメーターを使用してコンストラクターを作成するかに関係なく、システムはコンストラクターを自動的に生成しなくなります。
コンストラクターはnewキーワードで呼び出されます!!
コンストラクターには戻り値がありますが、戻り値の型を定義できず(戻り値の型はこの型である必要があります)、コンストラクターでreturnを使用して特定の値を返すことはできません。値。
コンストラクターを定義しない場合、コンパイラーはパラメーターなしでコンストラクターを自動的に定義します。定義されている場合、コンパイラは自動的に追加しません!
コンストラクタのメソッド名はクラス名と同じである必要があります!
OOP:Oriented-Objectプロジェクトのオブジェクト指向設計
OOA:指向オブジェクト分析
モジュールをサブプロジェクトとして理解します。モジュールは、別のJDKでセットアップすることもできます。