• 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<m.length;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<m.length;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<LetterNumbers;i++){
    			 letter[i]=getRandomLowerCharacter();
    			 int index=letter[i]-'a';
    			 countLetter[index] += 1;
    		}
    		for (int i=0;i<LetterNumbers;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);
    			
    	}
    
    }

    结果如下:

  • 相关阅读:
    java设计模式之组合模式
    java设计模式之建造者
    设计模式之单例
    oracle 中update select 和连接字符串配合使用
    策略模式之使用场景
    javascript面向对象学习笔记——创建对象(转)
    grunt自动化工具
    【grunt整合版】30分钟学会使用grunt打包前端代码
    浅谈Hybrid技术的设计与实现
    WEB服务器、应用程序服务器、HTTP服务器区别(转)
  • 原文地址:https://www.cnblogs.com/l20902/p/10610953.html
Copyright © 2020-2023  润新知