java 数组 c foreach_java基础:3.1 一维数组、foreach、数组复制

1 数组申明: double [] myList;

声明一个数组变量时并不在内存中给数组分配任何空间。它只是创建一个对数组的引用的存储位置

2 创建数组:  myList = new double [3];

这条语句做了两件事情:1 ) 使用new elementType[arraySize]创建了一个数组;2 )把这个新创建的数组的引用陚值给变暈arrayRefVar(myList)。

3 结合:(1和2等价)

(1) .double [] myList = new double [3];   //只声明、创建,后续再赋值

myList[0] =1.0;

myList[1] =2.0;

myList[2] =5.5;

(2) .double [] myList = { 1.0 , 2.0 , 5.5 };   // 声明、创建、初始化一条语句完成了。

一个数组变量看起来似乎是存储了一个数组,但实际上它存储的是指向数组的引用。:myList 是一个含有3个double 型元素数组的引用变量

4.foreach

不使用下标变量就可以顺序地遍历整个数组

for (double e: myList)

System.out.println(e);    //打印了myList的所有元素

5.数组的复制

不能和普通数据一样使用:list2 =list1;   // 这只是将list1的引用复制给了list2,他俩指向了同一个数组。list2的原数据变成了垃圾

arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

srcPos,tarPos:sourceArray 和targetArray 中的起始位置。复制的元素个数由参数length 指定(java.lang.System类)

System.arraycopy(souce,0,s1,0,2);

6.给方法传递数组/从方法中返回数组/可变长数组

类比C语言中指针学习,给函数传递数组的指针,在函数内改变数组的内容,函数外的数组内容也将改变。

和给方法传递基本数据类型不同。

可变长数组:只能给方法中指定一个可变长参数,同时该参数必须是最后一个参数

package basic_practice_002;

public class None_array {

public static void main(String[] args) {

// TODO Auto-generated method stub

int [] list1 = {1,3,6,7,9,25,98,63,7,0,5,11,77,62,34,0,5,77,6,5};

int [] list2 = new int [8];

System.arraycopy(list1,7,list2,0,8);

System.out.print("old list2 array: ");

for(int e:list2)

System.out.print(e + " ");

System.out.println();

change_1_2(list2);

System.out.print("After change_1_2: ");

for(int e:list2)

System.out.print(e + " ");System.out.println();

list2 = reversal(list2);

System.out.print("reversal list2: ");

for(int e:list2)

System.out.print(e + " ");

}

public static void change_1_2(int []m) { //传递数组给方法

int temp =m[1];

m[1] = m[0];

m[0] = temp;

}

public static int[] reversal(int []m) { //从方法中返回数组

int []y=new int[m.length];

for(int i=0;i

y[i]=m[m.length-1-i];

return y;

}

public static void printArray(int...m) { //可变长数组

if(m.length==0) return;

for(int i=0;i

System.out.print(m[i]);

}

}

计算随机生成的100位小写字母中,a~~~z的个数分别为多少

package basic_practice_002;

public class CountLetter {

public static void main(String[] args) {

// TODO Auto-generated method stub

final int LetterNumbers = 100;

char []letter = new char[LetterNumbers];

int []countLetter = new int[26];

for(int i=0;i

letter[i]=getRandomLowerCharacter();

int index=letter[i]-'a';

countLetter[index] += 1;

}

for (int i=0;i

System.out.print(letter[i] + " ");

if((i+1)%25==0) System.out.println();

}

System.out.println();

for (int i=0;i<26;i++) {

System.out.print( (char)('a'+i) + " "+ countLetter[i] + " ");

if((i+1)%10==0) System.out.println();

}

}

public static char getRandomCharacter(char chl, char ch2){

return(char)(chl + Math.random()*(ch2 - chl + 1));}

public static char getRandomLowerCharacter(){

return getRandomCharacter('a','z');

}

}

命令行调用main函数的例子(简易计算器):

public class testMain { // 调用Main,传递参数args

public static void main(String[] args) {

// TODO Auto-generated method stub

if(args.length!=3) {

System.out.println("Usage: java Calculator operandl operator operand2");

System.exit(0);

}

int result=0;

switch(args[1].charAt(0)) {

case '+' : result=Integer.parseInt(args[0])+Integer.parseInt(args[2]);break;

case '-' : result=Integer.parseInt(args[0])-Integer.parseInt(args[2]);break;

case '.' : result=Integer.parseInt(args[0])*Integer.parseInt(args[2]);break;

case '/' : result=Integer.parseInt(args[0])/Integer.parseInt(args[2]);break;

}

System.out.println(": " +Integer.parseInt(args[0])+ args[1].charAt(0) +Integer.parseInt(args[2]) +

"result is " + result);

}

}

结果如下:

1983da03a720097efcc1e9a59de37f6f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值