数组的静态初始化
int[] arr1={11,12,13};
System.out.println(arr1);//[I@1b6d3586
/*扩展:
* 地址值的格式含义[I@1b6d3586
* [:表示当前是一个数组
* I:表示当前数组里面的元素都是double类型的
* @:表示一个间隔符号(固定格式)
* 1b6d3586:才是数组真正的地址值(十六进制)
* 平时我们习惯性的会把这个整体叫做数组的地址值。
*/
快速获取数组长度
public class test {
public static void main(String[] args) {
int[] arr1={11,12,13};
/*在java中,关于数组的一个长度属性,length
* 调用方式:数组名.length*/
System.out.println(arr1.length);
//扩展:自动的快速生成数组的遍历方式
//idea提供的
//数组名.fori
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
}
}
练习1:遍历数组求和
public class test {
public static void main(String[] args) {
int[] arr1={1,2,3,4,5};
int sum=0;
for (int i = 0; i < arr1.length; i++) {
sum+=arr1[i];
}
System.out.println(sum);
}
}
练习2:统计个数
public class test {
public static void main(String[] args) {
int[] arr1={1,2,3,4,5,6,7,8,9,10};
int n=0;
for (int i = 0; i < arr1.length; i++) {
if(arr1[i]%3==0){
System.out.println(arr1[i]);
n++;
}
}
System.out.println("能被3整除的个数为:"+n);
}
}
练习3:变化数据
public class test {
public static void main(String[] args) {
int[] arr1={1,2,3,4,5,6,7,8,9,10};
int n=0;
for (int i = 0; i < arr1.length; i++) {
if(arr1[i]%2==0){
arr1[i]/=2;
}
else{
arr1[i]*=2;
}
}
//遍历数组
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+",");
}
}
}
数组动态初始化
public class test {
public static void main(String[] args) {
String[] arr = new String[50];//动态初始化只指定数组长度
//添加
arr[0] = "ligen";
arr[1] = "xieweihao";
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);//打印出来的是默认初始化值null
//数组默认初始化值的规律
//整数类型:默认初始化值0
//小数类型:默认初始化值0.0
//字符类型:默认初始化值'\u0000'空格
//布尔类型:默认初始化值false
//引用数据类型:默认初始化值null
}
}
练习4:求最值
public class test {
public static void main(String[] args) {
int[] arr={33,5,22,44,55};
int max=arr[0];//max初始化的值一定要是数组中的值
for(int i=1;i<arr.length;i++){
//循环开始的条件如果为0,那么第一次循环的时候是自己跟自己比了一下,对结果没有任何影响,但是效率偏低,为了提高效率,减少一次循环的次数,循环开始的条件可以写1.
if(max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
}
}
练习5:遍历数组求和
练习6:交换数组中的数据
需求:定义一个数组,存入1,2,3,4,5。交换首尾索引对应的元素,
最终效果:5,4,3,2,1
public class test {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
for(int i=0,j=a.length-1;i<j;i++,j--){//
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(int k=0;k<a.length;k++){
System.out.print(a[k]+",");
}
}
}
练习7:打乱数组中的数据
思路:利用随机数生成随机索引,从数组的0索引开始与随机索引指向的元素进行交换,实现数据的打乱。
import java.util.Random;
public class test {
public static void main(String[] args) {
int[] a={1,2,3,4,5};
for (int i = 0; i < a.length; i++) {
Random rd=new Random();
int x=rd.nextInt(a.length);//获得0~4的随机索引
int temp=a[i];
a[i]=a[x];//拿随机索引指向的元素跟i指向的元素进行交换
a[x]=temp;
}
//当循环结束之后,那么数组中的所有数据已经打乱顺序了
for(int k=0;k<a.length;k++){
System.out.print(a[k]+",");
}
}
}
数组的内存图