美文网首页
Java数组与字符串

Java数组与字符串

作者: David_Rao | 来源:发表于2019-12-14 01:21 被阅读0次

    Java数组的基本概念
    一维数组的创建与使用
    foreach语句
    多维数组的创建与使用
    字符串String入门

    1、数组的基本概念

    1. 数组是一种线性数据结构, 它是一个有序集, 存储数据类型相同、个数固定的多个元素。
    2. Java的数组是对象方式提供

    2、一维数组

    2.1、一维数组的使用

    步骤:

    1. 声明数组(声明数组变量)
      声明一个数组变量并没有在内存中为数组分配空间。
      只是为数组变量分配了空间,用以存储引用数组的地址。
    double[]  myList;
    double  myList[];  //不推荐使用
    
    1. 分配数组的内存空间(创建数组对象)
      “new 数组元素类型[数组大小]” 完成为数组分配内存空间。
      “=”把创建的数组对象的地址赋值给数组变量。
    double[]  myList;
    myList = new double[10];
    
    1. 使用数组元素
    double[]  myList;
    myList = new double[10];
    myList[3] = 12.34;
    

    2.2、Java数组的基本特点

    1. 数组分配内存空间时确定数组的大小, 不能改变。
    2. 使用数组时, 数组名.length 表示数组的元素个数。

    2.3、Java数组的初始化

    // 方式一
    double[] myList = {1.0, 2.0, 3.0, 4.0, 5.0};
    // 方式二
    double[] numbers;
    numbers = new double[] {1.0, 2.0, 3.0, 4.0, 5.0};
    // 方式三
    double[] myList = new double[5];
    for (int i = 0; i < myList.length; i++) {
        myList[i] = i + 1;
    }
    

    3、多维数组

    Java语言没有真正的多维数组。
    所谓多维数组,是数组元素也是数组的数组。

    int[][] matrix; 
    int matrix[][]; //不推荐使用
    int[] matrix[]; //不推荐使用
    

    方式1:同时创建整个多维数组对象

    int[][] x = new int[3][4];
    
    方式1内存示意图

    方式2:分别创建 “行对象”和 “列对象”

    int[][] matrix = new int[5][];           //创建 “行对象”
    matrix[0] = new int[] { 1, 2, 3, 4, 5 }; //创建 “列对象”
    matrix[1] = new int[] { 2, 3, 4, 5 };
    matrix[2] = new int[] { 3, 4, 5 };
    matrix[3] = new int[] { 4, 5 };
    matrix[4] = new int[] { 5 };
    
    方式2内存示意图

    4、数组的基本操作

    排序、查找、插入、删除、修改、移动......

    4.1 数组的循环遍历

    方式一:for循环

    for(int i = 0; i < array.length; i++) {   
        //处理数组元素array[i]
    }
    

    方式二:foreach循环

    1. 遍历数组所有元素
    2. 遍历无顺序
    3. 不能对数组元素进行修改
    for(元素类型 元素变量: 数组变量){
        //处理元素变量
    }
    double[ ] myList = new double[10];
    for(double value : myList) {
        System.out.println(value);
    }
    

    4.2 数组的复制

    方式一:用循环语句复制数组

    int[] a = {1, 2, 3, 4, 5};
    int[] b = new int[a.length];
    for(int i=0; i<a.length; i++) { b[i] = a[i]; }
    

    方式二:使用System类的arraycopy方法

    // System.arraycopy(被复制的数组, 从被复制的数组第几个元素开始复制, 复制到的数组, 从复制到的数组第几个元素开始复制, 复制多少个);
    int[] a = {1, 2, 3, 4, 5};
    int[] b = new int[a.length];
    System.arraycopy(a, 0, b, 0, a.length);
    

    方式三:使用数组对象的clone方法复制数组

    int[] a = {1, 2, 3, 4, 5};
    int[] b = a.clone();
    

    注意

    // 相当于指针赋值,b指针和a指针指向同一个数组区域,属于浅层复制
    int[] b = a;  
    

    4.3 使用Arrays类对数组进行操作

    Arrays类的官方文档
    https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html

    int index = Arrays. binarySearch(数组名, 查找数据)
    Arrays.sort(数组名)
    boolean b = Arrays.equals(数组名1, 数组名2);
    

    5、字符串java.lang.String

    1. String类用来描述和处理字符串类型。
    2. 所有的字符串直接量, 例如"abc", 都是String类。
    3. String类的对象是不可变对象, 即它们的值在对象创建后就不能改变了。
    4. String类需要了解:构造方法实例方法静态方法

    5.1 java.lang.String - 常用构造方法

    // 使用字符串直接量构造
    String message = new String(“welcome to Java”);
    // 字符串的快捷初始化方法
    // 该方法创建的字符串对象在字符串常量池中,字符串常量池中相同的字符串是同一个对象
    String message = “welcome to Java”;
    // 使用字符数组构造
    char[] charArray = [‘G’, ‘o’, ‘o’, ‘d’, ‘ ’, ‘D’, ‘a’, ‘y’];
    String message = new String(charArray);
    

    字符串.intern() 会返回该字符串在常量池中的对象

    String s = “welcome to Java”;
    String s1 = new String(“welcome to Java”);
    String s2 = s1.intern();
    System.out.println(“s1 == s is” + (s1 == s));  // false
    System.out.println(“s2 == s is” + (s2 == s));  // true
    

    5.2、字符串常见用法

    String类的官方文档
    https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

    String trim()
    String replace(char oldChar, char newChar)
    String replaceFirst(String oldString, String newString)
    String replaceAll(String oldString, String newString)
    int length()
    boolean equals(Object anObject)
    String substring(int beginIndex)
    String substring(int beginIndex, int endIndex)
    char chatAt(int index)
    int indexOf(String str)
    int lastIndexOf(String str)
    int compareTo(String anotherString)
    

    相关文章

      网友评论

          本文标题:Java数组与字符串

          本文链接:https://www.haomeiwen.com/subject/anoqnctx.html