Java中的数组和字符串

文章目录

  • 数组
    • 一维数组
      • 创立
      • 默认值
      • 转型
    • 多维数组
    • 可变长参数
      • 基本格式
      • 应用
  • 字符串
    • String类
    • StringBuilder类
      • 裁剪
    • 正则表达式
      • 检测

数组

数组类型本身也是类,即使是基本类型的数组也是以对象形式存在的,并不是基本数据类型

一维数组

int[]array = new int[10]; //创建数组时需要指定长度

创立

类型[] 变量名称 = new 类型[数组大小];
类型 变量名称[] = new 类型[数组大小];  //支持C语言样式,但不推荐!

类型[] 变量名称 = new 类型[]{...};  //静态初始化(直接指定值和大小)
类型[] 变量名称 = {...};   //同上,但是只能在定义时赋值

默认值

创建出来的数组每个位置上都有默认值,如果是引用类型,就是null,如果是基本数据类型,就是0,或者是false,跟对象成员变量的默认值是一样的

ublic static void main(String[] args) {
       int[]array = new int[10]; //创建数组时需要指定长度
        Object obj = array;   //因为同样是类,肯定是继承自Object的,所以说可以直接向上转型
        array[1] = 888;
        System.out.println("我是默认:"+array[0]+" 我是定义过后的值:"+array[1]+" 我是长度:"+array.length);
    //length是final类型,不允许进行修改,也就是说数组长度不能随意更改
        System.out.println(array.equals(array));
        for (int i: array) {
            System.out.print(i+" "); //每一轮循环,i都会更新成数组中的下一个元素
        }
    }

输出

我是默认:0 我是定义过后的值:888 我是长度:10
true
0 888 0 0 0 0 0 0 0 0 

对于基本类型的数组是不支持自动装箱和拆箱的

转型

由于基本数据类型和引用类型的不同,所以int数组不能被Object类型的数组变量接受

//错误类型
int[]array = new int[10]; 
Object[]arr = array;

Java中的数组和字符串_第1张图片

但是如果是引用类型,就是可以的

    public static void main(String[] args) {
        String[] array = new String[10]; 
        Object[] arr = array; //向上转型
        Object[] s= new Object[10];
        String[] copy = (String[]) s; //向下转型
    }

多维数组

创建

public static void main(String[] args) {
        int[][] array = new int[2][10];
    }

可变长参数

基本格式

变长参数放在最后面

public void test(int a,int b,String... strings) { 
       
  }

应用

public class Person {
    protected String name; //子类需要,但是外部不允许访问
    protected int age;
    protected String sex;

    public void test(int a,int b,String... strings) {
        System.out.println(a+" "+b);
        for (String string: strings) {
            System.out.println(string);
        }
    }
}
public static void main(String[] args) {
        Person person = new Person();
        person.test(3,33,"1!","42","It's me hi");
    }

输出

3 33
1!
42
It's me hi

字符串

字符串中的字符一旦确定,无法进行修改,只能重新创造

String类

每个用双引号括起来的字符串都是String类型的一个实例对象

public static void main(String[] args) {
        String str = new String("Hello World!"); 
        String str3 = new String("Hello World!");
        String str1 = "Hello World!"; 
        String str2 = "Hello World!";
        System.out.println(str1 == str2); //直接创造,那么为了优化效率,则始终是同一个对象
        System.out.println(str == str3); //主动使用new,则是两个对象
        System.out.println(str.equals(str3));
    }

输出

true
false
true
 public static void main(String[] args) {
        String str = new String("Hello World!");
        String str3 = new String("Hello World!");
        String str1 = "Hello World!";
        char[] chars = str.toCharArray(); //字符串和字符数组是可以快速进行相互转换的
        char[] chars2 = new char[]{'a','s','d'};
        System.out.println(chars);
        System.out.println(chars2);
        String str2 = str1.substring(0,3); //截取字符串
        String[] str4 = str.split(" "); //分割字符串
        for(String string : str4) {
            System.out.println(string);
        }
        System.out.println(str1.length());
        System.out.println(str2);
    }

输出

Hello World!
asd
Hello
World!
12
Hel

StringBuilder类

专门用于构造字符串的,可以使用他对字符串进行拼接、裁剪的部分操作,类似于一个字符串编辑器

字符串支持使用++= 进行拼接操作

public static void main(String[] args) {
        String str1 = "你看";
        String str2 = "这";
        String str3 = "汉堡";
        String str4 = "做滴";
        String str5 = "行不行";
        String result = str1 + str2 + str3 + str4 + str5;   //5个变量连续加
        System.out.println(result);
        StringBuilder builder = new StringBuilder();
        builder.append(str1).append(str2).append(str3).append(str4).append(str5);
        System.out.println(builder.toString()); //字符串编辑完之后,直接使用toString转换为字符串
    }

裁剪

public static void main(String[] args) {
        StringBuilder builder = new StringBuilder("AAABBB");   //在构造时也可以指定初始字符串
        builder.delete(2, 4);   //删除2到4这个范围内的字符
        System.out.println(builder.toString());
    }

输出

AABB

正则表达式

描述一种字符串的匹配模式,可以用来检测一个串中是否含有某种子串,替换匹配的子串,或者从某个串中取出符合条件的子串

检测

public static void main(String[] args) {
        String str = "oooo";
        //matches方法用于对给定正则表达式进行匹配,匹配成功返回true,否则返回false
        System.out.println(str.matches("o+"));   //+表示对前面这个字符匹配一次或多次,这里字符串是oooo,正好可以匹配
    }

Java中的数组和字符串_第2张图片

public static void main(String[] args) {
        String str = "abcabccaa";
        System.out.println(str.matches("[cba]*"));   //表示abc这几个字符可以出现 0 - N 次
    }

[]表示一个范围内的字符

Java中的数组和字符串_第3张图片

你可能感兴趣的:(Java,SE,java)