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

重新建网站需要转域名吗推广app赚钱的平台

重新建网站需要转域名吗,推广app赚钱的平台,网站维护后期费用,会员网站免费建设文章目录一、数组的基础概念(是什么、定义、使用)二、数组进阶概念2.2 JVM的内部存储2.3 数组在内存中的存储2.4 数组传参 返回值2.5 数组的应用场景2.5.1 数组的查找2.5.2 toString 的自我实现2.5.3 数组排序2.5.4 数组拷贝2.6 二维数组一、数组的基础…

文章目录

  • 一、数组的基础概念(是什么、定义、使用)
  • 二、数组进阶概念
    • 2.2 JVM的内部存储
    • 2.3 数组在内存中的存储
    • 2.4 数组传参 + 返回值
    • 2.5 数组的应用场景
      • 2.5.1 数组的查找
      • 2.5.2 toString 的自我实现
      • 2.5.3 数组排序
      • 2.5.4 数组拷贝
    • 2.6 二维数组

一、数组的基础概念(是什么、定义、使用)

❤️什么是数组

  • 数组是一块连续的空间
  • 里面存放相同数据类型的集合
  • 下标是从0开始的,大小为数组长度 - 1

❤️如何定义数组

静态初始化:创建数组的时候,不指定个数,根据数据内容来确定

  • 第一种:int [ ] arr = {1, 2, 3, 4, 5};
    • 括号里面不能加数字,因为int [ ] 表示的是数组类型
    • 这是最常使用的,相比于第三种可以直观地看出数组的类型,相比于第二种省略了一些标识符
  • 第二种:int [ ] arr = new int [ ]{1, 2, 3, 4, 5};
    • new int [ ] 的括号里面不能放数字,因为int [ ] 表示的是数组类型
    • 没有指定个数,而是根据数组长度确定数组个数
    • 就含义而言,与第一种一模一样,只是写法不同,new表示新,即在内存中为这个变量开辟内存。new int [ ] 则表示为这个整型数组分配内存,并且赋值1、2、3、4、5
  • 第三种 int arr [ ] = {1, 2, 3, 4, 5};
    • C语言写法,不推荐,因为无法直观地看出类型

动态初始化:创建数组时,只说明数组的大小

  • 第四种:int [ ] arr = new int [5];
    • 创建一个元素为5的整型数组,但是没有初始化,int类型默认值是0
    • 如果想要指定赋值,需要arr[3] = 5; 根据数组下标指定

❤️数组的使用

  • 单个访问用数组下标
int[] arr1;             //truearr1 = new int[]{1,2,3,4,5};arr1[1] = 10;System.out.println(arr1[1]);  //方括号像C语言一样,自带解引用效果
  • 遍历数组
