java基本语法(数组中-复制、反转和查找)

1.复制:深度复制(新建了一个空间)和浅度复制(两个数组名指向同一块地址)

package start;
public class YuFa {
public static void main(String[] args) {
//    对于单个变量,复制值的时候都是深度复制,是新开辟了一块空间
        int a = 4;
        int b = a;
//        改变a的值,但b的值不变
        a = 2;
        System.out.println("a的值变为2,此时b的值为:" + b);
//        数组的浅度复制(两个数组名指向同一块地址)
        int[] c = new int[] {1,2,3};
        int[] d = c;
        c[0] = 0;
        System.out.println("c[0]的值变为0,此时d[0]的值为:" + d[0]);
//        数组的深度复制(新建了一个空间)
        c[0] = 1;//还原c数组
        int[] e = new int[c.length];
        for (int i = 0;i < c.length;i++) {
            e[i] = c[i];    
        }
        c[0] = 0;
        System.out.println("c[0]的值变为0,此时e[0]的值为:" + e[0]);
    }
}

2.数组的反转

package start;
public class YuFa {
public static void main(String[] args) {
    int[] a = {1,2,3,4,6,0,8};
//    数组反转 方法一,数组的对半替换,a[i]与 a[a.length - i - 1]交换位置
    for(int i = 0;i < a.length / 2;i++) {
//        交换位置
        int tmp = a[i];
        a[i] = a[a.length - i - 1];
        a[a.length - i - 1] = tmp;
    }
//    打印出数组
    for (int i = 0;i < a.length;i++) {
        System.out.print(a[i] + " ");
    }
    System.out.println(" ");
//    数组反转 方法二,数组的对半替换,a[i]与 a[j]交换位置
    for (int i = 0,j = a.length - 1;i < j;i++,j--) {
        int tmp2 = a[i];
        a[i] = a[j];
        a[j] = tmp2;
    }    
//    打印出数组
    for (int i = 0;i < a.length;i++) {
        System.out.print(a[i] + " ");
    }    
    }
}

3.查找:包括线性查找和二分查找两种情况:

package start;
public class YuFa {
public static void main(String[] args) {
//    变量初始化,要查找的元素和数组
    int[] a = new int[] {1,3,4,6,7,10,90,45};
    int destination1 = 100;
    String[] s = {"a","b","c","d","e","f","g"};
    String destination = "c";
//    设置标志变量,方便判断是否找到
    boolean isFlag = true;
//    线性查找
    for(int i = 0;i < s.length;i++) {
        if(s[i].equals(destination)) {
            isFlag = false;
            System.out.println("已经找到该元素,其下标(索引)为: " + i);
            break;
        }
    }
    if(isFlag) {
        System.out.println("抱歉,数组中不存在该元素");
    }
//    二分查找,查找的前提是数组是顺序排列的
    isFlag = true;
//    定义查找的范围,以及查找的中间元素
    int head = 0;
    int end = a.length - 1;
    while(head <= end) {
        int middle = (head + end) / 2;
        if(a[middle] == destination1) {
            isFlag = false;
            System.out.println("已经找到该元素,其下标(索引)为: " + middle);
            break;
        }
        else 
            if(a[middle] > destination1){
                end = middle -1;
        }
            else {
                head = middle + 1;
            }

    }
    if(isFlag) {
        System.out.println("抱歉,数组中不存在该元素");
    }            
}
}
全部评论

相关推荐

2025-12-08 16:04
门头沟学院 Java
本人本科末9,今年大三。大一大二一直玩,什么都没学到,在大学混日子混了两年,每天不是在打农就是在steam。大三开学时一个和自己玩的好的同学去实习了,才发现自己白白浪费了两年的时间,如果真不冲一下就真去京东,阿里,美团送外卖了今年9月份开始学Java,一开始一直跟着黑马视频看,后面发现看视频效率太低了,时间根本不够,就开始主要看文档和看书了。这几个月一直在学,真的尽力了,希望暑期前能找一份好点的实习。我简历上面的项目大多没有指标,但是实际上我是真没多少时间去做项目,我基本主要是动手只做了外卖和天机,黑马点评和12306我都是只是看了项目。主要是自己的时间真的不多,但是这样子自己的代码能力确实比较差。而且自己也没有做过实际的工程,我顶多用jmeter测试一下接口tps啥的,比如使用Redis管道提升了一点性能,减少Redis交互,这种值得写上去吗?需不需要具体到某些数字求求各位佬给一些建议,看看简历怎么优化?项目介绍是不是不够详细?没有具体到业务方面。项目会不会提到大致实现原理导致面试官一看简历就知道怎么实现就没有问的欲望?专业技能一些字段是不是要加粗,是不是写太啰嗦了?有没有必要压缩内容变成一页?两页的话是不是都要把两页填地满满的。
给秋招一个交代:一页简历最好,网上做的项目放面试官眼里都是玩具,简历上不需要强调有什么难点,记住就行防止真的问。然后背八股,多投多面试就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务