JAVA05-数组、Arrays工具类的使用、冒泡排序、选择排序、方法传参和返回值相关知识梳理

本文详细介绍了数组的基本概念,包括数组的定义、特点、初始化方式及如何进行遍历、查找和更改等操作。此外还展示了如何利用Arrays工具类进行排序、复制等操作,并提供了冒泡排序和选择排序的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组的定义
存储一组数据的容器

数组的特点
数据类型完全一致
大小固定
存值有顺序,数组有下标

声明数组
int[] a;(声明)
int a[];

静态初始化
int[] a={1,5,6,9};(推荐)
int a[]={1,5,6,9};

动态初始化
String[] a=new String[5];(推荐)
String a[] =new String[5];

数组的遍历

package com.qf;

public class test4 {
    public static void main(String[] args) {
        int[] a = {1,3,5,7,9,8};
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }
}

因为数组中有下标,可以通过下标去寻找对应的数的位置,数组适合做增删改查中的查找和更改。
数组的查找

package com.qf;

public class test4 {
    public static void main(String[] args) {
        int[] a = {1,43,25,37,94,18};
        for(int i=0;i<a.length;i++){
            if(a[i]==25){
                System.out.println("数组中存在数25下标为"+i);
            }
        }
    }
}

数组的更改

package com.qf;

import java.lang.reflect.Array;
import java.util.Arrays;

public class test4 {
    public static void main(String[] args) {
        int[] a = {1,43,25,37,94,18};
        for(int i=0;i<a.length;i++){
            if(a[i]==25){
                a[i]=40;
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

Arrays工具类的使用

现有数组int[] a = {1,23,45,65,-21,92,89};
a.排序: Arrays.sort(a);

b.复制 : int[] b = Arrays.copyOf(a,a.length);

c.查找 :查找需要先对数组进行升序再查找
查找结果如果由下标则得到下标,否则结果为负数
int b = Arrays.binarySearch(a,36)

d.填充 :将所有的值都填充为某一个值
Arrays.fill(a,11);

e.把数组中的元素拼接成一个字符串 等同于遍历
String b = Arrays.toString(a);

冒泡排序

package com.qf;

import java.lang.reflect.Array;

public class test4 {
    public static void main(String[] args) {
        int[] a = {1,43,25,37,-5,-9,94,18};
        //冒泡排序
        //外层循环,表示循环的次数
        for(int i =0;i<a.length-1;i++){
            //内层循环表示从第一个数值开始向后比较,比较a.length-1-i次
            for(int j=0;j<a.length-1-i;j++){
                if(a[i]>a[j+1]){
                    int temp = 0;
                    temp = a[i];
                    a[j+1]=a[i];
                    a[j+1]=temp;
                }
            }
        }
    }
}

选择排序

package com.qf;

import java.lang.reflect.Array;
import java.util.Arrays;

public class test4 {
    public static void main(String[] args) {
        int[] a = {1,43,25,37,-5,-9,94,18};
        //选择排序
        //外层循环,表示循环的次数
        for(int i =0;i<a.length-1;i++){
            //内层循环表示选择和剩下的多少个值进行比较
            for(int j=i+1;j<a.length;j++){
                if(a[i]>a[j]){
                    int temp = 0;
                    temp = a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

基本数据类型和引用数据类型的内存分析

a.内存模型广义上分为堆内存和栈内存
b.栈内存存值有顺序,基本数据类型都是存储在栈内存中
c.堆内存存值无顺序,引用数据类型都是存储在堆内存中
d.所有的变量都是存储在栈内存中,并且变量中存储的都是内存地址
e.java中所有的参数传递都是值传递,值传递本质就是传递内存地址

方法的传参和返回值

1.基本数据类型作为参数进行传递时
形参做任何改变,实参不受影响

public class test4 {
    public static void change(int a){
        a = 15;
        System.out.println(a);
    }

    public static void main(String[] args) {
       int a =10;
        System.out.println(a);
        test4.change(a);
        System.out.println(a);
    }
}

2.引用数据类型作为参数进行值传递时
String类型较为特殊,当其实参使用静态初始化时(String a=“123”),其结果可以看做和基本数据类型一样
除此之外,其它引用数据类作为参数进行传递时,形参只要不重新new,形参对内容发生任何更改,对实参有影响

import java.lang.reflect.Array;
import java.util.Arrays;

public class test4 {
    public static void change(int[] a){
        //a=new int[]{1,2};
        a[0]=18;
        System.out.println(Arrays.toString(a));
    }

    public static void main(String[] ss){
        int[] b=new int[]{1,2,3,4,5,6};
        System.out.println(b);
        System.out.println(Arrays.toString(b));//[1,2,3,4,5,6]
        test4.change(b);
        System.out.println(Arrays.toString(b));//[18,2,3,4,5,6]
    }
}
  • 解释:java中所有的参数传递都是值传递,值传递本质就是传递内存地址
  • 总结:在做参数传递时
    • 1.如果参数是基本数据类型时,那么传递是具体值(等同于内存地址)
    • 2.如果参数是引用数据类型时,那么传递是该变量所指向的内存地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值