首页编程java编程java数组存的什么?在Java中数组属于什么类型

java数组存的什么?在Java中数组属于什么类型

编程之家2023-10-1396次浏览

大家好,感谢邀请,今天来为大家分享一下java数组存的什么的问题,以及和在Java中数组属于什么类型的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

java数组存的什么?在Java中数组属于什么类型

Java数组是存储在内存中的什么地方

因为我也不清楚你理解的内存指啥,说我的理解,猜测一下,但愿符合你的理解:

对程序而言,内存分为:

a、静态区块或叫全局区块,指程序加载的时候就分配的固定存储区;

java数组存的什么?在Java中数组属于什么类型

b、栈内存,代码块执行的时候动态分配的内存块,代码运行完后,操作系统或运行平台负责自动回收这部分使用的内存。

c、堆内存块,由操作系统提供api程序自由分配管理的内存块。

java的内存管理机制,我个人认为是黑盒的,写java也很少有人去关心,但是如果看虚拟机的实现源码还是能知道的。(楼主懂c由兴趣自己看)。那么从逆向工程的角度我们可以猜测到:

java数组存的什么?在Java中数组属于什么类型

静态类,静态变量,存储在,静态区块中。

类本身代码需要时再加载到内存中,java的动态代理实现的根本。既然是动态加载肯定是在堆中,不过加载进来的类代码可能永不会销毁(虚拟机运行区间内,可以加快运行平台的处理速度,java属于半编译半解释的一门语言,要解释执行的是预先编译好的指令,就是class类文件)。

我们创建的任何对象,时间是随机的,创建的时候才会分配内存,必然在堆上。虚拟机的垃圾回收机制要管理的刚好是这部分内存。

类中的方法,或静态代码块必定运行在占上,代码运行完,内存立即回收。此处有个例外,不同于c语言或操作系统实现。在方法中返回的任何对象:c需要动态分配存储空间,兵自行管理,或者申明为全局局部静态存储,代码运行完,对象才能保留下来。java可以直接保留下来。说明虚拟机自动给我们申请了动态内存保存对象。此处分配的内存也需要垃圾回收机制管理。没门语言都有原始类型,方法或函数中返回的原始类型不需要从堆上分配内存,直接复制给接收变量,或代码运行的形参所分配的空间中即可。

从操作系统理解,内存分为内核使用的内存与程序使用的内存,java运行在虚拟机上,虚拟机运行在操作系统上,内核内存属于操作系统自用内存,由操作系统负责管理,运用程序不能直接管理分配内核内存。应用程序可管理的是分配给自己的运行空间。因此java使用内存属于应用程序内存。内核内存管理方式windows与unix实现管理方式不一样,最大差别windows的每一个程序,内核需要使用掉一部分地址空间,余下的留给应用程序。如32位系统,总共可以使用的地址空间是4G内核要用掉其中1G或者2G。但是unix实现的系统应用程序可以直接使用4G地址空间。有兴趣请参考操作系统内核相关书籍。

java 中byte数组存的是什么类型的数据,byte数组有什么用

java中数组本身可以划分为一个类型.这个类型就是存放各种类型的对象或者值.

至于你的问题,则可以回答为存放byte的数组应该是数组类型.或者说数组的泛型是byte.

具体作用,泛泛的说,应该是存储数据.至于存储后干什么.那就看具体需求了.比如用于显示,用于逻辑判断......等等.

java中的数组存在哪

java中,数组其实是对象(继承Object),需要弄清以下概念:

1.栈内存:在方法中定义的一些基本类型的变量和对象的引用变量都在方法的栈内存中分配,当在一段代码中定义一个变量时,java就在栈内存中为这个变量分配内存空间,当超出变量的作用域后,java会自动释放掉为该变量所分配的内存空间。

2.堆内存:堆内存用来存放数组和new运算符创建的对象,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆中创建了一个数组或对象后,同时还在栈内存中定义一个特殊的变量。让栈内存中的这个变量的取值等于数组或者对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),以后就可以在程序中使用栈的引用变量来访问堆中的数组或对象。

在Java中数组属于什么类型

Java中数组的类型

Java是一种强类型的语言。既然是对象,那么就必须属于一个类型,比如根据Person类创建一个对象,这个对象的类型就是Person。

int[] a1={1, 2, 3, 4};

System.out.println(a1.getClass().getName());

//打印出的数组类的名字为[I

String[] s= new String[2];

System.out.println(s.getClass().getName());

//打印出的数组类的名字为 [Ljava.lang.String;

String[][] ss= new String[2][3];

System.out.println(ss.getClass().getName());

//打印出的数组类的名字为 [[Ljava.lang.String;

虚拟机自动创建了数组类型,可以把数组类型和8种基本数据类型一样,当做java的内建类型。这种类型的命名规则是这样的。

每一维度用一个[表示;开头两个[,就代表是二维数组。

* [后面是数组中元素的类型(包括基本数据类型和引用数据类型)

在java语言层面上,s是数组,也是一个对象,那么他的类型应该是String[],这样说是合理的。但是在JVM中,他的类型为[java.lang.String。顺便说一句普通的类在JVM里的类型为包名+类名,也就是全限定名。同一个类型在java语言中和在虚拟机中的表示可能是不一样的。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

常德区号 常德区号073java为什么不用xml,学Java需要掌握 xml吗