㈠ 求各位java程序高手支招!java的数组存储数据问题。
importjava.util.Scanner;
publicclassZ{
privatestaticint[]globalA;
privatestaticint[]globalB;
publicstaticvoidmain(Stringargs[]){
t1();
}
publicstaticvoidt1(){
intm=0;
t2(m);
}
publicstaticvoidt2(intm1){
Scanners=newScanner(System.in);
intat=s.nextInt();
Scanners1=newScanner(System.in);
intbt=s1.nextInt();
key(at,bt,m1);
}
publicstaticvoidkey(intan,intbn,intm2){
inta[]=newint[100];
intb[]=newint[100];
if(globalA==null){
globalA=a;
}else{
a=globalA;
}
if(globalB==null){
globalB=b;
}else{
b=globalB;
}
a[m2]=an;
b[m2]=bn;
inti;
System.out.println(m2);
for(i=0;i<=m2;i++){
System.out.println(a[i]+""+"和"+""+b[i]);
}
m2++;
t2(m2);
}
}
如果不行,再说
㈡ java数组为什么容易根据下标来寻址
给你画一下数组的存储模型你就知道了
1、基本数据类型:
㈢ Java数组存储数据问题
先把MAP放到一道范围里 比如session里 session.setAttributr("map",map);
然后在JSP页面获取 <c:forEach items="${map}" var="map"> </c:forEach>
举了个简单的例子:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%Map m=new HashMap();
m.put("a1","123");
m.put("a2","123");
m.put("a3","123");
session.setAttribute("map",m);
%>
</head>
<body>
<table border="1" align="center" bgcolor="#808080"><tr bgcolor="green" ><th>用户名:</th><th>密码:</th></tr>
<c:forEach items="${map}" var="entry">
<tr><td>${entry.key}</td>
<td>${entry.value}</td> </tr>
</c:forEach>
</table>
</body>
</html>
这里的session可以从类中取,此处只是为举例方便写在 jsp中的
㈣ JAVA二维数组存储
不论怎么操作,数据都是要输入一遍的,不知道你说的操作简便是指程序步少还是什么的,不过50位数我建议你用字符串表存取吧,新建一个ArrayList <String>这样的容器,每一个String就是一个50位数。
那你就用字符串的split方法,选择空格符为分隔符号,然后存储
㈤ java 二维数组在内存中是怎样的存储方式,与c++中的数组有什么不同,a[9][] 应该怎么存储a[9][4]又该怎么
java中数组是以对象形式存在的,栈中存储的是数组对象的地址(即引用),而对象本身不存放在栈中,而是存放在堆中,使用时通过栈中的引用地址找到堆中的实际对象,这里的引用地址类似于C/C++中的指针。
㈥ Java数组是存储在内存中的什么地方
因为我也不清楚你理解的内存指啥,说我的理解,猜测一下,但愿符合你的理解:
对程序而言,内存分为:
a、静态区块或叫全局区块,指程序加载的时候就分配的固定存储区;
b、栈内存,代码块执行的时候动态分配的内存块,代码运行完后,操作系统或运行平台负责自动回收这部分使用的内存。
c、堆内存块,由操作系统提供api程序自由分配管理的内存块。
java的内存管理机制,我个人认为是黑盒的,写java也很少有人去关心,但是如果看虚拟机的实现源码还是能知道的。(楼主懂c由兴趣自己看)。那么从逆向工程的角度我们可以猜测到:
静态类,静态变量,存储在,静态区块中。
类本身代码需要时再加载到内存中,java的动态代理实现的根本。既然是动态加载肯定是在堆中,不过加载进来的类代码可能永不会销毁(虚拟机运行区间内,可以加快运行平台的处理速度,java属于半编译半解释的一门语言,要解释执行的是预先编译好的指令,就是class类文件)。
我们创建的任何对象,时间是随机的,创建的时候才会分配内存,必然在堆上。虚拟机的垃圾回收机制要管理的刚好是这部分内存。
类中的方法,或静态代码块必定运行在占上,代码运行完,内存立即回收。此处有个例外,不同于c语言或操作系统实现。在方法中返回的任何对象:c需要动态分配存储空间,兵自行管理,或者申明为全局局部静态存储,代码运行完,对象才能保留下来。java可以直接保留下来。说明虚拟机自动给我们申请了动态内存保存对象。此处分配的内存也需要垃圾回收机制管理。没门语言都有原始类型,方法或函数中返回的原始类型不需要从堆上分配内存,直接复制给接收变量,或代码运行的形参所分配的空间中即可。
从操作系统理解,内存分为内核使用的内存与程序使用的内存,java运行在虚拟机上,虚拟机运行在操作系统上,内核内存属于操作系统自用内存,由操作系统负责管理,运用程序不能直接管理分配内核内存。应用程序可管理的是分配给自己的运行空间。因此java使用内存属于应用程序内存。内核内存管理方式windows与unix实现管理方式不一样,最大差别windows的每一个程序,内核需要使用掉一部分地址空间,余下的留给应用程序。如32位系统,总共可以使用的地址空间是4G内核要用掉其中1G或者2G。但是unix实现的系统应用程序可以直接使用4G地址空间。有兴趣请参考操作系统内核相关书籍。
㈦ Java数组在内存中是如何存放的
数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的.
实际的数组元素被存储在堆(heap)内存中;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中.