数组
何为数组
int [ ] nums;
nums = new int [ 10 ] ;
nums[ 0 ] = 11 ;
nums[ 1 ] = 22 ;
System. out. println ( nums[ 5 ] ) ;
System. out. println ( nums. length) ;
int sum = 0 ;
for ( int i = 0 ; i < nums. length; i++ ) {
sum = sum + nums[ i] ;
}
System. out. println ( "总和为:" + sum) ;
数组的默认初始化:
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也按照实例变量同样的方式被隐式初始化.(数组被赋值前,默认值为0)
int [ ] a = { 1 , 2 , 3 , 4 , 5 } ;
System. out. println ( a[ 0 ] ) ;
int [ ] b = new int [ 10 ] ;
b[ 0 ] = 10 ;
System. out. println ( b[ 0 ] ) ;
System. out. println ( b[ 1 ] ) ;
数组的基本特点
数组的边界
数组的使用
普通For循环
int [ ] arrays = { 1 , 2 , 3 , 4 , 5 } ;
for ( int i = 0 ; i < arrays. length; i++ ) {
System. out. println ( arrays[ i] ) ;
}
System. out. println ( "==========" ) ;
int sum = 0 ;
for ( int i = 0 ; i < arrays. length; i++ ) {
sum += arrays[ i] ;
}
System. out. println ( "sum = " + sum) ;
System. out. println ( "==========" ) ;
int max = arrays[ 0 ] ;
for ( int i = 0 ; i < arrays. length; i++ ) {
if ( arrays[ i] > max) {
max = arrays[ i] ;
}
}
System. out. println ( "max = " + max) ;
For-Each循环
int [ ] arrays01 = { 1 , 2 , 3 , 4 , 5 } ;
for ( int array : arrays01) {
System. out. print ( array) ;
}
数组作方法入参
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays02 = {1,2,3,4,5};
printArray(arrays02);//1 2 3 4 5
}
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
}
}
数组作返回值
public class ArrayDemo03 {
public static void main ( String[ ] args) {
int [ ] arrays02 = { 1 , 2 , 3 , 4 , 5 } ;
int [ ] reverse = reverse ( arrays02) ;
printArray ( reverse) ;
}
public static int [ ] reverse ( int [ ] arrays) {
int [ ] result = new int [ arrays. length] ;
for ( int i = 0 , j = result. length - 1 ; i < arrays. length; i++ , j-- ) {
result[ j] = arrays[ i] ;
}
return result;
}
public static void printArray ( int [ ] arrays) {
for ( int i = 0 ; i < arrays. length; i++ ) {
System. out. println ( arrays[ i] + " " ) ;
}
}
}
二维数组
int [ ] [ ] array = { { 1 , 2 } , { 2 , 3 } , { 3 , 4 } , { 4 , 5 } } ;
System. out. println ( array[ 0 ] ) ;
System. out. println ( array[ 0 ] [ 1 ] ) ;
System. out. println ( array[ 2 ] [ 1 ] ) ;
System. out. println ( array. length) ;
System. out. println ( array[ 0 ] . length) ;
for ( int i = 0 ; i < array. length; i++ ) {
for ( int j = 0 ; j < array[ i] . length; j++ ) {
System. out. print ( array[ i] [ j] + " " ) ;
}
System. out. println ( ) ;
}
Arrays
import java. util. Arrays;
public class ArrayDemo06 {
public static void main ( String[ ] args) {
int [ ] a = { 1 , 22 , 3 , 44 , 5 , 678 , 9 } ;
System. out. println ( a) ;
System. out. println ( Arrays. toString ( a) ) ;
printArray ( a) ;
Arrays. sort ( a) ;
System. out. println ( Arrays. toString ( a) ) ;
Arrays. fill ( a, 2 , 4 , 0 ) ;
System. out. println ( Arrays. toString ( a) ) ;
Arrays. fill ( a, 0 ) ;
System. out. println ( Arrays. toString ( a) ) ;
}
public static void printArray ( int [ ] a) {
for ( int i = 0 ; i < a. length; i++ ) {
if ( i == 0 ) {
System. out. print ( "[" ) ;
}
if ( i == a. length - 1 ) {
System. out. println ( a[ i] + "]" ) ;
} else {
System. out. print ( a[ i] + ", " ) ;
}
}
}
}
冒泡排序(面试,笔试)
import java. util. Arrays;
public class ArrayDemo07 {
public static void main ( String[ ] args) {
int [ ] a = { 2 , 1312 , 3 , 21 , 3 , 243 , 4 , 35 , 34 , 5 , 35 } ;
sort ( a) ;
System. out. println ( Arrays. toString ( a) ) ;
}
public static void sort ( int [ ] array) {
int temp = 0 ;
for ( int i = 0 ; i < array. length - 1 ; i++ ) {
for ( int j = 0 ; j < array. length - 1 - i; j++ ) {
if ( array[ j+ 1 ] < array[ j] ) {
temp = array[ j] ;
array[ j] = array[ j + 1 ] ;
array[ j + 1 ] = temp;
}
}
}
}
}
稀疏数组
public class ArrayDemo08 {
public static void main ( String[ ] args) {
int [ ] [ ] array1 = new int [ 11 ] [ 11 ] ;
array1[ 1 ] [ 2 ] = 1 ;
array1[ 2 ] [ 3 ] = 2 ;
System. out. println ( "输出原始的数组" ) ;
for ( int [ ] ints : array1) {
for ( int anInt : ints) {
System. out. print ( anInt + "\t" ) ;
}
System. out. println ( ) ;
}
System. out. println ( "==========" ) ;
int sum = 0 ;
for ( int i = 0 ; i < 11 ; i++ ) {
for ( int j = 0 ; j < 11 ; j++ ) {
if ( array1[ i] [ j] != 0 ) {
sum++ ;
}
}
}
System. out. println ( "有效值的个数:" + sum) ;
int [ ] [ ] array2 = new int [ sum+ 1 ] [ 3 ] ;
array2[ 0 ] [ 0 ] = 11 ;
array2[ 0 ] [ 1 ] = 11 ;
array2[ 0 ] [ 2 ] = sum;
int count = 0 ;
for ( int i = 0 ; i < array1. length; i++ ) {
for ( int j = 0 ; j < array1[ i] . length; j++ ) {
if ( array1[ i] [ j] != 0 ) {
count++ ;
array2[ count] [ 0 ] = i;
array2[ count] [ 1 ] = j;
array2[ count] [ 2 ] = array1[ i] [ j] ;
}
}
}
for ( int i = 0 ; i < array2. length; i++ ) {
System. out. println ( array2[ i] [ 0 ] + "\t"
+ array2[ i] [ 1 ] + "\t" + array2[ i] [ 2 ] ) ;
}
System. out. println ( "==========" ) ;
System. out. println ( "还原稀疏数组" ) ;
int [ ] [ ] array3 = new int [ array2[ 0 ] [ 0 ] ] [ array2[ 0 ] [ 1 ] ] ;
for ( int i = 1 ; i < array2. length; i++ ) {
array3[ array2[ i] [ 0 ] ] [ array2[ i] [ 1 ] ] = array2[ i] [ 2 ] ;
}
for ( int [ ] ints : array3) {
for ( int anInt : ints) {
System. out. print ( anInt + "\t" ) ;
}
System. out. println ( ) ;
}
}
}