Java数组,数组声明,数组初始化,内存图分析,arraycopy(),java.util.Arrays类,二维数组的声明和初始化

目录

1:数组的声明

2:数组的初始化

2:数组的遍历

3:arraycopy()

 4:import java.util.Arrays类

4.1:Arrays.toString(数组名),打印数组的内容

 4.2:Arrays.sort(数组名),对数组进行排序

4.3:Arrays.fill(数组名) 对数组内容进行填充

 5:二维数组的声明与初始化和内存图分析

6: 利用二维数组和javabean以及一维数组打印表格数据


1:数组的声明

tpye[] arr_name

type arr_name[]

数组是对象,数组中的元素是对象的属性

对象的属性没有初始化,系统会默认初始化

2:数组的初始化

int[] s=null;//声明数组
		s=new int[10];//给数组分配空间
		for(int i=0;i<10;i++) {
			s[i]=i*2+1;//给数组元素赋值
			System.out.println(s[i]);
		}

 

class Man {
	private int age;
	private int id;
	Man(int age,int id){
		super();
		this.age=age;
		this.id=id;
	}
	
}

public class shuzu {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Man[] mans;//声明应用类型数组
		mans=new Man[10];//给引用类型数组开辟空间
		Man m1=new Man(1,11);
		Man m2=new Man(2,22);
		mans[0]=m1;//给引用类型数组赋值
		mans[1]=m2;
		for(int i=0;i<10;i++) {
			System.out.println(mans[i]);
		}
	}
}

 null是因为

 

●静态初始化:创建数组的时候直接为其分配空间并赋值

●动态初始化:数组的创建以及开辟空间和赋值是分开的

●默认初始化:由于数组是对象,他的元素就是对象的属性,每个元素就会按照对象同样的方式进行隐式初始化

2:数组的遍历

foreach增强for循环

public class Array {
    private int id;
    private String name;
    Array(int id,String name){
        this.id=id;
        this.name=name;

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Array{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public static void main(String[] args) {
        Array[] arr=new Array[4];
        Array a1=new Array(10,"老卢");
        arr[0]=new Array(11,"老王");
        arr[1]=a1;
        for(int i=0;i<arr.length;i++){
            Array m=arr[i];
            System.out.println(m);
        }
        //增强for循环
        for(Array a:arr){
            System.out.println(a);
        }
    }
}

3:arraycopy()

源码:public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos,int length);

src:源头数组

srcPos:从源头数组第几个索引开始复制

dest:目标数组

destPos:复制到目标数组的第几个索引

length:复制的长度

看下面代码

package com;

public class TestArrayCopy {
    public static void main(String[] args) {
        String[] arr={"高","等","代数","我操!!!"};
        String[] arr2=new String[6];

        System.arraycopy(arr,0,arr2,0,arr.length);
        for(String i:arr2){
            System.out.println(i);
        }

    }
}

 4:import java.util.Arrays类

java.util.Arrays类包含了常规的数组打印,排序,查找,填充等操作

4.1:Arrays.toString(数组名),打印数组的内容

toString()是静态方法,需要类名来调用

import java.util.Arrays;
public class TestToString {
    public static void main(String[] args) {
        String[] arr={"我","hello"};
        System.out.println(Arrays.toString(arr));
    }
}

 4.2:Arrays.sort(数组名),对数组进行排序

import java.util.Arrays;
public class TestToString {
    public static void main(String[] args) {
        String[] arr={"我","hello"};
        int[] arr2=
                {1,2,5,2,2,8,6,3,2,0};
        //打印数组
        System.out.println(Arrays.toString(arr));
        //对数组进行排序
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));
    }
}

4.3:Arrays.fill(数组名) 对数组内容进行填充

import java.util.Arrays;
public class TestToString {
    public static void main(String[] args) {
        String[] arr={"我","hello"};
        int[] arr2= {1,2,5,2,2,8,6,3,2,0};
        String[] arr3={"I","am","eating"};//[0-2]

        //打印数组
        System.out.println(Arrays.toString(arr));
        //对数组进行排序
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));
        //对数组内容进行填充
        Arrays.fill(arr3,0,2,"O");//[0,1]
        //和substrin()一样,包头不包尾
        System.out.println(Arrays.toString(arr3));
    }
}

 5:二维数组的声明与初始化和内存图分析

二维数组里面的元素是对象,也就是说二维数组里面的元素是一维数组

public class TestTwoArray {
    public static void main(String[] args) {
        int[][] arr=new int[4][];//三行的二维数组
        //二维数组的声明,从低维到高维声明
        arr[0]=new int[3];//第一个元素指向的是一个对象,一个以为数组,里面有3个元素
        arr[1]=new int[2];
        arr[2]=new int[3];
        arr[3]=new int[1];
        //二维数组的动态初始化
        arr[0]=new int[]{1,2,4};
        arr[1]=new int[]{5,6};


    }
}

6: 利用二维数组和javabean以及一维数组打印表格数据

public class Form {
    //javaBean形式
    private int id;
    private String name;
    private String form;
    private float price;
    private double discount;

    Form(int id, String name, String form, float price, double discount) {
        this.id = id;
        this.name = name;
        this.form = form;
        this.price = price;
        this.discount = discount;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getForm() {
        return form;
    }

    public void setForm(String form) {
        this.form = form;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public double getDiscount() {
        return discount;
    }

    public void setDiscount(float discount) {
        this.discount = discount;
    }

    @Override
    public String toString() {
        return "[" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", form='" + form + '\'' +
                ", price=" + price +
                ", discount=" + discount +
                ']';
    }

    public static void main(String[] args) {
        Form[] f = new Form[3];
        f = new Form[]{new Form(1, "大一", "战斗性", 100, 1.9),
                new Form(

                        2, "大二", "侵略性", 200, 0.5),
                new Form(3, "大三", "疯癫型",
                        400, 0.3)};
        for (Form i : f) {
            System.out.println(i);
        }
        //Java的方法定义在main函数外面
        System.out.println(price(f));
    }
    public static int price(Form[] t) {
        int count = 0;
        int count1=0;
        for (int i = 0; i < t.length; i++) {
            if (t[i].price > 100) {
                count++;
            }
//            t[i].id>100?count++:count1++;
        }
        return count;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值