java排列

排列:它可以被看作是多个相同类型的数据的组合,这些数据的统一管理。

1.声明、 创建

一维:type[]  var  比如:int[] a或 int a[];

数组名= new  数组元素的类型[数组元素的个数]

public class TestNew
    {
         public static void main(String args[]) {
             int[] s ;  //声明  或者int s[]   可是不可int s[5]
             s = new int[5] ; //创建 new
             for(i = 0 ; i < 5 ; i++) {
                 s[i] = i ;
             }
         }
}

2初始化

静态初始化:在定义数组的同一时候就为数组元素分配空间并赋值。

动态初始化:数组定义和数组元素分配空间和赋值分开操作。

默认初始化:数组是引用类型,元素相当于成员变量。因此数组在分配空间后,系统默认给每一个元素进行了隐式初始化。

public class Test
{
     public static void main(String args[]) {
         //动态初始化
         int a[] ;
         a = new int[22] ;
         a[0] = 0 ;
         a[1] = 1 ;
         Date days[] ;
         days = new Date[2] ;
         days[0] = new Date(2015,6,1) ;
         days[1] = new Date(2012,5,5) ;  

         //静态初始化
          int a[] = {0,1} ;
          Date days[]= {new Date(2015,6,1),new Date(2012,5,5} 

         //默认初始化
         int a[] = new int [2] ;
         Date days[] = new Date[2]
            //输出结果。基本类型默觉得0应用类型默觉得null
         System.out.println(a[1]+" "+Date[1]) ;
     }
}  

class Date
{
     int year,month,day ;
     Date(int year ,int month ,int day) {
         this.year = year ;
         this.month = month ;
         this.day = day ;
     }
}

3.数组拷贝

java的lang包中封装了arraycopy方法能够实现数组的拷贝

public static void arraycopy(Object s,int sbeginPos,Object scopy,int scopybeginPos,int slength )           

s:源数组 
、 sbeginPos:源数组開始位置

scopy:目标数组  、 scopybeginPos:目标数组開始放置位置

slength:要拷贝源数组的长度

样例例如以下:

public class Array{

	//拷贝数组,
	public static void main(String[] args){
		//1.元素为基本类型的,目标数组和源数组的元素独立,不相互影响
		String[] s ={"IBM","Oracle","Apple"};
		String[] sBak = new String[6];

		//1.1从源数组s s[1]開始拷贝元素到目标数组sBak中从sBak[2]開始存放的拷贝进来的元素,拷贝的个数为s.length-1个
		System.arraycopy(s,1,sBak,2,s.length-1);

		for(int i=0;i<sBak.length;i++){
			System.out.print(sBak[i]+" ");
		}
		//1.2改动目标数组一个元素值
		sBak[2]="tihuan";
        //1.2.1目标数组值改变
		System.out.print("\n");
		for(int i=0;i<sBak.length;i++){
			System.out.print(sBak[i]+" ");
		}
		//1.2.2源数组值不变
		System.out.print("\n");
		for(int i=0;i<s.length;i++){
			System.out.print(s[i]+" ");
		}

		//2.元素为引用类型的,拷贝的是数组的引用,对随意数组元素的改动都会影响其它数组。
		System.out.println();
		int[][] intArray ={{1,2},{1,2,3},{3,4}};
		int[][] intArrayBak = new int[3][];

		System.arraycopy(intArray,0,intArrayBak,0,intArray.length);
		//2.1改动目标数组的一个元素值
		intArrayBak[2][1] = 100;
		//2.2打印源数组看值是否发生变化
		for(int i=0;i<intArray.length;i++){
			for(int j=0;j<intArray[i].length;j++){
				System.out.print(intArray[i][j]+" ");
			}

			System.out.println();
		}
	}
}

结果显示为:

数组属引用类型,同一时候数组能够看成对象,数组中的每一个元素相当于该对对象的变量成员。

作用声明数组的时候在栈内存中分配数组名的存储空间。创建的时候分配的存储空间阵列堆栈内容。

版权声明:在这篇文章中的不可避免的缺点,敬请各位批评,留下评论。

时间: 2024-12-05 22:24:12

java排列的相关文章

java排列组合算法代码实现

原文:java排列组合算法代码实现 源代码下载地址:http://www.zuidaima.com/share/1550463479024640.htm java排列组合算法,有需要研究的童鞋可以下载,运行结果如下: package com.zuidaima.test; /** *@author www.zuidaima.com **/ public class Pailie { public static void main(String[] args) { int[] ia = {1, 2,

java排列名字

java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

此题参考与其他人思路, 2个解题方式. 1. 1 /** 2 * 用java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 3 * 状态树方式解 4 * 用状态生成树的方式来做的,先把12个人按从低到高一次编号, 5 * 从(1 ; 2)出发,加入3和4的时候生成(1,3 ; 2,4)和(1,2 ; 3,4), 6 * 然后加入5和6,分别从前面的两个状态出发,可以生成5种状态,就是说6个人时有5种排列 7 * @author

Java实现升序排列的整形数组A,元素两两不相等找出A[i]=i的数据

import java.util.ArrayList; //升序排列的整形数组A,元素两两不相等.请设计高效的算法找出A[i]=i的数据. //使用二种方法 public class BinarySearch { public static void main(String[] args) {     int[] nums={-1,1,2,3};     ArrayList<Integer> res=find(nums);     for(int e:res){      System.out

java中的排列组合

? 1 使用之前需要声明一个Combine的对象,调用startCombile方法,可返回想要的组合数或者个数,参数介绍很重要 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <br> public class Combine {     p

排列的学习(java)

1.无重复排列 2.有重复排列 3,下一个排列 package 生成排列; public class Main { static int count=0; //a中保存原来的排列,lev表示选定第几个数,len是长度 public static void swap(int a[],int lev,int i) { int temp=a[lev]; a[lev]=a[i]; a[i]=temp; } public static void swap(char a[],int lev,int i) {

【LeetCode-面试算法经典-Java实现】【046-Permutations(求排列)】

[046-Permutations(求排列)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the following permutations: [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1]. 题目大意 给定一个数组

减一技术应用:生成排列与幂集(Java实现)

减一技术,与二分搜索一样,是一种通用算法设计技术.它是分治法的一种特殊形式,通过建立问题实例P(n) 与问题实例P(n-1)的递推求解关系式而实现:最经典的例子莫过于插入排序了.这里,给出减一技术在生成排列组合方面的应用. (一)  排列问题: 生成自然数 1,2,,,,,n 的所有排列. 算法描述: 使用减一技术,建立自然数12...n的排列与12...n-1的递推关系.假设 P(n-1) 是 自然数 12...n-1的所有排列 p1, p2,..., p(m)的集合,则P(n)通过如下方式得

算法笔记_158:算法提高 逆序排列(Java)

目录 1 问题描述 2 解决方案 1 问题描述 问题描述 编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中.当用户输入0时,表示输入结束.然后程序将把这个数组中的值按逆序重新存放,并打印出来.例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来. 输入格式:输入只有一行,由若干个整数组成,中间用空格隔开,最末尾