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

深圳定制建站公司电话大数据网站

深圳定制建站公司电话,大数据网站,微信网页手机登录入口官网,wordpress首页标题目录 1.概念 2.数组的创建和初始化 2.1 创建 2.2 初始化 3.数组的使用 4.认识引用数据类型 4.1 JVM的内存分布 4.2 基本数据类型和引用数据类型 4.3 null的认识 5.二维数组 6.Arrays类的了解和使用 1.概念 数组用于存储一定数量相同类型的数据,可以看…

目录

1.概念 

2.数组的创建和初始化

2.1 创建

2.2 初始化 

3.数组的使用 

 4.认识引用数据类型

4.1 JVM的内存分布

4.2 基本数据类型和引用数据类型

4.3 null的认识

5.二维数组

6.Arrays类的了解和使用 


1.概念 

数组用于存储一定数量相同类型的数据,可以看成是相同数据类型的集合

2.数组的创建和初始化

2.1 创建

T[] 数组名 = new T[N];
// T[] 数组类型
// N 元素数量
// T 元素数据类型

2.2 初始化 

其实java的数组初始化大同小异的。直接看看和C语言不一样的。

int arr[] = {1, 2, 3}; //C语言版本(java也可以这样创建数组,但不推荐)==================================//java版
//动态初始化:直接定义数组元素数量,像下面的int数组默认每个数值为0
int[] array = new int[10];
//静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定
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", "!!!"};

如果没有对数组进行初始化,数组中元素有其默认值 。一些基本数据类型默认值如下:

类型默认值
byte0
short0
int 0
long0
float0.0f
double0.0
char/u000
booleanflase
引用类型null

3.数组的使用 

数组基本操作和C语言的数组操作基本一样,比如:通过下标访问数组元素(放置数组越界)、数组的遍历等等。这里直接介绍java里一些与C语言不一样的。Java提供了很多类和方法方便于编码者直接使用。

1.可以使用数组名.length来获取数组长度。

int[] arr = {1,2,3,4,5};
for(int i = 0;i < arr.length;i++){arr[i] = 0;
}

2.for-each  遍历数组

int[] array = {1, 2, 3};
for (int x : array) {System.out.println(x);
}
//输出数组每个元素
//for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错.

 4.认识引用数据类型

在Java中相对于C语言多出来了一个引用数据类型。数组就是典型的引用数据类型。

先认识什么是引用数据类型。

4.1 JVM的内存分布

内存是一段连续的存储空间,主要用来存储程序运行时数据的。比如: 1. 程序运行时代码需要加载到内存 2. 程序运行产生的中间数据要存放在内存 3. 程序中的常量也要保存 4. 有些数据可能需要长时间存储,而有些数据当方法运行结束后就要被销毁 如果对内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦。

所以JVM对使用的内存不同的功能进行了划分,如下图:

 

大致介绍:

1.程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址

2. 虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含 有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息,保存的都是与方法执行时相关的一 些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了。

3. 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局 部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的

4.堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2, 3} ),堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。

方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数 据. 方法编译出的的字节码就是保存在这个区域

4.2 基本数据类型和引用数据类型

基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值

引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。

针对引用数据类型举个例子:

public static int[] turnzero(int[] arr){int[] tmp = new int[arr.length];for (int i = 0; i < arr.length; i++) {tmp[i] = arr[i];arr[i] = 0;}return tmp;}public static void main(String[] args) {int[] arr = new int[]{1,3,5,7,9};System.out.println("修改前:" + Arrays.toString(arr));int[] tmp = turnzero(arr);System.out.println("拷贝的数组tmp:" + Arrays.toString(tmp));System.out.println("修改后:" + Arrays.toString(arr));}

在上述代码中,arr、tmp、都是函数内部的变量,因此其空间都在main方法对应的栈帧中分配。 array和tmp是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址。 

画个图帮助理解:

从上图可以看到,引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址,引用变量便可以去操作对象。 

4.3 null的认识

int[] arr = null;
System.out.println(arr[0]);// 执行结果
Exception in thread "main" java.lang.NullPointerExceptionat Test.main(Test.java:6)
//null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行//任何读写操作. 一旦尝试读写, 就会抛出 NullPointerException.

null 在 Java 中表示 "空引用" , 也就是一个不指向对象的引用.  

5.二维数组

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组。

