Javaベースの学習day04

-------- --------アレイ定義フォーマット

 

フォーマット

// [フォーマット1] 
データ型[]配列名

// 
のint [] ARR
 ダブル[] ARR
 ロング[] ARR
 ブール[] ARR 
のString [] ARR

フォーマットII:

// [2]フォーマット
データ型配列名[]の

// 

 

アレイの初期化の基本的な形式

パッケージcom.itheima_01;
 / * 
    配列:データの同じタイプの複数記憶する記憶モデル

    フォーマット定義を:(推奨)
        データ型[]配列名; 
        例:INT [] ARR、

    アレイの初期化:
        A:所謂初期化:配列内の配列要素にメモリを割り当て、に割り当てられた各配列要素
        B:アレイ初期化する
            動的初期
            静的初期

    動的初期化:
        唯一のシステムは、配列に初期値を割り当て、配列の初期化の長さを指定する
        フォーマットのデータタイプ[ ]変数名=新しいデータタイプ[配列サイズ]; 
        例:[] =新しいINT [3] ARR int型; 
 * / 
パブリック クラスArrayDemo {
     公共 静的 ボイドメイン(文字列[]引数){
         INT [] ARR = 新しい新しい INT [ 3 ];
         / *
            左:
                INT:配列の説明要素の型はintです
                []:説明これは、配列である
                ARR:これは配列の名前である
            右の:
                新しい新しい:アプリケーションのメモリ空間の配列
                int型:配列の説明要素の型はintです
                [] :これは配列の説明である
                3:配列の長さは、実際には、アレイ内の要素の数
         * / 

        // 出力アレイ名 
        のSystem.out.println(ARR); @ [880ec60 @ I 

        // 出力配列の要素 
        システム。 out.printlnを(ARR [0 ]); 
        のSystem.out.println(ARRの[ 1 ]); 
        のSystem.out.println(ARR [ 2 ]); 
    } 
}

 

概要

  1. どのような配列でありますか?

    記憶するためのアレイと同じタイプの複数のデータコンテナのを。

  2. これは、配列が特徴?

    同じタイプのデータのみを保存します。

  3. 定義フォーマットアレイ

    • 形式:データ型[]変数名を推奨

    • フォーマットII:データ型の変数名は[]を理解します

     

  4. 配列のインデックス値を特徴?

    配列インデックスは0、+1各時刻から開始されます。

 

  1. 動的定義配列の配列を初期化するために使用することができます

    フォーマット:データ型[] =新しい変数名データ型[長|容量]

    比如:[3] [] ARR =新しいダブルダブル。

    左:

    二重:アレイのデータ・タイプを記憶することができ表します。

    []:アレイを表し

    編曲:ちょうど変数名

    右:

    新しいアプリケーションのメモリ空間。新しいキーワードである、すべてのオブジェクトが使用したいキーワードを作成する必要があります。

    二重:アレイのデータ・タイプを記憶することができ表します。

    []:アレイを表し

    3:コンテナのアレイの容量を表し、次の3つのデータを格納することができます。

 

-------- 動的初期化のアレイ---------

 

動的初期化とは何ですか?

==所与のアレイ、システムによって与えられたデフォルトの初期値の長さのみ。==

 

動的な初期化形式?

データタイプ[]配列名= 新しい新しいデータタイプ[配列の長さ]。

 

// 動的初期化の配列は、
 // アレイ3のintの長さを定義
INT [] = ARR 新しい新しい INT [3 ]を; 

// 二重アレイ5の長さを定義
ダブル [] = ARR 新しい新しい ダブル [5 ]; 

// 定義された長さ5 char配列
のchar [] = ARR 新しい新しい CHAR [5 ]; 

// 文字列の配列の長さを定義する4 
文字列[] = ARR 新しい新しい文字列[4]。

 

形式説明

[5] [] ARR =新しいint型をint型。

  • 等号の左側:

    • INT:データ型の配列

    • []:これは、配列の代わりになります

    • ARR:名前は配列を表し、

    • 等号の右:

      • 新しい:メモリオープンスペースの配列

      • INT:データ型の配列

      • []:これは、配列の代わりになります

        5:配列の長さを表します。

 

 

メモリの割り当て

JVMのメモリは、メモリ領域の数に分割されましたか?特長は、データを格納するメモリとヒープメモリをスタック?

 

各メモリ領域の役割

ゾーン名 効果
スタックメモリ(スタック) メソッドの実行時のメモリ使用量、変数およびパラメータを格納する方法。
ヒープ(ヒープ) ヒープメモリに格納されたデータのうち、新たなストレージ・オブジェクトや配列、。
メソッド地区 情報ストレージ・クラス・ファイルがロードされました。
登録 CPUの使用のために、私たちは関係のない開発しました。
ネイティブメソッドスタック 使用するオペレーティングシステム機能を使用して、我々は関係のない開発したJVM。

 

今、私たちはただスタックメモリとヒープメモリを集中する必要があります。

スタックメモリ:メソッドが終了し、メモリの解放は、スタックメモリは、ローカル変数に格納されています。

ヒープメモリ:ガベージコレクタを待って、使用後のデータは、ヒープメモリは、新しいデータ、配列、オブジェクトの外に保存されています。

 

 

配列の初期化のデフォルト値

整数タイプ:0

浮動小数点タイプ:0.0

文字の種類:null文字

ブール:偽

リファレンスタイプ:null文字列[] ARR =新しいString [5]。

 

概要

  1. JVMのメモリは、いくつかの領域に分割されて?

    • スタックメモリ:方法あなたが実行する必要がある場合は、この方法のJVMは、メモリストレージスタック、スタックメモリ内の別々のスペースを開きますが、ローカル変数です。

    • ヒープメモリ:すべての配列やオブジェクトを介して、新しいキーワードを作成し、JVMはヒープメモリ内の別のメモリ空間を開きます。

    • メソッド地区

    • 登録

    • ネイティブメソッドスタック

  1. 特長は、データを格納するメモリとヒープメモリをスタック?

  • スタックメモリ:方法あなたが実行する必要がある場合は、この方法のJVMは、メモリストレージスタック、スタックメモリ内の別々のスペースを開きますが、ローカル変数です。

  • ヒープメモリ:すべての配列やオブジェクトを介して、新しいキーワードを作成し、JVMはヒープメモリ内の別のメモリ空間を開きます。

 

 

メモリの図単一のアレイ

 

図の複数のメモリアレイ。

 

配列変数の複数の同一の配列オブジェクトを指し示します

 

概要

  1. 複数の変数は、次に変更の要素が互いに影響を及ぼし、同じ配列オブジェクトを指しますか?

  • それはお互いに影響を与えます。

 

-------- --------静的初期のアレイ

 

静的初期化とは何ですか?

アレイを作成すると、値の要素が直接決定します。

動的初期化を使用するときは:

アレイを作成するとき、アレイ要素を決定することができない場合、動的初期化を使用することの価値

静的な初期化を使用するとき

アレイを作成すると、要素の値を決定してきた、静的な初期化を使用します

静的初期化フォーマット:

データタイプ[]配列名=   新しい新しい  データタイプ[] {素子1、素子2、素子3 ...} 

// 
のint [] ARR = 新しい新しい INT [] {10,20、30,40}。

 

静的初期化の短い形式:

データタイプ[]配列名=   {要素1、要素2、要素3 ...}; 

// 
INT [] = {10,20、30,40} ARR。

 

基本的な使用の静的初期化

/*
    静态初始化:
        初始化时指定每个数组元素的初始值,由系统决定数组长度

        格式:数据类型[] 变量名 =  new  数据类型[]{数据1, 数据2, 数据3, ……};
        范例:    int[]   arr =  new      int[]{1, 2, 3};

        简化格式:数据类型[] 变量名 = {数据1, 数据2, 数据3, ……};
        范例:       int[]    arr = {1, 2, 3};
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {1, 2, 3};

        //输出数组名
        System.out.println(arr);

        //输出数组中的元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

 

小结

  1. 静态初始化的特点?

    数组一旦创建就已经指定了元素的值。

  2. 静态初始化的格式?

    格式一:数据类型[] 变量名 = new 数据类型[]{元素1,元素2...}

    格式二(推荐) : 数据类型[] 变量名 = {元素1,元素2....}

  3. 什么时候使用静态初始化与动态初始化?

    动态初始化特点:创建一个数组对象,但是不指定数组的元素。

    静态初始化的特点: 一旦创建数组对象,那么就已经指定了数组的元素。

    答案: 根据实际需求而决定。 比如: 当前我需要从数据库中读取15条数据放入到数组中。

 

拓展

【练习】下面创建数组错误的是(C  )
    A、 int[] arr = new int[5];
    B、 int arr[] = new int[5];
    C、 int[] arr = new int[3]{1,2,3}; //int[] arr = new int[]{1,2,3};
    D、 int[] arr = {1,2,3};

【练习】下面为数组初始化正确的写法是( A )
    A: double c[]=new double[]{1,2}     
    B: double c[]=new double(1,2)     //double c[]=new double[]{1,2}
    C: double c[]=new double[](1,2)     //double c[]=new double[]{1,2}
    D: double c[]=new double{1,2}    //double c[]=new double[]{1,2}
    E: double c[]=new double[2]{1,2} //double c[]=new double[]{1,2}

 

数组操作的两个常见小问题

 

/*
    索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
        ArrayIndexOutOfBoundsException

    空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
        NullPointerException

    null:空值,引用数据类型的默认值,表示不指向任何有效对象
 */
public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[3];

        //System.out.println(arr[3]);
        //System.out.println(arr[2]);

        //把null赋值给数组
        arr = null;
        System.out.println(arr[0]);
    }
}

 

  1. 使用数组常见的两个问题是什么?

    • 索引越界

    • 空指针异常

  2. 是何种原因导致出现的?

    • 索引越界: 访问了不存在的索引值, 索引值的范围:0~容量-1

    • 空指针异常: 一个变量没有记录任何对象的内存地址,然后访问了对象的属性或者方法。

 

