java数组能完成什么?Java数组有哪些用法
大家好,今天小编来为大家解答java数组能完成什么这个问题,Java数组有哪些用法很多人还不知道,现在让我们一起来看看吧!
Java数组有哪些用法
数组:是一组相关变量的集合数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组
数据的有点不使用数组定义100个整形变量:int i1;int i2;int i3
使用数组定义 int i[100];
数组定义:int i[100];只是一个伪代码,只是表示含义的(1)一维数组
一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的,使用java数组,必须经过两个步骤,声明数组和分配内存给该数组,声明形式一声明一维数组:数据类型数组名[]=null;非配内存给数组:数组名=new数据类型[长度];声明形式二声明一维数组:数据类型 []数组名=null;
(2)java数据类型分为两大类1.基本数据类型int、long操作的时候本身就是具体的内容引用数据类型:数组、类、接口
引用传递的就是一个内存的使用权,一块内存空间,可能有多个人同时使用
2.事例声明数组
数组的声明格式里,数据类型是数组元素的数据类型,常见的有整形、浮点型、与字符型等数组名是用来统一这组相同数据类型元素的名称,其命名规则和变量的相同数组声明后实际上是在栈内存中保存了此数组的名称,结下了是要在堆内存中配置数组所需要的内存,齐产固定是告诉编译器,所声明的数组要存放多少个元素,而new则是命令编译器根据括号里的长度。
基本数据类型偶读有其默认值:int 0;只要是引用数据类型默认值就是null事例
声明数组的同时分配内存空间声明数组的同时非配内存数据类型数组名[]=new数据类型[个数]int score[]=new int[10];声明一个元素个数为10的整形数组score,同时开辟依靠内存空间工期使用java中,由于整形数据类型占用的空间为4个byte,而整个数组score可保存的元素有10个。所以上例中占用的内存共有4*10=40个字节
(3)数组的访问
数组中元素的表示方法想要访问数组里的元素可以利用索引来完成,java的数组索引标号由10开始,以一个score[10]的整形数组为例,score[0]代表第一个元素一直向下,最后一个为score[9]
(4)取得数组的长度在java中取得数组的长度(也就是数组元素的长度)可以利用数组名称.length完成,数组名称.length--返回一个int类型的数据
(5)数组的静态初始化之前的数组,所采用的都是动态初始化,所有的内容在数组声明的时候并不具体的指定,而是以默认值的形式出现静态初始化是指在数组声明后直接为数组指定具体的内容如果想要直接在声明的时候给数组赋初始值,可以采用大括号完成,只要在数组的生命格式后面加上初值的赋值即可,数据类型数组名 []={初始值0,初始值1,初始值3,....初始值n};
范例排序,在操作中排序是比较常用的从大到小
这个时候不要被i值所迷惑if(score[i]>score[j]){
这一步主要知识为了比较,实际上完成之后输出的时候是根据j的值排序的
(6)二维数组
二维数组声明的方式和以为数组的类似,内存分配也一样是用new这个关键字
其实声明与分配内存的格式如下动态初始化数据类型数组名[][];数组名=new数据类型[行的个数][列的个数];
声明并初始化数组数据类型数组名[][]=new数据类型[行的个数][列的个数];静态初始化
(7)二维数组的存储声明二维数组score同时开辟一段内存空间int score[][]=new int[4][3];整体数据score可保存的元素是4*3=12个,在java中,int数据类型所占用的空间为4个字节,因此该整形数组占用的内存共为4*12=48个字节事例
(8)二维数组静态初始化
用到的时候才会开辟空间,不用的(红色部分)则不开辟空间多维数组一般只是用到二维数组三维数组简单了解
怎么用java中的数组实现如下效果
和C++里面一样,有入栈,弹栈,查找函数import java.util.*;
(引入包含栈类的头文件)相关函数介绍
boolean empty()
测试堆栈是否为空。
E peek()
查看堆栈顶部的对象,但不从堆栈中移除它。
E pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item)
把项压入堆栈顶部。 i
nt search(Object o)
返回对象在堆栈中的位置,以 1为基数。
E可以是你自己的类也可以是一些基本数据类型,
调用push方法来压栈,压一次输出一次栈的内容,出栈也是如此。
java数组有用吗
有用的,没用java为什么要它呢,而且是非常的有用。
1、没有数组,就没有集合Collection比如常用的List和Set容器,它们的底层都是用数组实现的。
2、java的框架就不能实现。如:struts、Hibernate、Spring等主流框架。
3、存储数据会变得很麻烦,或者说,你根本就不能存储集合类的数据了。
我们平时用数组可能不多,但是很多类的底层是通过数组实现的,我列举的还很有限。
用java编写出来:用数组实现一个栈
public class Stack{
private Object[] stack;
//这个不需要;
//private int top= 0;//初始化栈顶
//这个也不需要;
//写一个栈出来,最好是可以动态的,可以自己改变大小的,即数组的长度;
//private int size= 0;//初始化大小
//元素个数;
private int size;
//默认长度为10;
public Stack(){
this(10);
}
//也可以自己设置长度,即容量;
public Stack(int len){
stack= new Object[len];
}
//返回元素个数;
public int size(){
return size;
}
//返回数组长度,即容量;
public int capacity(){
return stack.length;
}
//实现动态的数组;
public void ensureCapacity(){
if(size()== capacity()){
Object[] newStack= new Object[size()* 3/ 2+ 1];
System.arraycopy(stack, 0, newStack, 0, size());
stack= newStack;
}
}
//入栈;
public void push(Object o){
size++;
ensureCapacity();
stack[size- 1]= o;
}
/*
public void push(Object object){
if(isFull()){
System.out.println("栈满!入栈失败");
}
stack[top++]= object;
}
*/
//判空;
public boolean isEmpty(){
return size== 0;
}
//出栈;
public Object pop(){
//首先要判空;
if(isEmpty()){
throw new ArrayIndexOutOfBoundsException("不能为空");
}
Object o= stack[--size];
stack[size]= null;
return o;
}
/*
//出栈
public Object pop(){
Object object= stack[--top];
stack[top]= null;
return object;
}
*/
/*
//计算栈当前大小
public int size(){
return top;
}
//判断是否是空栈
public boolean isEmpey(){
return top== 0;
}
//判断是否栈满
public boolean isFull(){
return top>= size;
}
public Stack(int size){
this.size= size;
}
*/
public static void main(String[] args){
Stack stack= new Stack(3);
String[] data= new String[]{"a","b","c"};
for(int i= 0; i< data.length; i++){
stack.push(data[i]);
System.out.println(data[i]+"");
}
System.out.println("***********");
while(!stack.isEmpty()){
System.out.println(stack.pop()+"");
}
//}
}
}
你自己对比一下,我是在你的里面修改的
好了,文章到此结束,希望可以帮助到大家。