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

新手容易上手的cms做企业网站西丽网站建设

新手容易上手的cms做企业网站,西丽网站建设,2021安全员证报名入口,吉林移动网站目录 本章的目标#xff1a; #x1f388;数组的基本概念 #x1f36d;创建数组 #x1f36d;数组的初始化 #x1f36d;数组的使用 #x1f449;数组中元素访问 #x1f449;遍历数组 #x1f388;数组是引用类型 #x1f36d;初始JVM的内存分布 #x1f…目录 本章的目标  数组的基本概念 创建数组 数组的初始化 数组的使用 数组中元素访问 遍历数组 数组是引用类型 初始JVM的内存分布 基本类型变量与引用类型变量的区别 基本数据类型变量 引用数据类型变量 再谈引用变量 认识null 数组的应用场景 保存数据 作为函数的参数 作为函数的返回值 二维数组 创建二维数组 数组转为字符串 二维数组的解析 遍历 不规则的二维数组 本章的目标  数组的基本概念 什么是数组 可以看成是 相同类型元素的一个集合 。在内存中是一段连续的空间。 在 java 中包含n个整形类型元素的数组。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号其实位置的编号为0即数组的下标。 创建数组 T[] 数组名 new T[N];T表示数组中存放元素的类型 T[]表示数组的类型 N表示数组的长度 public static void main(String[] args) {int[] array1new int[5]; //创建一个可以容纳5个int类型元素的数组double[] array2new double[5];// 创建一个可以容纳5个double类型元素的数组float[] array3new float[5];// 创建一个可以容纳5个float类型元素的数组} 我们可以对比c语言的创建数组int arr[N]{0,1,2}; java创建数组是 int[] arrnew int[N]; 其实我们更可以看到java 更能理解因为arr是数组名它是Int[]类型是数组arr的类型而c语言中arr是数组名int是数组里面的值的类型,并不是数组的类型数组的类型是int[]。 该种定义方式不太友好容易造成数组的类型就是 int 的误解 [] 如果在类型之后就表示数组类型因此 int[] 结合在一块写意思更清晰。 数组的初始化 数组的初始化主要分为 动态初始化以及静态初始化 。 静态初始化在创建数组时不直接指定数据元素个数而直接将具体的数据内容进行指定 语法格式 T[] 数组名称 {data1, data2, data3, ..., datan}; int[] array1 new int[]{0,1,2,3,4,5,6,7,8,9};//静态 double[] array2 new double[]{1.0, 2.0, 3.0, 4.0, 5.0};//静态 String[] array3 new String[]{hell, Java, !!!};//静态 动态初始化在创建数组时直接指定数组中元素的个数 int [] array new int [ 10 ]; int[] array1 new int[10]//动态 double[] array2 new double[10];//动态 String[] array3 new String[10];//动态 【注意事项】 静态初始化虽然没有指定数组的长度编译器在编译时会根据{}中元素个数来确定数组的长度。 注意在数组中可以通过 数组对象.length 来获取数组的长度 静态初始化时, {}中数据类型必须与[]前数据类型一致。 静态初始化可以简写省去后面的new T[]。 int[] array{1,2,3,4};//静态初始化可以省略new T[]; 静态和动态初始化也可以分为两步但是省略格式不可以 int[] array; arraynew int[10];//静态初始化的拆分 int[] array1; array1new int[]{1,2,3,4};//动态初始化的拆分 这里就不能省略new.  如果没有对数组进行初始化数组中元素有其默认值 如果数组中存储元素类型为基类类型默认值为基类类型对应的默认值 如果数组中存储元素类型为引用类型默认值为null 在一般实际的做题目中我们用到的最多的是int[] arrnew int[N],因为这样会给默认值然后开辟了N个长度的数组然后我们依次赋值。 数组的使用 数组中元素访问 数组在内存中是一段连续的空间空间的编号都是从 0 开始的依次递增该编号称为数组的下标数组可以通过 下标访问其任意位置的元素。 【注意事项】 1.数组是一段连续的内存空间因此 支持随机访问即通过下标访问快速访问数组中任意位置的元素 2. 下标从 0 开始介于 [0, N 之间不包含 N N 为元素个数不能越界否则会报出下标越界异常。 所以访问数组的下标不能到array[array.length]不能取到长度。 遍历数组 所谓 遍历 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作比如打印。 for-i遍历数组 使用 for-each 遍历数组 俩者的不同之处是 for-i 可以访问到下标如果对数组中的第二位置的值1那么就可以用for-i则不可以使用for-each。for-each不可以访问到下标不需要取到特定的值即可用。 借用Java本身提供的一些方法来实现数组的打印 这里首先需要介绍一个 工具类可以理解为C语言里面的头文件Arrays        其主要作用是帮助对数组进行一个操作详情可查找帮助手册 我们可以再成长手册或者这里可以看到有很多类型的数组这里就表示重载后面我会详细说。现在可以理解为哪种数组类型就调用哪个哪个。这里是int类型那么我们就toString(int[] a). 这里用数组转换成字符串形式我们可以看到加了[]为啥会加[]我们可以再toString中ctrl鼠标左键进入源码中查看 现在我们并不能完整的看懂这段底层实现的代码我们可以根据现象直接实现,[123]这种形式我们自己实现一下。 public static void myString(int[] array){System.out.print([);for(int i0;iarray.length;i){if(i!array.length-1) {System.out.print(array[i],);}else System.out.print(array[i]);}System.out.print(]);}public static void main(String[] args) {int[] array{1,2,3,4};myString(array);} 数组是引用类型 初始JVM的内存分布 而现在我们只简单关心堆 和 虚拟机栈这两块空间后序JVM中还会更详细介绍。 虚拟机栈(JVM Stack): 与方法调用相关的一些信息每个方法在执行时都会先创建一个栈帧栈帧中包含 有局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息保存的都是与方法执行时相关的一 些信息。比如局部变量。当方法运行结束后栈帧就被销毁了即栈帧中保存的数据也被销毁了。堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2, 3} )堆是随着程序开始运行时而创建随着程序的退出而销毁堆中的数据只要还有在使用就不会被销毁。 基本类型变量与引用类型变量的区别 基本数据类型创建的变量称为基本变量该变量空间中直接存放的是其所对应的值 引用数据类型创建的变量一般称为对象的引用其空间中存储的是对象所在空间的地址 基本数据类型变量 引用数据类型变量 我们大标题是数组是引用数据类型 我们就根据数据来阐述。 我们可以通过ox77的地址找到对象。这里的array是变量引用变量存储的是对象的地址引用(指向一个数组对象。这个数组对象在堆区我们需要存储这个对象的地址所以array这个变量存储了叫做引用变量。 引用变量并不直接存储对象本身可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址引用变量便可以去操作对象 。有点类似 C 语言中的指针但是 Java 中引用要比指针的操作更简单。 再谈引用变量 我们现在给引用变量修改值或者一个数组给另一个数组是如何运行的。 场景1 这个底层是如何实现的呢 array引用变量存储的是数组对象的首元素的地址都初始化成默认值0然后我们对下标为0和下标为1的位置对应的值进行改变还是对堆上的空间进行改变array并没有新开一个空间。所以最终array前后打印的值是不一样的。 场景2 这个场景可能有些迷了array1和array2该输出什么呢我们一步一步的分析。 场景3 由于array1的空间给了array2那么对array1的改变array2也改变了。 场景四 认识null null 在 Java 中表示 空引用 , 即一个不指向对象的引用。 null 的作用类似于 C 语言中的 NULL ( 空指针 ), 都是表示一个无效的内存位置 . 因此不能对这个内存进行任何读写操 作. 一旦尝试读写 , 就会抛出 NullPointerException. 数组的应用场景 保存数据 public static void main(String[] args) {int[] array {1, 2, 3};for(int i 0; i array.length; i){System.out.println(array[i] );} } 作为函数的参数 我们调用func1首先a引用变量存放ox13的地址再调用这个函数是arr也指向a的空间然后arr开辟一个空间地址是0x99然后arr指向了地址为0x99的空间但是a指向的空间并没有改变。所以打印的结果还是1234。 调用func2呢 a引用变量存的是0x13的地址指向了一块空间调用func2也指向了这块空间然后arr对0位置进行改变就是相当于对这片空间的下标为0的位置改变。 发现在 func 方法内部修改数组的内容 , 方法外部的数组内容也发生改变 . 因为数组是引用类型按照引用类型来进行传递是可以修改其中存放的内容的。 上面俩种调用    第一种修改了自己的指向(因为自己开了一块空间)自己是形参所以对自己的修改并不会影响实参的修改。   第二种修改指向的对象里的值所以改变指向的对象里面的值就会改变实参的值。 这下面很明显是修改指向的对象里的值自己没有开空间所以改变了实参的值。 总结: 所谓的 引用 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实 只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大). 作为函数的返回值 二维数组 创建二维数组 public static void main(String[] args) {int[][] arr1new int[2][3];int[][] arr2new int[][]{{1,2,3},{4,5,6}};int[][] arr3{{1,2,3},{4,5,6}};} java中默认值依旧是0 数组转为字符串 依旧是Arrays类里的方法 二维数组的解析 二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组. 相当于俩行三列的数组。 arr[0]实际是第一行的数组arr[1]是第二行的数组数组名[0]其实是数组首元素的地址。 遍历 for-i for-each for (int[] array:arr1) {for(int x:array){System.out.print(x );}System.out.println();} 不规则的二维数组 int[][] arrnew int[2][]; 没有列的不规则的二维数组。 它的好处是可以随机设置每一行的长度。 今天很讨厌张老师
http://www.hkea.cn/news/14262612/

