java

命令行传参

  • 命令行参数给main方法实现

  • public class HelloWorld {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            for (int i = 0; i < args.length; i++) {
                System.out.println("args[" + i + "=" + args[i]);
            }
        }
    }
    

可变参数

  • 这个方法在接收参数的时候,个数是不定的。

  • 在方法声明中,在指定参数类型后面加...

  • public class TestVarArgus {
    	public static void dealArray(int... intArray) {
    		for (int i : intArray)
    			System.out.print(i + " ");
     
    		System.out.println();
    	}
     
    	public static void main(String args[]) {
    		dealArray();
    		dealArray(1);
    		dealArray(1, 2, 3);
    	}
    }
    
  • 可变参数既可以是没有参数(空参数),也可以是不定长的。

  • 一个方法只能有一个可变参数,只能放在最后

  • 可变参数与数组是冲突的,编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。

    public class TestVarArgus {
    public static void dealArray(int... intArray) {
    for (int i : intArray)
    System.out.print(i + " ");

      System.out.println();
    

    }

    public static void dealArray(int[] intArray) {
    // 会有Duplicate method dealArray(int[]) in type TestVarArgus的错误
    for (int i : intArray)
    System.out.print(i + " ");

      System.out.println();
    

    }

    public static void main(String args[]) {
    dealArray();
    dealArray(1);
    dealArray(1, 2, 3);
    }

  • 可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。

public class TestVarArgus {
public static void dealArray(int... intArray) {
for (int i : intArray)
System.out.print(i + " ");

	System.out.println();
}
 
public static void main(String args[]) {
	int[] intArray = { 1, 2, 3 };
 
	dealArray(intArray);// 通过编译,正常运行
}
public class TestVarArgus {
	public static void dealArray(int[] intArray) {
		for (int i : intArray)
			System.out.print(i + " ");
 
		System.out.println();
	}
 
	public static void main(String args[]) {
		dealArray(1, 2, 3);// 编译错误
	}
}

  • 能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的

Java内存分析

    • 存放new的对象和数组
    • 可以被所有线程共享,不会存放别的对象引用
    • 存放基本变量类型(包含具体数值)
    • 引用对象的变量(存放这个引用在堆里面的具体地址)
  • 方法区

    • 可以被所有的线程共享
    • 包含了所有的class和staic变量

java

数组

  • 数组是相同类型数据的有序

  • 4个基本特点

    • 长度确定
    • 元素类型相同
    • 元素可以是任何数据类型(基本类型和引用类型)
    • 数组变量是引用类型,数组可以看成对象,数组的每个元素相当于对象的成员变量。数组本身就是对象,Java中
  • 数组的声明与创建

    • dataType[] a;  //首选的方法
      dataType a[];
      
      //数据的创建
      dataType[] a=new dataType[size];
      
  • 元素通过索引访问,从0开始

  • 获取数据的长度

    a.length
    
  • 初始化方法

    • 静态初始化(创建+赋值)

      • int[] a={1,2,3}
        
    • 动态初始化

      • int[] b=new[10]b[0]=1
        
    • 默认初始化

      • 数组一旦分配空间,会分配默认值
  • 数组越界会产生nArrayIndexOutBoundsException

  • Array类

    • 数组的工具类Java.util.Arrays

    • 包含操作数组的各种方法(搜索和排序)

    • 有一个静态工厂,可以将数组视为列表

    • 如果指定的数组为空,会抛出异常

    • int[] a={1,2,3,4,5};System.out.println(a);  //打印对象的哈希codeSystem.out.println(Arrays.toString(a));
      
    • 常用的方法

      • 给数组赋值:fill
      • 排序:sort
      • 比较数组:equals
      • 查找数组元素:binarySearch可以进行二分法查找
  • 稀疏数组

    • 当数组中大部分元素为0或者为同一值时,可以使用稀疏数组来保存

    • 稀疏数组的处理方式

      • 记录数组有几行几列,有多少个不同的值
      • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模。
      • 例子
      • java
      • 左边是原始数组,右边是稀疏数组,6,7,8其中8为8个有效数字

参考链接

(40条消息) 深度解析Java可变参数类型以及与数组的区别_Java仗剑走天涯-CSDN博客_可变参数和数组

java

上一篇:用 C 语言编写 Windows 服务程序的五个步骤


下一篇:Winform调用风云二号卫星云图(更改后版本)