当前位置: 首页 > news >正文

从0开始学java--day6.5

今天把昨天的数组剩余部分讲完,因为数组已经快接近尾声,可能理论不是很多,这一次会更加着重写题目~

先来认识一下Java中一个专门针对数组进行操作的包装方法:Arrays


可以私下了解一下,这里举例一个数组以字符串形式输出的方法:

如果想要这个的话可以评论区走一波私发一起进步~

public static void main1(String[] args) {//数组定义int[] arr={1,2,3,4,5,6};int[] arr2=new int[]{7,8,9,10};//数组对象//不初始化都是0值,出了布尔类型,布尔类型是falsefor (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println("");//增强for循环,for each循环for (int x:arr2) {//右边是数组名,左边是当前这个数字//遍历数组,取出其中的数据给到变量System.out.print(x+" ");}System.out.println();//操作数组的工具类String ret = Arrays.toString(arr);//使用Arrays的toString方法把传入的参数arr表示的数组以字符串的形式进行输出System.out.print(ret+" ");}

然后是Java个数组名指向了同一个元素的时候,无论使用哪一个数组名进行操作都可以对指向的那个数组进行修改!~

public static void main(String[] args) {int[] arr = {1,2,3,4};int[] arr2={4,5,6,7};arr=arr2;//只要两个指向了同一个数组,那么无论哪一个数组都可以修改arr[1]=7;arr2[0]=5;for(int i=0;i<arr2.length;i++){System.out.print(arr2[i]+" ");}}

可以看到原本指向的是arr2,里面是4,5,6,7,经过修改之后1地址值变成7,0地址值变成5,都是运行成功没有问题的~

再来看一个小题目:将数组中的每一个元素都扩大两倍

public static void fun(int[] arr){for (int i=0;i< arr.length;i++){arr[i]=arr[i]*2;//直接*2即可!~}}public static void main4(String[] args){int[] arr={1,2,3,4,5};System.out.println(Arrays.toString(arr));fun(arr);System.out.println(Arrays.toString(arr));}

然后就是一个很好玩的代码~来看看吧

public static String dun(int[] arr){String ret = "[";  // 初始化字符串,以左方括号开始// 遍历数组中的每个元素for (int i = 0; i < arr.length; i++) {ret += arr[i];  // 将当前数组元素添加到结果字符串中// 如果不是最后一个元素,添加逗号和空格分隔符if (i != arr.length - 1) {ret += ", ";}}ret += "]";  // 在字符串末尾添加右方括号return ret;   // 返回格式化后的字符串}public static void main(String[] args) {int[] arr = {2, 4, 6, 8, 10};System.out.println(dun(arr));   // 调用dun方法并打印结果// 输出: [2, 4, 6, 8, 10]}

这样可以模拟一个数组的样式~一维数组的差不多就是这个样子啦,来做点题目吧~

import java.util.Arrays;public class pp_25 {//是否存在连续三个奇数的数组  如果存在,请返回 true ;否则,返回 false 。public static void main(String[] args) {int[] arr = {1,2,3,4,5,3,5};boolean flg = false;int count = 0;for (int i = 0; i < arr.length; i++) {if (arr[i] % 2 != 0) {count++;if (count == 3) {       // 如果连续奇数达到3个flg = true;break;              // 找到后提前结束循环}} else {count = 0;}}System.out.println(flg);  // 输出:false}//数组中出现次数 大于 n/2 的元素public  static int fun(int[]arr){Arrays.sort(arr);return arr.length/2;//返回数组长度除以2的整数结果//因为数组中某个数量最多,然后按照顺序来那肯定是某个数量占大多数//中间的一定是最多的,比如10个球4个红的6个黑的,中间值5一定是黑的}public static void main8(String[] args) {int[]arr={1,2,2,2,1};System.out.println(fun(arr));}//只出现一次的元素public static void main7(String[] args) {int[]num={2,2,1};int res=0;for (int num1:num){res ^= num1;}System.out.println(res);}//给定一个整数数组 num 和一个整数目标值 target,// 请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。public static int[] twoSum(int[] num,int target){for (int i=0;i< num.length;i++){for (int j=i+1;j< num.length;j++){if(num[i]+num[j]==target){//前一位和后一位相加比较return new int[]{i,j};}}}return new int[0];//没有找到}public static void main6(String[] args) {int[] num = {2,7,11,15};int target=9;int[] res=twoSum(num,target);System.out.println(Arrays.toString(res));}//给定一个整型数组, 实现冒泡排序(升序排序)public static void main5(String[] args) {int[] arr={44,2,1,11,23,45,6};boolean flg=false;for (int i=0;i< arr.length-1;i++){flg=false;for (int j=0;j< arr.length-1-i;j++){if(arr[j]>arr[j+1]){int tmp = arr[j];arr[j]=arr[j+1];arr[j+1]=tmp;flg=true;//交换了}}if(flg==false){break;}}System.out.println(Arrays.toString(arr));}//二分查找public static int bs(int[] arr,int key){int left=0;int right = arr.length-1;while (left<=right){int mid=(left+right-1);if(key<arr[mid]){right=mid-1;} else if (key>arr[mid]) {left=mid+1;}else {return mid;}}return -1;}public static void main4(String[] args) {int[] arr = {1,2,3,4,5,6};System.out.println(bs(arr,5));}//调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。public static void main3(String[] args) {int[] arr={1,2,3,4,5,6};System.out.println("转换前:"+Arrays.toString(arr));int[] arr2=new int[arr.length];int index=0;for (int i=0;i< arr.length;i++){if(arr[i]%2!=0){arr2[index]=arr[i];index++;}}for (int i = 0; i < arr.length; i++) {if(arr[i]%2==0){arr2[index]=arr[i];index++;}}System.out.println("转换后"+Arrays.toString(arr2));}//实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素// 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3},// 修改之后为 {2, 4, 6}public static void transform(int arr[]){for (int i=0;i< arr.length;i++){arr[i]=arr[i]*2;}}public static void main2(String[] args){int[] arr={1,2,3};System.out.println("原数组为:"+ Arrays.toString(arr));transform(arr);System.out.println("修改之后为:"+ Arrays.toString(arr));}}
}

习题举例完了,这些都是比较基础的操作,但是平时也不能不复习,否则若干天之后你连看都看不懂~一定要记住学习是一个积累的过程~

来看看二维数组:(和C差不多,直接上代码锻炼读代码能力)

public static void main(String[] args) {//不规则二维数组int[][] arr=new int[2][];arr[0]=new int[4];//第一行四个arr[1]=new int[6];//第二行六个for (int i=0;i< arr.length;i++){for (int j =0;j<arr[i].length;j++){System.out.print(arr[i][j]);}System.out.println();}}public static void main1(String[] args) {//二维数组//java中二维数组是一个特殊的一维数组,每一行都是一个新的地址int[][] arr = {{1, 2, 3}, {4, 5, 6}};int[][] arr2=new int[][]{{1,2,3},{4,4,5}};int[][] arr3=new int[2][3];//java中二维数组不可以省略行int[][]arr4=new int[2][];//不规则二维数组//遍历/*for (int i = 0; i < 2; i++) {for (int j=0;j<3;j++){System.out.print(arr[i][j]+" ");}System.out.println();}*/System.out.println();//java中二维数组是一个特殊的一维数组,每一行都是一个新的地址System.out.println(Arrays.toString(arr[0]));System.out.println(Arrays.toString(arr[1]));System.out.println();//也就是说arr数组其实是两个元素,每个元素都是一个数组for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println();}System.out.println();for (int[] tmp : arr) {      // 遍历二维数组的每一行for (int x : tmp) {      // 遍历当前行的每个元素System.out.print(x + " ");  // 打印元素加空格}System.out.println();    // 换行到下一行}}

如果有什么遗漏的欢迎补充~

学尔不思则罔,思而不学则殆。希望大家在学习完基础知识之后不要忘记拿着这些知识去刷题,增强记忆力以及培养思考能力以及写出良好代码的习惯。希望除了在博客分享基础外还能再在力扣、洛谷再次见面~

http://www.dtcms.com/a/528396.html

相关文章:

  • 厦门网站制作公司域名注册需要多少钱
  • AN-25101701 UG56网关与WS101传感器连接TKE132 LoRaWAN服务器指导说明书
  • 如何做网站制作杭州高端网站建设到蓝韵网络
  • Z.EntityFramework.Extensions.EFCore 批量更新(BulkUpdate)指定字段
  • MLLM-LLaVA-FL: Multimodal Large Language Model Assisted FederatedLearning
  • 欧美教育网站模板中国建设银行信用卡网站首页
  • 【同步 / 异步 日志系统】--- 全局接口 性能测试
  • GitHub等平台形成的开源文化正在重也有人
  • 03_Pushgateway使用Prometheus的服务发现机制
  • Speckit和Claude 的初体验
  • 当夸克遇上大模型:中国 AI 产品的“第二阶段”来临了
  • AI大模型弹性伸缩实战:自动扩缩容+模型轻量化+Serverless三大技术方案详解
  • 网站怎么做的qq邮件订阅页面设计存在的问题
  • CMP(类ClouderaCDP7.3(404次编译) )完全支持华为鲲鹏Aarch64(ARM),粉丝数超过200就开源下载
  • HeidiSQL的下载安装和使用
  • 线性代数直觉(五):行列式——让空间坍缩
  • word文档模板通过poi-tl导出问题注意点
  • Java在大数据分布式存储中的创新实践
  • ThinkPHP5 RCE+Linux find提权渗透实战:原理+复现(CVE-2018-20062)
  • 昆明网站排名优化电商网站的功能
  • 代码随想录Day59|dijkstra(堆优化版)精讲、Bellman_ford 算法精讲
  • 四川住建厅官方网站的网址教务管理系统学生登录入口
  • [MySQL]数据类型
  • 3w字一文讲透Java IO
  • 多模态学习大纲笔记(未完成)
  • 组织学习障碍:自我证明的陷阱
  • 【数据结构】顺序表的实现
  • 可以做兼职的网站质量好网站建设多少钱
  • 无声的战争:自动驾驶系统中的资源抢占、调度与生存法则
  • 30-机器学习与大模型开发数学教程-3-4 矩阵的逆与伪逆