• 第3章 数组及字符串操作


    第3章 数组及字符串操作

    Created on 2022/9/20 by wyq.

    3.1 一维数组

    由数据类型相同的数据组成的有序集合。

    1、数组的声明

    dataType[] arrName;
    datatType arrName[];
    int[] x1;
    double[] x2;
    String[] x3;
    byte[] x4;

    2、给数组分配空间

    x1 = new int[5];
    x2 = new double[10];
    x3 = new String[3];
    x4 = new byte[12];

    3、数组的初始化

    (1) 默认初始化
    double[] d = new double[5];
    PS:如果指定了数组的长度,系统会自动为数组中的元素分配初始值,规则如下:
    A、对于整型(byte、short、int、long),数组元素的值是0;
    B、对于浮点型(float、double),数组元素的值是0.0;
    C、对于字符型(char),数组元素的值是’\u000’;
    D、对于布尔型(boolean),数组元素的值是false;
    E、对于引用类型,数组元素的值是 null.
    (1) 静态初始化
    int[] x = {2,5,9,10};
    double[] d = new double[]{12.5,25.8,0.125};
    (2) 动态初始化
    float[] f = new float[3];
    f[0]=12.5f;
    f[1]=23.3f;
    f[2]=0.25f;
    
    e.g.
    public class Demo1 {
        public static void main(String[] args) {
            int[] x = new int[50];
            for(int i=0;i

    4、for-each循环

    主要用于数组或集合的遍历。
    e.g.
    public class Demo1 {
        public static void main(String[] args) {
            int[] x = {2,9,6,12,25};
    
            // 输出数组中的元素
            for(int k : x){
                System.out.print(k+", ");
            }
        }
    }
    

    5、冒泡法排序

    PS:交换两个元素的值
    (1) 借助于中间变量
    int x=8;
    int y=5;
    int t=x;  // t-->8
    x=y; // x-->5
    y=t; // y-->8
    
    (2)不借助中间变量
    int x=8;
    int y=5;
    x = x+y; // x-->13
    y = x-y; // y-->8
    x = x-y; // x-->5
    
    e.g.
    /**
     * {45,30,15,2}   元素个数 n--> 4
     * 冒泡法排序(大数在后):
     * 第1趟: 30,15,2,45 -->比较3次
     * 第2趟: 15,2,30,. -->比较2次
     * 第3趟: 2,15,... -->比较1次
     *
     * 对于数组长度为n的数组,需要n-1趟;
     * 对于第m趟需要比较n-m次
     */
    public class Demo1 {
        public static void main(String[] args) {
            int[] x = {45,20,5,39,55,18,15,2,15,30};
            for(int m=0;mx[k+1]){
                        int t = x[k];
                        x[k] = x[k+1];
                        x[k+1] = t;
                    }
                }
            }
    
            // 输出数组中的元素
            for(int a : x){
                System.out.print(a+", ");
            }
        }
    }
    
    

    3.2 二维数组

    1、数组的声明

    dataType[][] arrName;
    dataType arrName[][];
    int[][] x1; // int x1[][];
    float[][] x2;

    2、分配空间

    x1 = new int[3][5];
    x2 = new float[5][];

    3、初始化

    (1) 默认初始化
    float[][] f = new float[3][5];
    数组f中每个元素有默认初始值 0.0
    (2)静态初始化
    char[][] c = {{'A','B','C'},{'1','2','3'}};
    int[][] i = new int[][]{{1,2},{3,4},{5,6}};
    (3)动态初始化
    double[][] d = new double[3][2];
    d[0][0]=1.0;
    d[0][1]=1.2;
    d[1][0]=2.1;
    d[1][1]=2.3;
    d[2][0]=3.5;
    d[2][1]=3.25;
    
    e.g.
    public class Demo1 {
        public static void main(String[] args) {
            // 声明5行5列的二维数组并对其进行动态初始化
            int[][] x = new int[5][5];
            int k=1;
            for(int i=0;i<5;i++){
                for(int j=0;j<5;j++){
                    x[i][j]=k;
                    k++;
                }
            }
            // 输出数组中的每个元素
            for(int[] m :x){
                for(int t : m){
                    System.out.print(t+"\t");
                }
                System.out.println();
            }
        }
    }
    

    4、二维数组的应用

    e.g. 定义一个5*5的二维数组并进行动态初始化,
    数组中的各元素满足数列 1,1,2,3,5,8,…
    计算此数组主对角线元素和副对角线元素之和,并输出。
    public class Demo3 {
        // 1,1,2,3,5,8,13,...
        static int f(int k){
            // if(k==1||k==2) return 1;
            // else return f(k-1)+f(k-2);
            return k==1||k==2?1:f(k-1)+f(k-2);
    
        }
        public static void main(String[] args) {
            int[][] x = new int[5][5];
            int k = 1;
            int sum = 0;
            // 使用f(k)对数组 x 进行初始化
            for(int i=0;i

    *3.3 不规则数组

    Java中,多维数组被解释为数组的数组,因此衍生出一种不规则数组。
    int[][] x = new int[3][];
    x[0] = new int[1];
    x[1] = new int[2];
    x[2] = new int[3];
    
    char[][] c = {{'A'},{'B','C'},{'D','E','F'}};
    

    3.4 字符串操作

    1、字符串的定义

    A、直接定义
    String s = "abc123";
    
    B、使用String类定义字符串
    String s1 = new String("Hello Java!"); // s1-->"Hello Java!"
    
    char[] c = {'A','B','1','2','c','d'};
    String s2 = new String(c); // s2-->"AB12cd"
    String s3 = new String(c,1,4); // s3-->"B12C"
    

    2、String 类型和数值类型的相互转换

    A、String类型–>数值类型
    // xxx v = Xxx.parseXxx(String s);
    int i1 = Integer.parseInt("25");
    float f1 = Float.parseFloat("12.56");
    Double d1 = Double.parseDouble("3.1415926");
    
    // xxx v = Xxx.valueOf(String s);
    int i2 = Integer.valueOf("50");
    float f2 = Float.valueOf("12.5");
    double d2 = Double.valueOf("3.14");
    
    B、数值类型–>String类型
    String s1 = ""+25;
    String s2 = String.valueOf(12.56);
    
    // String s = Xxx.toString(xxx);
    String s3 = Integer.toString(25)
    String s4 = Float.toString(2.56f)
    String s5 = Doubler.toString(3.14)
    

    3、字符串的其他操作

    A、获取字符串的长度
    // s.length();
    String s1 = "Hello Java!";
    System.out.println(s1.length());
    
    B、字符串的大小写转换
    String s1 = "Hello Java!";
    String s2 = s1.toLowerCase(); // 所有英文字符转换为小写
    String s3 = s1.toUpperCase(); // 所有英文字符转换为大写
    
    C、字符串的替换
    String s1 = "Hello Java!";
    String s2 = s1.replace("Java","World"); // s2-->"Hello World!"
    
    D、去除字符串中的空格
    String s1 = " He llo Ja va! ";
    String s2 = s1.trim(); // 只能去除字符串首尾的空格
    String s3 = s1.replace(" ",""); // 可去除字符串中所有空格
    
    E、字符串的连接
    String s1 = "Hello";
    String s2 = " ";
    String s3 = "Java";
            
    String s4 = s1+s2+s3; // s4--> "Hello Java"
            
    String s5 = s1.concat(s2).concat(s3); // s5--> "Hello Java"
    
  • 相关阅读:
    应用系统设计:基于Spring security设计一套安全认证和授权的服务
    Markdown语法
    java毕业设计小区停车场管理系统mybatis+源码+调试部署+系统+数据库+lw
    OD华为机试 15
    【Flask】官方教程(Tutorial)-part2:蓝图-视图、模板、静态文件
    Centos7常用基本命令使用(搜索查找类、压缩解压类、磁盘管理类)
    5081. 重复局面
    Java中级面试题及答案(120道Java中级面试题大汇总)
    音视频开发第一课-使用C语言开发视频播放器 650元IT外包开发全程记录
    JAVA点餐系统设计计算机毕业设计Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/weixin_39954229/article/details/126950647