Java方法及び配列関連の原理解析
方法
設計方法の原則:方法の真意は機能ブロックであり、ある機能を実現するブロックの集合である。私たちが設計した方法は、一番いい方法の原子性を維持することです。つまり、一つの方法は一つの機能を完成するだけで、後期の拡張に有利です。
メソッドの再ロード
リロードとは、同じクラスの関数名ですが、パラメータが異なる関数です。
リロード規則:方法名は同じでなければなりません。 パラメータリストは異なる必要があります。 方法では、戻り値の種類は同じでもいいし、同じでもいいです。 戻りタイプだけでは方法の重み付けには不十分です。
実現原理:
メソッド名が同じであれば、コンパイラは呼び出し方法のパラメータ個数、パラメータタイプなどに従って一つ一つマッチングし、対応する方法を選択します。もしマッチングに失敗したら、コンパイラはエラーを報告します。
コマンドライン
可変パラメータ
JDK 1.5から、Javaは同じタイプの可変パラメータを転送する方法をサポートします。
方法宣言では、パラメータの種類を指定した後に省略記号を追加します。
一つの方法では可変パラメータしか指定できません。これは方法の最後のパラメータでなければなりません。任意の普通のパラメータは、その前に宣言しなければなりません。
AメソッドはAメソッドを呼び出す!自分で自分を呼び出す!
再帰的構造は2つの部分を含む。
再帰ヘッダ:いつ自分の方法を呼び出しませんか?頭がないと死の循環に陥る。
再帰体:いつ自分の方法を呼び出す必要がありますか?
配列は同じタイプのデータの規則的な集合である。
配列は同じタイプのいくつかのデータを記述しており、一定の順序で並べて組み合わせられている。
ここで、各データは1つの配列要素と呼ばれ、各配列要素は1つの下付き文字でそれらにアクセスできます。
配列の宣言
int[]nums=new int[5];
nums[0]=1nums[1]=2nums[2]=3nums[3]=4;nums[4]=5
配列の3種類の初期化
//1静的初期化
int[]a={1,2,3,5,6,7,8}
System.out.println(a[0]);
//2ダイナミック初期化:3デフォルト初期化を含む
int[]b=new int[10];
b[0]=10
b[1]=10
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2])//デフォルト初期化、出力結果は0です。
配列の4つの基本的な特徴は、その長さが決定される。配列が作成されると、サイズは変更できません。 は、要素が同じタイプである必要があり、混合タイプが出現してはいけない。 配列の要素は、基本タイプおよび参照タイプを含む任意のデータタイプであってもよい。 配列変数は参照型であり、配列はオブジェクトとしても見なされ、配列内の各要素はオブジェクトのメンバー変数に相当する。配列自体はオブジェクトであり、Javaのオブジェクトはスタックにありますので、配列は元のタイプまたは他のオブジェクトのタイプに関係なく、配列オブジェクト自体はスタックにあります。
行列境界
配列の適用
int a[]=new int[2][5]//以上の二次元配列は、2行5列の配列として見られます。
Aray類
JDKグループの文書を確認してください!!
一般的な機能:
配列に値を与えます。fill
配列の並べ替え:sort
比較配列:equals比較配列の要素値が等しいかどうか
検索配列要素:binarySearch方法は、並べ替えられた配列を二分割検索で操作することができます。
泡の並べ替え
疎配列の処理方法は、
記録配列は全部で何列ありますか?いくつの違いがありますか?
異なる値を持つ要素と行列と値を小さなサイズの配列に記録し、プログラムの規模を縮小します。
設計方法の原則:方法の真意は機能ブロックであり、ある機能を実現するブロックの集合である。私たちが設計した方法は、一番いい方法の原子性を維持することです。つまり、一つの方法は一つの機能を完成するだけで、後期の拡張に有利です。
メソッドの再ロード
リロードとは、同じクラスの関数名ですが、パラメータが異なる関数です。
リロード規則:
メソッド名が同じであれば、コンパイラは呼び出し方法のパラメータ個数、パラメータタイプなどに従って一つ一つマッチングし、対応する方法を選択します。もしマッチングに失敗したら、コンパイラはエラーを報告します。
コマンドライン
public static void main(String[] args) {
for (int i=0;i<args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}// main
cmdインターフェースの下で運行することができます!!!可変パラメータ
JDK 1.5から、Javaは同じタイプの可変パラメータを転送する方法をサポートします。
方法宣言では、パラメータの種類を指定した後に省略記号を追加します。
一つの方法では可変パラメータしか指定できません。これは方法の最後のパラメータでなければなりません。任意の普通のパラメータは、その前に宣言しなければなりません。
public static void main(String[] args) {
//
printMax(34,3,3,2,56.5);
printMax(new double[]{1,2,3});
}
public static void printMax(double... numbers){//
if (numbers.length==0){
System.out.println("No argument passed");
return;
}
double result=numbers[0];
//
for (int i = 1; i < numbers.length; i++) {
if(numbers[i]>result){
result=numbers[i];
}
}
System.out.println("The max value is "+result);
}
再帰するAメソッドはAメソッドを呼び出す!自分で自分を呼び出す!
再帰的構造は2つの部分を含む。
再帰ヘッダ:いつ自分の方法を呼び出しませんか?頭がないと死の循環に陥る。
再帰体:いつ自分の方法を呼び出す必要がありますか?
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
行列配列は同じタイプのデータの規則的な集合である。
配列は同じタイプのいくつかのデータを記述しており、一定の順序で並べて組み合わせられている。
ここで、各データは1つの配列要素と呼ばれ、各配列要素は1つの下付き文字でそれらにアクセスできます。
配列の宣言
int[]nums=new int[5];
nums[0]=1nums[1]=2nums[2]=3nums[3]=4;nums[4]=5
配列の3種類の初期化
//1静的初期化
int[]a={1,2,3,5,6,7,8}
System.out.println(a[0]);
//2ダイナミック初期化:3デフォルト初期化を含む
int[]b=new int[10];
b[0]=10
b[1]=10
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2])//デフォルト初期化、出力結果は0です。
配列の4つの基本的な特徴
配列の適用
//
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for (int i = 0,j=result.length-1; i <arrays.length ; i++,j--) {
result[j]=arrays[i];
}
return result;
}
多次元配列int a[]=new int[2][5]//以上の二次元配列は、2行5列の配列として見られます。
Aray類
JDKグループの文書を確認してください!!
一般的な機能:
配列に値を与えます。fill
配列の並べ替え:sort
比較配列:equals比較配列の要素値が等しいかどうか
検索配列要素:binarySearch方法は、並べ替えられた配列を二分割検索で操作することができます。
泡の並べ替え
public static int[] sort(int[] array){
//
int temp=0;
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {//i , i,
if(array[j+1]<array[j]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
return array;
}
まばら行列疎配列の処理方法は、
記録配列は全部で何列ありますか?いくつの違いがありますか?
異なる値を持つ要素と行列と値を小さなサイズの配列に記録し、プログラムの規模を縮小します。
//
public static void main(String[] args) {
//
int[][] array1=new int[11][11];
array1[1][2]=1;
array1[2][3]=2;
System.out.println(" :");
for (int[] ints:array1) {
for(int anint:ints){
System.out.print(anint+"\t");
//
}
System.out.println();
}
System.out.println("================");
//
//
int sum= 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if(array1[i][j]!=0){
sum++;
}
}
}
System.out.println(" :"+sum);
//
int[][] array2=new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
// ,
int count=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {//
//
if(array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
}
//
System.out.println(" ");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("================");
System.out.println(" ");
int[][] array3=new int[array2[0][0]][array2[0][1]];
//
for (int i = 1; i < array2.length; i++) {
//
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
//
System.out.println(" :");
for (int[] ints:array3) {
for(int anint:ints){
System.out.print(anint+"\t");
//
}
System.out.println();
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。