ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java

2021-09-07 01:00:05  阅读:353  来源: 互联网

标签:java int dealArray System 数组 public out


命令行传参

  • 命令行参数给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变量

数组

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

  • 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或者为同一值时,可以使用稀疏数组来保存

    • 稀疏数组的处理方式

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

参考链接

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

标签:java,int,dealArray,System,数组,public,out
来源: https://www.cnblogs.com/szfengge/p/15236475.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有