数组

数组是引用类型的变量

1.定义:

数据类型 []  数组名;如int[] array; 也可以采用C中方式定义int a[],但是不推荐

赋值

  1. 初始化时赋值(静态初始化)  int[]  a = {1,2,3,4,5};缺点:数组长度固定
  2. 动态初始化
int[] a = new int[5]; 
//默认值(0的类型含义)如果数组中的元素没有初始化,元素的值就是元素类型的默认值
如 int[] a = new int[] {1,2,3,4,5};

2.什么是引用类型?
1)引用类型是个线索,用来找到堆中的真正数据
2)引用类型也是值传递,形参的改变不会影响实参的值

int[] a = null;//只定义了一个数组类型的引用变量,没有数组对象,a没有指向任何数组
int[] a = {1,2,3,4,5}; int[] b = a;//b和a指向数组,若是b[0]=10,则a[0]=10;
public static void method1(int[] a){
a = new int[] {11,12,13,14,15};//生成新数组
}
public static void method2(int[] a){
a[0]=10;//改变数组的值
}
public static void main(String[] args){
int[] a = {1,2,3,4,5};
method1(a);//调用结束后a的值是{1,2,3,4,5},没有改变
method2(a);//a={10,2,3,4,5}
}

public static void swap(int[] a, int i, int j) {
		int t = a[i];
		a[i] = a[j];
		a[j] = t;
	}
public static void main(String[] args) {
		int[] a = { 1, 2, 3, 4, 5 };
		// 交换下标 0 和 下标 3 的数据
		System.out.println(a);
      }

 

3.变量:形参,局部变量-->栈, 属性-->堆 ,静态属性-->方法区
4.java中垃圾回收GC(Garbage Collection)
什么是垃圾?没有引用指向的对象(如数组)

5.编译错误:下标越界    "java.lang.ArrayIndexOutOfBoundsException"异常信息

int []   a = null; a[0] = 100;//数组属于引用数据类型,因此在使用之前一定要开辟空间(实例例化),否则就会产生
NullPoninterException;

6.匿名数组:binarySearch(new int[] {1,2,3,4,5},3)

数组操作:求数组长度       int[] a     a.length(是对属性的访问)      

                 求字符串长度    String s     s.length()(是对方法的调用)

数组遍历:1)for循环  for(i=0;i<a.length;i++){  a[i];  }

                  2)foreach形式  for(element : a){ element; } //java版本不同可能不支持
java内存中有3个区域:栈区 ; 堆区 ; 方法区(对象一定存在堆区,变量根据形式不同存放区域不同)

JDK支持的数组操作:
    java.util.Arrays 包,先导入才能使用import java.util.Arrays
    java.lang.System 包

7.二维数组的数据类型是引用类型    
多维数组存的元素类型是引用,可以有阶梯状的数组(数组列数可以不同)

8.练习代码:包括交换数组元素,查找元素,复制数组,二分查找,数组置为指定值

https://github.com/Consini/JavaSE/blob/master/Course3%E6%95%B0%E7%BB%84-0718/Course3.java

练习:1)将偶数放在前面,奇数放在后面。     

2)旋转数组   

public static boolean[] copyOfRange(boolean[] original,int from, int to)
//将数组original的从from(包含)到to个元素复制到新数组中,返回的数组长度为to-from

 

public static void arraycopy(Object src,// 源数组。 
                             int srcPos,//源数组中的起始位置。
                             Object dest,//目标数组
                             int destPos,//目的地数据中的起始位置。
                             int length)//要复制的数组元素的数量。

  3)求数组去掉最大值和最小值后的平均值     

  4)冒泡排序

https://github.com/Consini/JavaSE/blob/master/Course4%E6%95%B0%E7%BB%84-0719/Course4.java

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值