--------遍历--------

/*
    遍历
        获取数组中的每一个元素输出在控制台

    获取数组元素
        数组名.length
 */
public class ArrayTest01 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {11, 22, 33, 44, 55};

        //使用通用的遍历格式
        for(int x=0; x<arr.length; x++) {
            System.out.println(arr[x]);
        }
    }
}

 

求出数组的最大值

/*
需求:求数组最大值

分析:打擂台思想

步骤:

    1、定义临时变量max,存储数组最大值,并假设第一个元素为最大值。

    2、遍历数组,从第二个元素开始,逐个与max比较。

    3、如果该元素比max变量还大,将该元素赋值给max变量。

    4、循环结束后,max中存储的就是数组的最大值。
*/

package com.itheima_05;
/*
    获取最值
        获取数组中的最大值
        最小值同学们自己完成
 */
public class ArrayTest02 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {12, 45, 98, 73, 60};

        //定义一个变量,用于保存最大值
        //取数组中第一个数据作为变量的初始值
        int max = arr[0];

        //与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }

        //循环结束后打印变量的值
        System.out.println("max:" + max);

    }
}

 

小结

  1. 求出最大值的思路步骤

    • 使用静态初始化的方式创建一个数组

    • 定义一个变量用于保存最大值,默认值是获取数组的第一个元素。

    • 从索引值1开始遍历数组的元素,然后拿这个每个元素与最大值的变量进行比较,如果出现某个元素大于最大值,那么最大值的变量就改变为当前的元素。

    • 输出最大值

 

おすすめ

転載: www.cnblogs.com/ctw-C/p/11316359.html