// [フォーマット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 ]); } }
概要
-
どのような配列でありますか?
記憶するためのアレイと同じタイプの複数のデータコンテナのを。
-
これは、配列が特徴?
同じタイプのデータのみを保存します。
-
定義フォーマットアレイ
-
形式:データ型[]変数名を推奨
-
フォーマットII:データ型の変数名は[]を理解します
-
-
配列のインデックス値を特徴?
配列インデックスは0、+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:配列の長さを表します。
各メモリ領域の役割
ゾーン名 | 効果 |
スタックメモリ(スタック) | メソッドの実行時のメモリ使用量、変数およびパラメータを格納する方法。 |
ヒープ(ヒープ) | ヒープメモリに格納されたデータのうち、新たなストレージ・オブジェクトや配列、。 |
メソッド地区 | 情報ストレージ・クラス・ファイルがロードされました。 |
登録 | CPUの使用のために、私たちは関係のない開発しました。 |
ネイティブメソッドスタック | 使用するオペレーティングシステム機能を使用して、我々は関係のない開発したJVM。 |
今、私たちはただスタックメモリとヒープメモリを集中する必要があります。
スタックメモリ:メソッドが終了し、メモリの解放は、スタックメモリは、ローカル変数に格納されています。
ヒープメモリ:ガベージコレクタを待って、使用後のデータは、ヒープメモリは、新しいデータ、配列、オブジェクトの外に保存されています。
配列の初期化のデフォルト値
整数タイプ:0
浮動小数点タイプ:0.0
文字の種類:null文字
ブール:偽
リファレンスタイプ:null文字列[] ARR =新しいString [5]。
概要
-
-
スタックメモリ:方法あなたが実行する必要がある場合は、この方法のJVMは、メモリストレージスタック、スタックメモリ内の別々のスペースを開きますが、ローカル変数です。
-
ヒープメモリ:すべての配列やオブジェクトを介して、新しいキーワードを作成し、JVMはヒープメモリ内の別のメモリ空間を開きます。
-
メソッド地区
-
登録
-
ネイティブメソッドスタック
-
-
特長は、データを格納するメモリとヒープメモリをスタック?
-
スタックメモリ:方法あなたが実行する必要がある場合は、この方法のJVMは、メモリストレージスタック、スタックメモリ内の別々のスペースを開きますが、ローカル変数です。
-
ヒープメモリ:すべての配列やオブジェクトを介して、新しいキーワードを作成し、JVMはヒープメモリ内の別のメモリ空間を開きます。
-
複数の変数は、次に変更の要素が互いに影響を及ぼし、同じ配列オブジェクトを指しますか?
-
それはお互いに影響を与えます。
静的初期化とは何ですか?
アレイを作成すると、値の要素が直接決定します。
動的初期化を使用するときは:
アレイを作成するとき、アレイ要素を決定することができない場合、動的初期化を使用することの価値
静的な初期化を使用するとき
アレイを作成すると、要素の値を決定してきた、静的な初期化を使用します
静的初期化フォーマット:
データタイプ[]配列名= 新しい新しい データタイプ[] {素子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]); } }
小结
-
静态初始化的特点?
数组一旦创建就已经指定了元素的值。
-
静态初始化的格式?
格式一:数据类型[] 变量名 = new 数据类型[]{元素1,元素2...}
格式二(推荐) : 数据类型[] 变量名 = {元素1,元素2....}
-
什么时候使用静态初始化与动态初始化?
动态初始化特点:创建一个数组对象,但是不指定数组的元素。
静态初始化的特点: 一旦创建数组对象,那么就已经指定了数组的元素。
答案: 根据实际需求而决定。 比如: 当前我需要从数据库中读取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]); } }
-
-
索引越界
-
空指针异常
-
-
是何种原因导致出现的?
-
索引越界: 访问了不存在的索引值, 索引值的范围: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开始遍历数组的元素,然后拿这个每个元素与最大值的变量进行比较,如果出现某个元素大于最大值,那么最大值的变量就改变为当前的元素。
-
输出最大值
-