相关文章:

  • html5做静态网站用wordpress开发网站模板
  • 小学学校网站设计模板网上推广找xiala5徵
  • seo快速提高网站转化率上海广告公司联系方式
  • 全国最大的网站建设公司排名甘肃省住房和城乡建设厅网站
  • asp源码网站医院网站开发违法吗
  • ASP网站开发技术期末考试大学做网站
  • 接计设做的网站iis7搭建网站织梦
  • 青岛天河小学网站建设怎么做网站优化的
  • 网站等保测评怎么做静态网页开发工具
  • 网站建设电话销售说不需要如何做黑客攻击网站
  • 网站关键词部署网站怎么做才能赚钱
  • 天津平台网站建设推荐网站平均停留时间
  • 工商局网站怎么做增项浙江省住房和城乡建设厅网站 文件
  • 南宁网站建设方案报价营销网站制作公司推荐
  • 南京移动网站建设哪里强高端企业网站信息
  • 建网站流程 知乎搜索引擎营销原理
  • 做网站是数据库应该放在哪里仓库出入库管理系统
  • 气象网站建设管理的不足图书类网站建设策划书
  • 企业网站子页面模板wordpress的优缺点
  • 适配网站建设模版上海建设银行网站静安支行
  • 网站建设中首页模板下载wordpress子主题插件
  • 惠州市企业网站seo营销工具实验室网站建设意义
  • 响应式企业网站国外一些建筑公司网站
  • 人工智能软件旅游企业seo官网分析报告
  • 新手学做网站pdf长春网站建设网站制作推广
  • 懒人之家网站模板湖南网站制作团队
  • 那里建设网站航空摄影设计
  • 建设银行门户网站kali搭建wordpress
  • 企业公众号怎么制作济南seo优化外包服务
  • 飞沐网站建设北京网站是哪家公司开发的