今日学习

今日学习
数组
数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的 名字引用它
属于复杂数据类型
由类型相同的元素组成的有顺序的数据集合 Java数组是固定的不能扩展[长度一旦声明,不能修改] 可以存储基本数据类型或对象 数组可以定义为任意数据类型,并且可分为一维数组或多维数组

一维数组
一维数组实质上是相同类型变量的列表。要创建一个数组必须首先定义数组变量所需的类型。通用的一 维数组的声明格式是:type var-name[ ];
1 2
3 4 5
int[] arr1 = new int[10]; // int[]或arr2[]都是用于声明是数组类型,int用于声明每个 元素都是int类型
int arr2[] = new int[20]; //要求使用数组之前必须先声明所需空间大小,即存储的元素个 数,一旦声明则不能修改
int[] brr; brr[0]=123; //语法报错
数组中的元素必须类型相同,不能存储不同类型的元素,除非使用Object[]
1 2
3 4 5 6
int[] brr=new int[10]; brr[0] = 123.; //类型必须一致 序号
Object[] brr=new Object[10];
brr[0] = 123.;
brr[1]=“sdafsd”;
brr[0]表示数组的第0个元素,[]中是索引下标值–
可以通过数组的下标操作数组中所存储的元素,注意下标从0开始,例如arr[0]+=12;修改元素的值 System.out.println(arr[0]);获取元素
使用数组之前,必须先定义后使用,定义的方式: int[] arr或者int arr[] 声明数组变量后,必须进行初始化操作,也就是定义数组的长度 arr=new int[5],这里表示开启可
以存放5个int类型数据的数组,这些元素时连续存放的 简单类型的数组初始化长度后,每个元素都有默认值
创建数组后,每个元素都有一个默认值,如果针对的是引用类型,则默认值为null;如果是简单类 型中byte short int long float double,则默认值为0,如果char类型默认值为\0,如果boolean类 型,则默认false
在Java中允许直接赋值初始
int[] arr={1,2,3,4,5,6,7}; 注意在于int[]中不能写具体的对应长度 也可以写成new int[]{1,2,3,4,5,6,7},但是int[]中不能有长度值
1 2 3
int[] arr=new int[10]; //所有的数值型数据默认0,boolean类型默认false,char类型默认’\0’ System.out.println(arr[1]); //输出为0
1 Integer[] arr=new Integer[10];
2 System.out.println(arr[1]); //输出为null

声明一个int型的一维数组:int number[];
[ ]在字节左边,对后面所有变量都有影响char[] s, t;
数组虽然声明了变量类型。但不存在实际的数值,它的值为null。为了使数组number 成为实际的、物 理上存在的整型数组,你必须用运算符new 来为其分配地址并且把它赋给number
运算符new 是专门用来分配内存的运算符,格式为:array-var = new type[size]; 开启出来的空间是连 续,可以通过下标进行快速定位
例如上面的代码: int[] kk=new int[10]; length属性
数组对象中有个属性length表示的是数组的长度
使用运算符new来分配数组,必须指定数组元素的类型和数组元素的个数。用运算符new分配数组后, 数组中的元素将会被自动初始化为一个值,这个值具体是什么和类型相关。如果是数值类型【整数、浮 点数、char类型】其中自动初始值为0,如果boolean类型则自动初始值为false
比如s = newchar[26];程序,生成一个包含26个字符值的数组,并将每个数组元素的初始值设为‘\u0000’ 创建简单类型的数组时,如果是数值型(整数或者浮点数),默认元素为0;如果是字符型,默认元
素为\u0000[注意这里不是字符0,字符0的值为48];如果是boolean型,则默认元素为false //如果创建的时复杂类型的数组,例如String[]b=new String[10],则默认元素为null
数组元素的访问
针对数组中的元素可以通过下标进行访问,访问的语法为: 数据变量的名称[下标] 数组中的所有元素将被初始化为零。接下来可以给数组中每个元素赋值
1 2 3 4
int arr[],brr[]; //等价于int[] arr,brr; arr=new int[5];
brr=new int[3];
System.out.println();
1 int[]arr;//声明整型数组变量arr
2 System.out.println(arr); //语法错误,必须先声明后使用,先赋初值后使用
1 int[] arr=new int[] {1,2,3,4,5,6};
2 System.out.println(arr.length); //获取数组中的元素个数
1 2 3
kk[0]=10;
kk[1]+=13;

