Java⼀维数组与⼆维数组
1.概述
①Java语⾔中的数组是⼀种引⽤数据类型。不属于墓本数据类型。数组的⽗类是 object
②数组实际上是⼀个容器,可以同时容纳多个元素。(数组是⼀个数据的集合。)数组:⾯意思是⼀组数据
③数组当中可以存基本数据类型的数据,也可以存引⽤数据类型的数据。
④数组因为是引⽤类型,所以数组对象是堆内存当中。(数组是存储在堆当中的)
⑤数组当中如果存的是java对象的话,实际上存的是对象的引⽤(内存地址)
⑥数组⼀且创建,在java中规定,长度不可变。(数组长度不可变)
⑦数组的分类:⼀维数组、⼆维 数组、三维数组、多维数组…(⼀维数组较多,⼆维数组偶尔使⽤!)
⑧所有的数组对象都有length属性(java⾃带的),⽤来获取数组中元素的个数。
⑨java中的数组要求数组中元素的类型统⼀。⽐如int类型数组只能存储int类型, Person类型数组只能存 Person类型.(数组中存储的元素类型统⼀)
⑩数组在内存⽅⾯存的时候,数组中的元素内存地址(储存的每⼀个元素部是有规则的挨着排列的)是连续的。内存地址连续,数组存储元素的特点(特⾊)。数组实际上是⼀种简单的数据结构。
⒒所有的数组都是拿第⼀个⼩⽅框的内存地址作为整个数组的内存地址。(数组中⾸元素的内存地址作为整个数组对象)
⒓数组中每⼀个元素部是有下标的,下标从0开始,以1递增。最后⼀个元素的下标是: length-1
下标⾮常重要,因为我们对数组中元素进⾏存取的时候,都需要通过下标来进⾏。
13.数组这种数据结构的优点和缺点是什么
缺点:
第-:由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,
效率较低,因为随机增删元素会涉及到后⾯元素绕⼀向前或者向后位移的操作。
第⼆:数组不能存⼤数据量,为什么?
因为很难在内存空间上到⼀块特别⼤的连续的内存空间。
2.定义⼀维数组
⼀.⼀维数组的声明格式:
数组元素的类型[] 变量名称
int[] array;
double[] array;
boolean[] array3
String[] array;
Object[] arrays
⼆.初始化⼀个⼀维数组
包括两种⽅式:静态初始化⼀维数组,动态初始化⼀维数组。
静态初始化语法搭式
int[] array={100,2100,300,55};
动态初始化语法格式
int[] array= new int[5];//这⾥的5表⽰数组的元素个数。
//初始化⼀个5个长度的int类型数组,每个元素默认0
String[] names= new String[6];//初始化6个长度的String类型数组,每个元素默认篇null。
三.实例
数组名.length的⽅式来获得数组的长度,即数组元素的个数,所有数组都有length属性
array.length
int[] a2={10,20,30,34};
System.out.println(a.length);
System.out.println(a2[0]);
System.out.println(a2[a2.length-1]);
//数组遍历
for(int i=0;i<a2.length;i++){
System.out.println("正序"+a2[i]);
}
for(int i= a2.length-1;i>=0;i--){
System.out.println("倒序"+a2[i]);
//System.out.println(a2[a.length]);ArrayIndexOutOfBoundsException //数组下标越界异常
}
}
}
4
10
34
正序10
正序20
正序30
正序34
倒序34
倒序30
倒序20
倒序10
四.⽅法的参数是数组
ArrayTest03.printArray(x);
String[] str={"abc","asd","fuck"};
ArrayTest03.printArray(str);
System.out.println("---------------");
int[] y=new int[4];
printArray(y);
System.out.println("*******************");
String[] str2=new String[4];
printArray(str2);
System.out.println("******************");
printArray(new int[3]);
// printArray({"fuck","wtf","son of bitch"});java: ⾮法的表达式开始printArray(new String[]{"fuck","wtf","son of bitch"});
}
public static void printArray(int[] args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
public static void printArray(String[] args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
1
20
30
39
abc
asd
fuck
null
null
null
null
fuck
wtf
son of bitch
五.main⽅法的String数组
如果配置了argue环境变量,默认则是0
public class ArrrayTest05 {
public static void main(String[] args){
printArray(args);
String[] str=new String[0];
printArray(str);
}
public static void printArray(String[] args){ System.out.println(args.length);
for(int i=0;i< args.length;i++){
System.out.println(args[i]);
}
}
}
3
abc
fcd
sfd
六.数组中存储引⽤数据类型
public class ArrayTest07 {
public static void main(String[] args){
Animal[] animals=new Animal[2];
/* System.out.println(animals[0]);
System.out.println(animals[1]);*/
animals[0]=new Bird();
animals[1]=new Cat();
java定义一维数组并赋值
for(int i=0;i< animals.length;i++){
if(animals[i]instanceof Bird){
Bird bird=(Bird)animals[i];
Birdfly();
}
if(animals[i]instanceof Cat){
Cat cat=(Cat)animals[i];
cat.catchMouse();
}
}
/* Cat c=new Cat();
Bird b=new Bird();*/
/* Animal[] animals1=new Animal[]{new Bird(),new Cat()}; for (int i=0;i< animals1.length;i++){
animals1[i].move();
}*/
}
}
class Animal{
public void move(){
System.out.println("Animal move");
}
}
class Cat extends Animal{
public void move(){
System.out.println("Cat move");
}
public void catchMouse(){
System.out.println("Catch mouse");
}
}
class Bird extends Animal{
public void move(){
System.out.println("Bird move");
}
public void Birdfly(){
System.out.println("bird fly");
}
}
各种数据类型在内存的存储⽅式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论