public static void main(String[] args) {
//        数组的定义和使用int[][] arr1 = new int[][]{{1,2},{3,4}};int[][] arr2 = {{1,2},{3,4}};int[][] arr3 = new int[2][3];//未进行初始化int[][] arr4 = new int[3][];//不定义二维数组的列//        遍历数组(帮助理解二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.)for (int i = 0; i < arr1.length; i++) {for (int j = 0; j < arr1[i].length; j++) {System.out.print(arr1[i][j] + " ");}System.out.println();}
//        也可以用for-each理解for (int[] tmpArray:arr1) {for (int x:tmpArray) {System.out.print(x + " ");}System.out.println();}
//      arr3未进行元素的初始化,就会先给相对应数据类型的默认值(当前int默认值为0)for (int i = 0; i < arr3.length; i++) {for (int j = 0; j < arr3[i].length; j++) {System.out.print(arr3[i][j] + " ");}System.out.println();}
//        arr4对列数未定义,所以根据(二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组)理解。
//        三行,就是arr4[0]、arr4[1]、arr4[2]三个一维数组,我们分别对它们定义大小。这就是不规则数组arr4[0] = new int[]{1,2,3};arr4[1] = new int[]{0};arr4[2] = new int[]{1,2,3,4,5,6,7,8};for (int i = 0; i < arr4.length; i++) {for (int j = 0; j < arr4[i].length; j++) {System.out.print(arr4[i][j] + " ");}System.out.println();}}

运行结果:

 二维数组的用法和一维数组并没有明显差别,,就不再赘述了。.

6.Arrays类的了解和使用 

Arrays 类是 Java 标准库中的一部分,位于 java.util 包中。它提供了各种静态方法来操作数组,包括基本类型的数组和对象数组。

用大白话来说就是让我们对于数组本身的应用和数组元素的操作更加方便和简洁,也算是一定程度上的降低学习的成本和门槛。

Arrays类提供的方法非常多,我们在这里介绍一些较为常用的。

    // 一些Arrays类方法举例:intpublic static void main8(String[] args) {int[] arr = {1,2,3,4,5,6};
//       数组转字符串System.out.println(Arrays.toString(arr));
//        数组拷贝int[] copy = Arrays.copyOf(arr,arr.length);System.out.println("拷贝的数组:"+Arrays.toString(copy));//        对数组元素排序int[] arr2 = {99,10,3,7,5};System.out.println("排序后:" + Arrays.toString(arr2));Arrays.sort(arr2);System.out.println("排序后:" + Arrays.toString(arr2));//        打印二维数组int[][] array = new int[][] {{1,2,3},{3,2,1}};System.out.println("第一行:"+Arrays.toString(array[0]));System.out.println("第二行:"+Arrays.toString(array[1]));System.out.println("全部打印" + Arrays.deepToString(array));//        填充数组int[] arr3 = new int[5];Arrays.fill(arr3, 10); // 将所有元素设置为10int[] arr4 = new int[5];Arrays.fill(arr4, 1, 4, 20); // 将索引1到3的元素设置为20}

运行结果:

http://www.dtcms.com/wzjs/382984.html

相关文章:

  • 新注册域名做网站好处宁波seo外包优化
  • acm网站免费做刷评论网站推广
  • ps如何制作网页seo在线优化工具
  • wordpress卡慢衡水seo优化
  • 企业网站做优化郑州外语网站建站优化
  • 大型网站怎么做优化百度app下载链接
  • 年终总结ppt模板免费下载网站网站优化排名工具
  • 吉林省住房建设厅网站百度网络电话
  • 用html5做的网站过程百度如何快速收录
  • 狠狠做网站改成什么了视频号推广方法
  • dede拷贝其他网站文章合肥网站优化公司
  • 美食网站开发详细设计搜狗网站seo
  • 汕头市做网站优化十大接单平台
  • 程序员给别人做的网站违法了网络广告形式
  • 哈尔滨房地产网站建设公司网站免费建站
  • 鹤壁市城乡一体化示范区政府网抚州网站seo
  • 云服务器做视频网站网站建设黄页
  • 自己做影视会员网站seo优化入门教程
  • 网站建设捌金手指下拉一最新行业动态
  • 系统开发费用500强企业seo服务商
  • 百度网站客服电话人工服务百度收录的网站多久更新一次
  • 目前好的推销网站深圳网站维护
  • 怎样做一个网络营销关键词优化如何
  • 福州网站建设服务公司百度推广网页版
  • 怎么建立官网入门seo技术教程
  • 网站建设与维护实训海外seo是什么
  • 深圳好的网站建设公司排名yahoo引擎入口
  • 金山网站建设软文写作营销
  • wordpress主题点赞深圳网站seo优化公司
  • 高明网站设计案例短视频营销推广策略