1 2 3 4 5
int[] arr= {1,2,3,4,5,6};
System.out.println(arr[3]);
int[] brr=new int[] {1,2,3,4,5,67};//注意不能修改int[]为int[6],否则语法报错 System.out.println(brr[3]);

这样给数组赋值显得不够现实
声明的同时初始化
在数组定义时指定元素的初始值,即称为数组的初始化
int a[]={1,2,3,4,5};
声明一个数组并初始数组内容
int[] score = {90, 85, 55, 94, 77}; //也可以写作new int[]{90, 85, 55, 94, 77},但是不允许写成new
int[5]{90, 85, 55, 94, 77},语法报错
1 2 3
int[] arr=new int[] {2,5,3,1,9,0};
for(int i=0;i<arr.length;i++)
System.out.println(“数组arr的第”+i+“个元素值为:”+arr[i]);
1 int[] arr = new int[] { 2, 5, 3, 1, 9, 0 };
2 for(inti=0;i<arr.length;i++)
3 System.out.printf("%s[%d] = %d\n", “arr”, i, arr[i]); //printf用于格式化
输出,
格式化输出
1 2 3 4
int[] score = {90, 85, 55, 94, 77}; //也可以写作new int[]{90, 85, 55, 94, 77} for(int i = 0; i < score.length; i++)
System.out.printf(“score[%d] = %d\n”, i, score[i]); //前面的格式符号%x的个数应该和后面参数一致,如果出现了参数不足时则会报错
1 2 3
int[] arr = new int[] { 2, 5, 3, 1, 9, 0 };
for (int i = 0; i <= arr.length; i++) //注意=的问题
System.out.printf("%s[%d] = %d\n", “arr”, i, arr[i]); //没有语法错误,但 是执行代码会有报错
错误分析:在控制台上可以看到报错信息ArrayIndexOutOfBoundsException表示数组越界,就是访问 一个不存在的元素
当取出数组元素的时,数组下标索引不能超出数组范围[0到length-1],如果超出数组范围会发生 ArrayIndexOutOfBoundsException。例如声明一个数组的元素个数为5,而去取了它的第6个,那么程 序就会提示下标越界的错误
可以使用动态的方式来宣告数组长度,而不用在程序中事先决定数组大小

循环打印出小写字母a~z
1 2 3 4 5 6 7 8 9
10
11
12
13
14
15
char c=‘a’;
for(int i=0;i<26;i++)
System.out.println((char)(c+i));
char[] arr=new char[26];
for(int i=0;i<26;i++)
arr[i]=(char)(c+i);
//输出数组中的数据
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
//foreach结构,是用于遍历集合写法的语法糖,是for循环的简化写法 for(char temp:arr)
System.out.println(temp);
将同一个对象指定给两个参考名称
1 2 3 4 5 6 7 8 9
10
11
12
13
14
15
16
public class A1 {
public static void main(String[] args) {
char[] arr = new char[26];
for(int i=0;i<26;i++)
arr[i]=(char)(‘a’+i);
char[] brr=arr;
for(int i=0;i<brr.length;i++) {
brr[i]=Character.toUpperCase(brr[i]);
if(‘a’<=brr[i] && brr[i]<=‘z’) {
char temp=(char)(brr[i]-‘a’+‘A’);
}
for(char temp:arr)
System.out.println(temp);
//
//
// }
} }
运行后则brr变量和arr变量都指向同一个数组,就是前面创建的数组,其中存放了26个字符的数组
1 2 3 4 5 6 7 8 9
10 11 12 13
public class Test08 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int len=sc.nextInt();
int[] arr=initArr(len);//可以根据输入的参数创建不同长度的数组 System.out.println(arr.length);
}
public static int[] initArr(int length) {
if(length<1)
return new int[5];
return new int[length];//初始化数组长度时参数不同小于0,但是允许等于0 }
}
// //

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值