import java.util.Arrays;public static void main(String[] args) {int[] arr1 = {1,2,3,4,5};for (int i = 0; i < arr1.length; i++) {     //数组.length可以求得这个数组的长度System.out.print(arr1[i] + " ");}System.out.println();for (int x:arr1) {   //增强for循环,相比于第一种方法,无法看出该元素的下标System.out.print(x + " ");}//取出arr1里面的元素放到x中,然后打印System.out.println();System.out.println(Arrays.toString(arr1));//把数组转成字符串的形式打印,需要导包}

在这里插入图片描述

  • 数组填充
    • 可以用for循环填充
    • fill方法
public static void main(String[] args) {int[] arr = new int[10];System.out.println("最初值:" + Arrays.toString(arr));Arrays.fill(arr,1);System.out.println("全部初始化:" + Arrays.toString(arr));Arrays.fill(arr,0,5,4);    //[0, 5)System.out.println("局部初始化:" + Arrays.toString(arr));
}

❤️注意点

  • 数组越界访问会报错
  • 数组只有在定义的时候才可以整体初始化
    public static void main(String[] args) {int[] arr1;             //truearr1 = new int[]{1,2,3,4,5};int[] arr2;             //truearr2 = new int[5];/*int[] arr3;             //falsearr3 = {1,2,3,4,5}; */}
  • 数组没有初始化的时候,会有默认值
类型默认值
基本数据类型整型byte0
short0
int0
long0
浮点型float0.0f
double0.0
字符型char/u0000
布尔型booleanfalse
引用数据类型null

二、数组进阶概念

2.2 JVM的内部存储

在这里插入图片描述

2.3 数组在内存中的存储

在这里插入图片描述

  • int[ ] arr = null
    • null表示这个引用不指向任何空间,注意这个时候如果直接去访问这个数组是错误的 ------>空指针异常
  • 数组的互相赋值:
    public static void main(String[] args) {int[]arr1 = new int[5];int[]arr2 = new int[]{1,2,3,4,5};arr1 = arr2;System.out.println("把arr2赋值给arr1后:");System.out.print("arr1[0] = " + arr1[1] + "       ");System.out.println("arr1[0] = " + arr2[1]);System.out.println();arr1[1] = 10;System.out.println("把arr1[0]修改为10后");System.out.print("arr1[0] = " + arr1[1] + "       ");System.out.print("arr1[0] = " + arr2[1]);}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 数组传参 + 返回值

  • 数组的传参(改变了实参数据)
    public static void array(int[] arr){System.out.println(arr[0]);}public static void main(String[] args) {int[] arr = {1,2,3,4,5};array(arr);}

在这里插入图片描述

也是为什么某些情况下传过去的形参能够改变实参的原因,注意在调用完array方法后,形参arr会被销毁

  • 数组的传参(未改变实参数据)
    public static void fun(int[] arr){arr = new int[4];}public static void main(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 void main(String[] args) {int[]arr = fun();System.out.println(Arrays.toString(arr));}public static int[] fun() {int a = 2;int b = 3;return new int[]{a, b};}

在这里插入图片描述

2.5 数组的应用场景

2.5.1 数组的查找

❤️ 一个一个查找

    public static int search(int[]arr, int k){boolean flag = false;for (int i = 0; i < arr.length; i++) {if (arr[i] == k){flag = true;return i;}}return -1;}public static void main(String[] args) {int[]arr = {1,2,3,4,5,6,7};Scanner scanner = new Scanner(System.in);int k = scanner.nextInt();int index = search(arr,k);if(index != -1){System.out.println("在第" + (index + 1) + "个位置");}else{System.out.println("查无此数");}}

❤️ 二分查找(有序数组)

    public static int search(int[]arr, int k){int len = 0;int right = arr.length - 1;while (len <= right){int middle = (len + right) / 2;if (arr[middle] < k){len = middle + 1;}else if(arr[middle] > k) {right = middle - 1;}else{return middle;}}return -1;}public static void main(String[] args) {int[]arr = {1,2,3,4,5,6,7};Scanner scanner = new Scanner(System.in);int k = scanner.nextInt();int index = search(arr,k);if(index != -1){System.out.println("在第" + (index + 1)+ "个位置");}else{System.out.println("查无此数");}}

❤️库里的方法实现(无序/有序)

    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};System.out.println(Arrays.toString(arr));System.out.println(Arrays.binarySearch(arr, 29));Arrays.sort(arr);System.out.println(Arrays.toString(arr));System.out.println(Arrays.binarySearch(arr, 29));}

2.5.2 toString 的自我实现

    public static String myTostring(int[] arr){if (arr == null){return null;}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 = {1,2,3,4,5,6,7};System.out.println(myTostring(arr));}

2.5.3 数组排序

❤️库方法

Arrays.sort ( 数组名 );

    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};Arrays.sort(arr);System.out.println(Arrays.toString(arr));}

❤️冒泡排序

    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};bubberSelect(arr);System.out.println(Arrays.toString(arr));}public static int[] bubberSelect(int[]arr){for (int i = 0; i < arr.length - 1; i++) {boolean flag = false;for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]){int tmp = 0;tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;flag = true;}}if (flag == false){return arr;}}return arr;}

2.5.4 数组拷贝

❤️自己实现

    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};myCopyOf(arr);System.out.println(Arrays.toString(arr));}public static int[] myCopyOf(int[] arr){int [] arr2 = new int[arr.length];for (int i = 0; i < arr.length; i++) {arr2[i] = arr[i];}return arr2;}

❤️库方法

    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};System.out.println(Arrays.toString(arr));int[]ret = (Arrays.copyOf(arr, arr.length));System.out.println(Arrays.toString(ret));}

