コンピュータ言語とJavaの
コンピュータ言語は、組成(数字、記号および構文、などを含む)いくつかの命令で構成され、機械語、アセンブリ言語、高級言語の3つのカテゴリに分類することができます。Javaはクロスプラットフォームのアプリケーションソフトウェア、完全にオブジェクト指向プログラミング言語を書くことができ、高レベルのコンピュータ言語です。
特徴:シンプル、オブジェクト指向、安全(ポインタをサポートしていない、メモリへのすべてのアクセスは、オブジェクトのインスタンス変数によって達成されなければならない)、クロスプラットフォーム、マルチスレッドのサポート(プログラムは、複数のタスクを同時に実行することができますがあります)。
どのようにJavaが実行されています
ソースコード→コンパイラ(JDK)バイトコード→→JVM(Java仮想マシン(JRE))→...→コンピュータのマシンコード010010
Java開発環境では、と呼ばれるJavaなどのツールをパッケージ化、JavaコンパイラなどのJavaのコアであり、JDK(Javaの開発キット)は、Javaツール、ドキュメント生成ツールを実行します。
Javaランタイム環境では、と呼ばれるJRE(Javaランタイム環境)。今JDKツールは、JREが付属しています。
ルール定義された識別子は、次のとおりです。①パッケージ名すべての小文字は、変数名とメソッド名として、すべての文字が大文字であるようArrayList③定数名として、各単語の最初の文字は大文字でなければならないようなcn.itcast.test②クラス名とインタフェース名でなければならないがDAY_OF_MONTH④ワードに続く第1のワード小文字の最初の文字は、例えば行番号、使用単語にgetNum⑤の試みは、ユーザー名、ユーザー名、パスワードExpressのパスワードとして意味のある識別子を定義するために、大文字。
Javaの定数
①整数定数。バイナリ:0Bまたは0Bが数字0と1の配列、例えば0b0110,0B1101の始まり。
進:0冒頭、例えば番号0〜7までのシーケンス、:0342。
十進:0〜9のシーケンス。
ヘキサン:0X開始または0X、0〜9、A〜 F の数字の配列からなる、例えば0x25AF。
②浮動小数点定数。フロート端F又はFで単精度浮動小数点(32)の端DまたはDで二倍精度浮動小数点(64)、例えば20F + 3.84e(* 10 3.84 20です)
③文字定数。単一引用符、例えば、 'A'」1' '\ R&LT' '\ U0000' (空白文字で表されます)。
④文字列定数。二重引用符は、例えば
「
HelloWorldの」。
⑤bool定数。真と偽の2つの値を含みます。
⑥null定数。オブジェクトへの参照を意味し、ヌルの値だけが、空です。
バックスラッシュ(\ もエスケープ文字として知られています)、
\
R&LTは、キャリッジリターンを発現し
\
n型表す改行は、
\
Tタブ文字は、
\
Bは、キーボードのバックスペースのようなバックスペースを表し、
\「
単一引用符を表す
\」
二重引用符を表し、
\\
これは、バックスラッシュ文字を表します。
注:Javaコンソールの表示/ R / N / R IN / N示すように、これら3つの効果は同じです。
変数の型変換
自動型変換はまた、例えば、暗黙的型変換と呼ばれ、ソース・タイプの範囲よりも目標範囲以上の各タイプと互換性のある2つのデータ型され
バイトB = 3。INT X = B。
また、明示的な型変換と呼ばれるキャストは、2つのデータ型は、相互に以下の標的型ソース型範囲、例えば以下の範囲で互換性がありません
byte a; int b = 298; a = (byte)b;
【a++和++a】
int a = 1;
int b = a++;
System.out.println("a = " + a);
System.out.println("b = " + b);
运行结果
a = 2
b = 1
int a = 1;
int b = ++a;
System.out.println("a = " + a);
System.out.println("b = " + b);
运行结果
a = 2
b = 2
真值,原码,反码,补码
真值是带符号的二进制数,如-101表示-5;
原码用1代表负数,0代表正数,如真值-101的原码为10000101,因为第一位是符号位,所以8位二进制的取值范围是[11111111,01111111]。即[-127,127];
反码,正数的反码是其本身,负数的反码是在原码的基础上符号位不变,其余位取反,如真值-101=原码10000101=反码11111010;
补码,正数的补码是其本身,负数的补码是在原码的基础上符号位不变,其与各位取反,最后加1(总的来说就是反码+1),如真值-101=原码10000101=反码11111010=补码11111011
运算符
运算符^,异或,例如true^true结果为false,true^false结果为true。
运算符&&,短路与,从左往右,左侧为false时会直接输出false,右边表达式不会进行运算,例如false&&true结果为false,true&&false结果为false。
运算符&,与,两边表达式都会进行运算。
|(或)和||(短路或)用法类似于&和&&。
三目运算符 ?:
int a,b,c;
a = 5; b = 7;
c = a<b ? a : b;
System.out.println(c);
//输出5
位运算
按位与(&),参加运算的两个数转换成二进制后进行与运算,相应位上都为1时取1,否则取0。
按位或(|),
参加运算的两个数转换成二进制后进行或运算,
相应位上
只要有1取1,都为0时取0。
按位异或(^),
参加运算的两个数转换成二进制后进行
异或
运算,
相应位上数字不同取1,相同取0。可以看出任何数与0异或都是其本身。
利用异或还可以实现一个很好的交换算法
,用于交换两个数:
a = a ^ b;
b = b ^ a;
a = a ^ b;
取反(~),
参加运算的两个数转换成二进制后进行取反运算,每位取反,1变0,0变1。
左移(<<),
参加运算的数转换成二进制后进行左移运算,左移若干位。可以发现左移n位后结果=原值*2n
。
右移(>>),
参加运算的数转换成二进制后进行右移运算,右移若干位。
可以发现右移n位后结果=原值/2
n,值要取整。
选择结构语句
if(判断条件){执行语句}
if(判断条件){执行语句}else{执行语句}
if(判断条件){执行语句}else if(判断条件){执行语句}...else if(判断条件){执行语句}else{执行语句}
switch(表达式){case 目标值1:执行语句1 break;case 目标值2:执行语句2 break;case 目标值n:执行语句n break;}
循环语句结构
while(循环条件){执行语句} //先判断,后执行
do{执行语句}while(循环条件); //先执行,后判断
for(初始化表达式;循环条件;操作表达式){执行语句}
注:break,主要用在循环语句或者switch语句中,用来跳出整个语句块;continue,适用于任何循环控制结构中,是让程序立刻跳转到下一次循环的迭代。
public class Test{
public static void main(String[] args) {
int[] n = {1,2,3,4,5};
for (int x : n){
if(x == 3){
break;
}
System.out.println(x);
}
}
}
运行结果:
1
2
public class Test{
public static void main(String[] args) {
int[] n = {1,2,3,4,5};
for (int x : n){
if(x == 3){
continue;
}
System.out.println(x);
}
}
}
运行结果:
1
2
4
5
方法
修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名n]){
执行语句
.
.
return 返回值;
}
如果方法不需要参数,参数列表可以为空。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时方法中return可以省略。
例如:main方法中调用getNum(int x,int y)方法,需要该方法时会为x,y分配内存并传值,return结束后会将x,y释放。
①方法的重载
方法的重载与返回值类型无关,它只需要满足两个条件,一是方法名相同,二是参数个数或参数类型不相同。
示例:
public class Override { //方法的重载
public static void main(String[] args) {
System.out.println(add(1,2));
System.out.println(add(1,2,3));
System.out.println(add(1.2,1.3));
}
public static int add(int a,int b){ //该方法实现两个整数相加
return a+b;
}
public static int add(int a,int b,int c){ //该方法实现三个整数相加
return a+b+c;
}
public static double add(double a,double b){ //该方法实现两个小数相加
return a+b;
}
}
运行结果
3
6
2.5
②方法的递归
方法的递归就是指在一个方法的内部调用自身的过程,递归必须要有结束条件,防止进入死循环。
示例:
public class Recursion { //方法的递归
public static void main(String[] args) {
System.out.println("1~n的和为"+getSum(4));
}
public static int getSum(int n){ //递归求1~n的和
if (n==1){
//满足条件,递归结束
return 1;
}
int temp = getSum(n-1);
return temp+n;
}
}
运行结果
1~n的和为10
数组
数组的定义:
int[] a = new int[10]; //从a[0]到a[9]
int[] b = {1,2,3,4};
int[] c; //声明一个int[]类型的变量
c = new int[10]; //创建一个长度为10的数组
内存状态图
可以通过
“数组名.length”获取数组长度。
元素默认值
数据类型
|
默认初始化值
|
byte,short,int,long
|
0
|
float,double
|
0.0
|
char
|
一个空字符,即’\u0000’
|
boolean
|
false
|
引用数据类型
|
null,表示变量不引用任何对象
|
多维数组
int
[][] a =
new int
[
3
][
3
];
a[0][0]
|
a[0][1]
|
a[0][2]
|
a[1][0]
|
a[1][1]
|
a[1][2]
|
a[2][0]
|
a[2][1]
|
a[2][2]
|
int
[][] a =
new int
[3][];
a[0][0]
|
|
|
a[1][0]
|
a[1][1]
|
|
a[2][0]
|
a[2][1]
|
a[2][2]
|
int[][] a = {{1,2},{3,4,5,6},{7,8,9}};
1
|
2
|
|
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
|