数组类型本身也是类,即使是基本类型的数组也是以对象形式存在的,并不是基本数据类型
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;
但是如果是引用类型,就是可以的
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类型的一个实例对象
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
专门用于构造字符串的,可以使用他对字符串进行拼接、裁剪的部分操作,类似于一个字符串编辑器
字符串支持使用+
和 +=
进行拼接操作
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,正好可以匹配
}
public static void main(String[] args) {
String str = "abcabccaa";
System.out.println(str.matches("[cba]*")); //表示abc这几个字符可以出现 0 - N 次
}
[]
表示一个范围内的字符