在这里插入图片描述
❤️指定拷贝

  • Arrays.copyOfRange
    public static void main(String[] args) {int[]arr = {4,6,2,7,29,56,32,1};int[] ret = Arrays.copyOfRange(arr, 6, 8);  //[6, 8)System.out.println(Arrays.toString(ret));}
  • System.arraycopy
    在这里插入图片描述
    public static void main(String[] args) {int[] arr = {4,6,2,7,29,56,32,1};int[] ret = new int[arr.length];System.arraycopy(arr,2, ret, 0,5);System.out.println(Arrays.toString(ret));}

在这里插入图片描述

❤️数组逆序

    public static void reverseArray(int[] array) {int i = 0;int j = array.length-1;while (i < j) {int tmp = array[i];array[i] = array[j];array[j] = tmp;i++;j--;}}public static void main(String[] args) {int[] arr = {1,2,3,4,5};reverseArray((arr));System.out.println(Arrays.toString(arr));}

2.6 二维数组

二维数组是特殊的一维数组

❤️二维数组的定义

public static void main(String[] args) {int[][] arr = {{1,2,3},{4,5,6}};int[][] arr2 = new int[2][3];int[][] arr3 = new int[][]{{1,2,3},{4,5,6}};
}

❤️二维数组的使用

  • 单个使用 ----------------> 用数组下标
    eg.arr[0][1] 、 arr[1][2]
  • 遍历数组

for循环

public static void main(String[] args) {int[][] arr = {{1,2,3},{4,5,6}};for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[0].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println();}}

foreach

public static void main(String[] args) {int[][] arr = {{1,2,3},{4,5,6}};for (int[]tmp:arr) {for (int x:tmp ) {System.out.print(x + " ");}System.out.println();}
}

Arrays.deepToString

public static void main(String[] args) {int[][] arr = {{1,2,3},{4,5,6}};System.out.println(Arrays.deepToString(arr));
}

❤️二维数组的特殊灵活性:
C语言中可以省略行,但是不能省略列,Java刚好相反,可以省略列,但是不能省略行

在这里插入图片描述

http://www.lbrq.cn/news/2633815.html

相关文章:

  • 做淘宝客网站推广被骗网络营销是以什么为中心
  • 大连华南网站制作公司游戏优化大师手机版
  • 建设厅官方网站响应式模版移动优化
  • 动态网站建设试卷推广产品的渠道
  • 手机原理网站百度推广费用预算表
  • 网站建设的步骤教程视频域名备案查询站长工具
  • 宜城网站建设哪家好网站如何推广运营
  • 微网站是什么时候创建的慧生活798app下载
  • 芜湖做网站哪家好seo优化总结
  • 做网站的技术难点网络推广的公司更可靠
  • 重庆建设机电网站好看的网站ui
  • 网站建设常用软件jas怎么做网站推广多少钱
  • 网站怎么做高权重最佳搜索引擎磁力王
  • 国家车辆保险网站推广普通话手抄报
  • 做欧美贸易的主要有哪些网站公司网站如何建设
  • 台州外发加工网百度网站优化方案
  • 百度收录提交入口上海哪家seo好
  • wordpress 所有页面空白网站优化公司哪家效果好
  • 你的网站尚未进行备案关键词排名优化官网
  • 广州 科技网站建设公司有效的网络推广
  • 温州手机网站制作联系电话友情链接的获取途径有哪些
  • 奢侈品牌河南seo推广
  • 网站右侧广告代码网络营销管理办法
  • 网站开发主流语言友情链接检索
  • wordpress 测速google 优化推广
  • 营销型网站模板下载合肥网络关键词排名
  • 微信分销网站开发国内网络销售平台有哪些
  • 莱芜网站设计公司游戏网站交换友情链接
  • 网站建设以什么盈利兰州seo外包公司
  • 做网站需要编程基础网页设计友情链接怎么做
  • 控制建模matlab练习13:线性状态反馈控制器-②系统的能控性
  • 微信小程序性能优化
  • Android Auto开发指南
  • 008 前端vue
  • Linux发行版分类与Centos替代品
  • 【模电笔记】—— 直流稳压电源——稳压电路