文章目录
- 1.String类
- 2.StringBuilder类
- 3.StringJoiner类
- 4.ArrayList集合
- 5.Math类
- 6.System类
- 7.Runtime类
- 7.1当前系统的运行环境对象-public static Runtime getRuntime
- 7.2停止虚拟机-public void exit(int status)
- 7.3获得CPU的线程数 4或者8-public int availableProcessors()
- 7.4JVM能从系统中获取总内存大小(单位byte)-public long maxMemory()
- 7.5 JVM己经从系统中获取总内存大小(单位byte)-public long totalMemory()
- 7.6JVM剩余内存大小(单位byte)-public long freeMemory()
- 7.7运行cmd命令-public Process exec(String command)
- 8.Oject类和Objects类
- 9.Objects类
- 10.BigInteger类
- 10.1获取随机大整数,范围:`[θ~2的num次方-1]`-public BigInteger(int num,Random rnd)
- 10.2获取指定的大整数-public BigInteger(String val)
- 10.3 获取指定进制的大整数-public BigInteger(String val,int radix)
- 10.4静态方法获取BigInteger的对象,内部有优化-public static BigInteger valueOf(long val)
- 10.5加法-public BigInteger add(BigInteger val)
- 10.6比较是否相同-public boolean equals(object x)
- 10.7public BigInteger pow(int exponent)-次幂
- 10.8返回较大值或较小值-public BigInteger max/min(BigInteger val)
- 10.9转为int类型,超出范围数据有误-public int intValue(BigInteger val)
- 11.Bigdecimal类
- 12.Array类
- 12.1把数组拼接成一个字符串-publicstaticString toString(数组)
- 12.2二分查找法查找元素-publicstaticintbinarySearch(数组,查找的元素)
- 12.3拷贝数组-public static int[]copyof(原数组,新数组长度)
- 12.4拷贝数组(指定范围)-public staticint[]copyofRange(原数组,起始索引,结束索引)
- 12.5填充数组-publicstaticvoidfill(数组,元素)
- 12.6按照默认方式进行数组排序-public static void sort(数组)
- 12.7按照指定的规则排序-public static void sort(数组,排序规则)
- String类
- StringBuilder类
- StringJoiner类
- ArrayList集合
- Math类
- System类
- Runtim类
- Object类和Objects类
- BigInteger类
- BigDecimal类
- Array类
1.String类
1.1 boolean equals(要比较的字符串)
String str1 = "abc";
String str2 = "abc";
boolean result1 = str1.equals(str2);
System.out.println(result1);//true 判断两个字符串是否相等
boolean equalsIgnoreCase(要比较的字符串)
String str3 = "abc";
String str4 = "Abc";
boolean result2 = str1.equalsIgnoreCase(str2);
System.out.println(result2);//ture equalsIgnoreCase方法会忽略两个字符串中的大小写
1.2返回字符串的长度-public int length()
String str5 = "abc";
int leng = str5.length();//计算字符串的长度
System.out.println(leng);//3
1.3根据索引返回字符-public char charAt
String str6 = "abc";
char a = str6.charAt(0);//返回str6中索引为0的字符
System.out.println(a);//a
1.4 String substring(int beginIndex,int endIndex)-截取字符串
截取字符串时包头不包尾
String str7 = "liangmou3434";
String s1 = str7.substring(0,5);//截取str7中索引为0到索引为4的字符-liang
System.out.println(s1);//liang
String substring(int brginIndex)-从开始索引截取到末尾
String str7 = "liangmou3434";
String s2 = str7.substring(5);//从索引为5的字符开始截取到最后
System.out.println(s2);//mou3434
1.5 替换-String replace(旧值,新值)
String str8 = "abcd";
String s3 = str8.replace("a","e");//把a换成e
System.out.println(s3);//ebcd
1.6把字符串变成字符数组-public char[] tocharArray
把字符数组转变成字符串
String str = "abc";
char[] arr = str.toCharArray();//把字符串变量str变成字符数组arr
String str1 = new String(arr);//把字符数组arr再转变成字符串
1.7比较两个字符串的大小-compareTo
返回两个字符串ASCII码值的差
String s1 = "a";//字符'a'的ASCII码值为97
String s2 = "b";//字符'b'的ASCII码值98
int i = s1.compareTo(s2);
System.out.println(i);//-1
// 字符串s1比字符串s2小 比较两个字符串对应的ascii码值
2.StringBuilder类
一个容器-创建后内容是可变的
构造方法 1)空参构造 StringBuilder s = new StringBuilder();
2)有参构造 StringBuilder s = new StringBuilder(“abc”);
2.1添加数据,并返回对象本身-public StringBuilder append(任意类型)
StringBuilder sb1 = new StringBuilder();
sb1.append(1);//把1添加进sb1变量里
sb1.append("abc");//把abc添加进sb1变量里
System.out.println(sb1);//1abc
2.2反转容器中的内容-public StringBuilder reverse()
StringBuilder sb2 = new StringBuilder();
sb2.append("abc");//把abc添加进容器里
sb2.reverse();//反转容器中所有的内容
System.out.println(sb2);//cba
2.3返回长度,字符出现的个数-public int length()
StringBuilder sb3 = new StringBuilder();
sb3.append("abc");
int leng = sb3.length();//计算sb3的长度
System.out.println(leng);//3
2.4通过toString把StringBuilder类转化成String类-public String toString
StringBuilder sb4 = new StringBuilder();
sb4.append("abc");
String s1 = sb4.toString();//将sb4变量转变成字符串类型
System.out.println(s1);//abc
3.StringJoiner类
与StringBuilder类似
3.1添加数据并返回对象本身(只能添加字符串)-public StringJoiner add(添加内容)
public StringJoin(间隔符号)
public StringJoiner(间隔符号,开始符号,结束符号)
StringJoiner sj1 = new StringJoiner(",");//用逗号间隔
sj1.add("aaa");//添加字符串变量
sj1.add("bbb");
sj1.add("ccc");
System.out.println(sj1);//aaa,bbb,ccc
StringJoiner sj2 = new StringJoiner(",","[","]");//逗号间隔,[为开始符号,]为结尾符号
sj2.add("aaa");//添加字符串变量
sj2.add("bbb");
sj2.add("ccc");
System.out.println(sj2);//[aaa,bbb,ccc]
3.2返回长度,字符串出现的个数-public int length()
StringJoiner sj3 = new StringJoiner(",");
sj3.add("abc");
sj3.add("efg");
int leng = sj3.length();//计算sj3变量的长度
System.out.println(leng);//sj3内的内容 "abc,efg"-长度为7
3.3返回一个字符串-public String toString
StringJoiner sj4 = new StringJoiner(",");
sj4.add("abc");
sj4.add("efg");
String s2 = sj4.toString();//把sj4从StringJoiner变量转变成String类型
System.out.println(sj4);//abc,efg
4.ArrayList集合
使用前需要导包-在ArrayList包下
ArrayList与数组的区别: ArrayList长度是可变的,只能存引用数据类型,添加元素时自动扩容
数组长度是不可变的,能存基本数据类型,也能存引用数据类型
4.1ArrayList创建的对象
ArrrayList<需要放置的引用数据类型> list = new ArrayList<需要放置的引用数据类型(可省略)> ();
4.2添加元素,返回布尔类型-public boolean add(要添加的内容)
ArrayList<String> list1 = new ArrayList<>();
list1.add("abc");//把abc添加到list集合内
System.out.println(list1);//[abc]
4.3public boolean remove(要删除的内容)
1)直接删除-返回布尔类型
2)根据下标删除-返回被删除的元素
ArrayList<String> list2 = new ArrayList<String>();
list2.add("abc");
list2.add("efg");
list2.remove("abc"); // 删除元素"abc" -直接删除
System.out.println(list2);//[efg]
list2.remove(0); // 删除索引为0的元素"abc"
System.out.println(list2);//[efg]
4.4public String set(需要修改元素的下标,修改之后的内容)
ArrayList<String> list3 = new ArrayList<String>();
list3.add("aaa");
list3.add("ccc");
list3.set(1,"bbb");//将下标为1的元素"ccc"改为"bbb"
System.out.println(list3);//[aaa,bbb]
4.5public String get(要查找的元素的下标)
ArrayList<String> list4 = new ArrayList<String>();
list4.add("aaa");
list4.add("bbb");
String s3 = list4.get(0);//获取索引为0的元素
System.out.println(s3);//aaa
4.6获取集合的长度-public int size
ArrayList<String> list5 = new ArrayList<String>();
list5.add("aaa");
list5.add("bbb");
int leng = list5.size();//计算集合的长度
System.out.println(leng);//2
5.Math类
5.1获取参数的绝对值-abs(int a)
System.out.println(Math.abs(12.34));//12.34
System.out.println(Math.abs(12.54));//12.54
System.out.println(Math.abs(-12.34));//12.34
System.out.println(Math.abs(-12.54));//12.54
5.2向上取整-向无穷大取整-ceil(double a)
System.out.println(Math.ceil(12.34));//13
System.out.println(Math.ceil(12.54));//13
System.out.println(Math.ceil(-12.34));//-12
System.out.println(Math.ceil(-12.54));//-12
5.3 向下取整-向无穷小取整-floor(double a)
System.out.println(Math.floor(12.34));//12
System.out.println(Math.floor(12.54));//12
System.out.println(Math.floor(-12.34));//-13
System.out.println(Math.floor(-12.54));//-13
5.4四舍五入-round(float a)
System.out.println(Math.round(12.34));//12
System.out.println(Math.round(12.54));//13
System.out.println(Math.round(-12.34));//-12
System.out.println(Math.round(-12.54));//-13
5.5获取两个int值中的较大/小值-max/min(int a,int b)
System.out.println(Math.max(12.34,12.54));//12.54
5.6 返回a的b次幂的值-pow(double a,double b)
System.out.println(Math.pow(2,3));//返回2的三次方-8.0
5.7random() 返回值为double的随机值,范围0~1.0(包括0,不包括1.0)
double ret = Math.random() * 100 + 1;
//再对ret向下取整,向无穷小靠近
ret = Math.floor(ret);
System.out.println(ret);//生成的随机数包括0.0但不包括1.0
5.8对一个数开平方-sqrt()
System.out.println(Math.sqrt(4.0));//2.0
6.System类
6.1终止当前运行的 Java 虚拟机-public static void exit(int status)
0:表示当前虚拟机是正常停止
非0:表示当前虚拟机是异常停止
System.exit(0);
6.2返回当前系统的时间毫秒值形式-public static long currentTimeMillis()
用于判断程序执行完毕用了多少时间
从c语言的生日1970年1月1日到执行代码的时间一共过了多少毫秒,返回数据为long类型
long l = System.currentTimeMillis();
System.out.println(l);
6.3拷贝数组-public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
int[] arr = {1,2,3,4,5,6,7,8,9,10};
int[] arr1 = new int[10];
把arr数组拷贝到arr1中
System.arraycopy(arr,0,arr1,0,10);
数据源数组-要拷贝的数组
起始索引:要拷贝的数组从哪个索引开始
目的地数组:要把数组拷贝到哪个数组上
起始索引:目的地数组的索引
拷贝个数:要拷贝的元素有多少个
检验拷贝是否成功
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,数据源数组和目的地数组都是一样的基本数据类型
数据源数组和目的地数组的长度必须一致
如果数据源数组和目的地数组都是引用数据类型,那么子类型可赋值给父类型
//将子类赋值给父类类型
Student[] arr1 = {s1,s2,s3};
Person[] arr2 = new Person[3];//Stunde为Person的子类
System.arraycopy(arr1,0,arr2,0,3);
for (int i = 0; i < arr1.length; i++) {//遍历赋值后的数值,看赋值是否成功
Person p = arr1[i];
System.out.println(p.getName() + "," + p.getAge());
}
7.Runtime类
7.1当前系统的运行环境对象-public static Runtime getRuntime
Runtime r = Runtime.getRuntime();
7.2停止虚拟机-public void exit(int status)
0:正常停止虚拟机
非0:虚拟机异常停止
Runtime.getRuntime().exit(0);
7.3获得CPU的线程数 4或者8-public int availableProcessors()
System.out.println(Runtime.getRuntime().availableProcessors());//16
7.4JVM能从系统中获取总内存大小(单位byte)-public long maxMemory()
System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);//两次除1024得到以兆为单位的内存大小-4028
7.5 JVM己经从系统中获取总内存大小(单位byte)-public long totalMemory()
System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);//以兆为单位的获取的总内存的大小-252
7.6JVM剩余内存大小(单位byte)-public long freeMemory()
System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);//以兆为单位剩余的内存大小-249
7.7运行cmd命令-public Process exec(String command)
shutdown:关机,加上参数才能执行
shutdown-s:默认在1分钟之后关机
shutdown-s-t指定时间:指定关机时间
shutdown-a:取消关机操作
shutdown-r:关机并重启
Runtime.getRuntime().exec("notepad");//notepad为记事本-可以执行该行代码打开记事本
Runtime.getRuntime().exec("shutdown - a");//取消关机操作
8.Oject类和Objects类
一Object类
8.1 返回对象的字符串表示形式-public String toString()
Object obj = new Object();
String str1 = obj.toString();
System.out.println(str1);//打印-java.lang.Object@4eec7777包名+类名+对象的地址值
打印语句 System.out.println();
println():方法,传递是需要打印的内容
核心逻辑:当我们打印一个对象时,底层会调用对象的toString方法,把对象变成字符串,然后打印在控制台上
默认情况下,因为Object类中的toString方法返回的是地址值,打印一个对象打印的就是地址值
想要看到对象内部的属性值,应该重写object类里的toString方法,在重写的方法中,把对象的属性进行拼凑
@Override
public String toString(){
return name + "," + age;
}
8.2比较两个对象是否相等-public boolean equals(object obj)
Student s1 = new Student("zhangsan",23);
Student s2 = new Student("zhangsan",23);
System.out.println(s1.equals(s2));//原eqauls比较的是两个对象的地址值
//如果需要比较两个对象的属性值,就需要在Student类里重写equals方法,
//重写equals方法 alt+回车-按下一步到完成
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
例题解析
String s="abc";
StringBuilder sb =new StringBuilder("abc");
System.out.println(s.equals(sb));//false equals方法被s调用,看String类里的equals方法
//字符串中的equals方法,先判断参数是否为字符串,如果是字符串,再比较内部的属性,如果参数不是字符串,直接返回false
//StringBuilder类的sb不是字符串,所以直接返回false
System.out.println(sb.equals(s));//false equals方法被sb调用,看StringBuilder类的equals方法
//在StringBuilder当中,没有重写equal方法,调用的是Oject中的,Object类中equals方法比较两个对象的地址值
//sb和地址值和s的地址值不一样,所以返回的是false
8.3对象克隆-protected object clone(int a)
1)重写Object类中的clone方法
1)让javabean类实现Cloneable接口
3)创建对象并调用clone
1)
//重写clone方法,在javaBean类内输入Colne()-选择系统写好的Clone方法
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
![[Pasted image 20240727105432.png]]
3)
Student s = new Student("张三",19);
Student s1 = new Student();
//创建Object类对象
Object obj = s.clone();
s1 = (Student)s.clone();//实际s.clone是Object引用数据类型,要强转成Student类
System.out.println(s.getName() + "," + s.getAge());
System.out.println(s1.getName() + "," + s1.getAge());//打印克隆后的对象验证是否克隆成功
9.Objects类
9.1 先做非空判断,比较两个对象-public static boolean equals(object a,Object b)
与Object类类似,需要重写equals方法才能判断两个对象里面的属性值
Student s1 = new Student("张三",19);
Student s2 = new Student("张三",19);
//比较两个对象的属性值是否相同
boolean result = Objects.equals(s1,s2);
System.out.println(result);//true
}
9.2判断对象是否为nul1,为nul1返回true,反之则为false-public static boolean isNull(object obj)
Student s2 = null;
boolean result1 = Objects.isNull(s2);//null返回true,非null返回false
System.out.println(result1);//true
9.3 判断对象是否为null,跟isNull的结果相反-public static boolean nonNull(object obj)
Student s2 = null;
boolean result2 = Objects.nonNull(s2);//null返回false,非null返回true
System.out.println(result2);//false
10.BigInteger类
10.1获取随机大整数,范围:[θ~2的num次方-1]
-public BigInteger(int num,Random rnd)
//1.获取一个较大的随机整数
Random r = new Random();
BigInteger bd1 = new BigInteger(2, new Random());
BigInteger bd1 = new BigInteger(4, r);//获取到的bd1为2的四次方-1
//获取的bd1随机数为0~15 包括0也包括15
System.out.println(bd1);
10.2获取指定的大整数-public BigInteger(String val)
BigInteger bd2 = new BigInteger("9999999999999");
System.out.println(bd2);//9999999999999
10.3 获取指定进制的大整数-public BigInteger(String val,int radix)
字符串中的数字必须是整数且字符串中的数字必须要与进制吻合
比如二进制数字就只能写0和1
BigInteger bd3 = new BigInteger("100",10);//表示一百是十进制的一百
BigInteger bd4 = new BigInteger("100",2);
//一百是二进制的一百,但编译器会将二进制的一百转换成十进制再打印在控制台上
System.out.println(bd3);//100
System.out.println(bd4);//4
10.4静态方法获取BigInteger的对象,内部有优化-public static BigInteger valueOf(long val)
==valueOf能表示的范围比较小,不能超出long类型
BigInteger bd5 = BigInteger.valueOf(100);
System.out.println(bd5);//100
在内部对常使用的数字 -16~16进行了优化
提前把-16~16先创建好了BigInteger的对象,如果多次获取不会重新创建对象
BigInteger bd6 = BigInteger.valueOf(16);
BigInteger bd7 = BigInteger.valueOf(16);
System.out.println(bd6 == bd7);//结果为true-比较的是bd6和bd7的地址值,说明bd7没有创建新的对象,而是获取bd6的地址值
BigInteger bd8 = BigInteger.valueOf(17);
BigInteger bd9 = BigInteger.valueOf(16);
System.out.println(bd8 == bd9);//false-小于-16或大于16,编译器就会重新创建对象
对象创建后内部的数据不能发生改变
BigInteger bd10 = BigInteger.valueOf(1);
BigInteger bd11 = BigInteger.valueOf(2);
BigInteger result = bd10.add(bd11);
System.out.println(result);//结果为3
//不会改变参与运算的BigInteger对象中的值,而是产生了一个新的Biginteger对象用来记录3
System.out.println(bd10 == result);//false
System.out.println(bd11 == result);//false
//①如果BigInteger表示的数字没有超出long的范围,可以用静态方法获取。
//②如果BigInteger表示的超出long的范围,可以用构造方法获取。
//③对象一旦创建,BigInteger内部记录的值不能发生改变。
//④只要进行计算都会产生一个新的BigInteger对象
10.5加法-public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)-减法
public BigInteger multiply(BigInteger val)-乘法
public BigInteger divide(BigInteger val)- 除法,获取商**
*1.先创建两个BigInteger对象
BigInteger bd1 = BigInteger.valueOf(10);
BigInteger bd2 = BigInteger.valueOf(5);
以加法为例
//2.加法(减法,乘法,除法类似)
BigInteger bd3 = bd1.add(bd2);//15
System.out.println(bd3);
public BigInteger[] divideAndRemainder(BigInteger val)- 除法,获取商和余数
//下标为0的为商,下标为1的为余数
BigInteger[] bd4 = bd1.divideAndRemainder(bd2);
for (int i = 0; i < 2; i++) {
System.out.print(bd4[i] + " ");
}//遍历数组,验证商和余数=是否正确
10.6比较是否相同-public boolean equals(object x)
4.比较是否相同
boolean result = bd1.equals(bd2);
System.out.println(result);
10.7public BigInteger pow(int exponent)-次幂
BigInteger bd5 = bd2.pow(2);//括号内为次幂数,bd2为5,结果为5的平方
System.out.println(bd5);
10.8返回较大值或较小值-public BigInteger max/min(BigInteger val)
以较大值为例
BigInteger bd6 = bd1.max(bd2);
System.out.println(bd6);
10.9转为int类型,超出范围数据有误-public int intValue(BigInteger val)
BigInteger bd7 = BigInteger.valueOf(1000);
int i = bd7.intValue();
System.out.println(i);//1000
11.Bigdecimal类
BigDecima的作用:用于小数的精确计算,用来表示很大的小数
11.1用构造方法来获取BigDecimal对象
public BigDecimal(double val)
public BigDecimal(String val)
1)通过传递double类型的小数来创建对象-这种方式有可能是不精确的,不推荐使用
BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = new BigDecimal(0.09); System.out.println(bd1);//0.01000000000000000020816681711721685132943093776702880859375
System.out.println(bd2);//0.0899999999999999966693309261245303787291049957275390625
2)通过字符串来传递小数
BigDecimal bd3 = new BigDecimal("0.01");
BigDecimal bd4 = new BigDecimal("0.09");
BigDecimal bd5 = bd3.add(bd4);
System.out.println(bd3);//0.01
System.out.println(bd4);//0.09
System.out.println(bd5);//0.10
11.2静态方法获取BigDecimal对象-public static BigDecimal valueOf(double val)
BigDecimal bd6 = BigDecimal.valueOf(10);
System.out.println(bd6);
如果表示的数字不大,没有超出double范围,使用静态方法
如果表示数字较大,超出了double范围,使用构造方法
如果传递的是0~10之间的整数,包括0,包括10,那么方法会返回已经创建好的对象,不会重新new
BigDecimal bd7 = BigDecimal.valueOf(10);
BigDecimal bd8 = BigDecimal.valueOf(10);
System.out.println(bd7 == bd8);//true-如果传递的是0~10之间的整数,包括0,包括10,那么方法会返回已经创建好的对象,不会重新new
//传递的只能是整数,如果是10.0,那么编译器也会new一个新的对象
BigDecimal bd9 = BigDecimal.valueOf(20);
BigDecimal bd10 = BigDecimal.valueOf(20);
System.out.println(bd9 == bd10);//false-如果是超过10的整数,编译器就会重新new一个对象
11.3获取对象-public static BigDecimal valueof(double val)
BigDecimal bd1 = BigDecimal.valueOf(10.0);
BigDecimal bd2 = BigDecimal.valueOf(5.0);
11.4加法-public BigDecimal add(BigDecimal val)
public BigDecimal subtract(BigDecimal val) 减法
public BigDecimal multiply(BigDecimal val) 乘法**
以加法为例
BigDecimal bd3 = bd1.add(bd2);
System.out.println(bd3);//15
11.5除法-余数为0(被除数能够被除尽)-public BigDecimal divide(BigDecimal val)
BigDecimal bd6 = bd1.divide(bd2);
System.out.println(bd6);//2
public BigDecimal divide(BigDecimal val,精确几位,舍入模式) 除法-余数不为0(被除数无法被除尽)如果被除数无法被除尽却使用了第一个除法,就会报错
BigDecimal bd7 = bd1.divide(bd2,2, RoundingMode.HALF_UP);//ROUND_HALF_UP--四舍五入
//精确到两位
System.out.println(bd7);
12.Array类
int[] arr = {1,2,3,4,5,6,7,8,9,10};
12.1把数组拼接成一个字符串-publicstaticString toString(数组)
int[] arr = {1,2,3,4,5,6,7,8,9,10};
System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
12.2二分查找法查找元素-publicstaticintbinarySearch(数组,查找的元素)
二分查找的前提:数组是有序的,binarySearch方法要求数组必须是升序的
如果查找的元素存在,返回的是真实的索引,如果查找的元素不存在,则返回-插入点-1(-10-1=-11)
//2.二分查找法查找元素-返回查找元素的下标,如果没有则返回-插入点-1
System.out.println(Arrays.binarySearch(arr,10));//9
System.out.println(Arrays.binarySearch(arr,2));//1
System.out.println(Arrays.binarySearch(arr,20));//-11
12.3拷贝数组-public static int[]copyof(原数组,新数组长度)
方法底层会根据第二个参数来创建新的数组
如果新数组的长度小于老数组长度,会部分拷贝
如果新数组的长度等于来数组的长度,会完全拷贝
如果新数组的长度大于老数组的长度,会补上默认值
int[] newArr1 = Arrays.copyOf(arr,20);
System.out.println(Arrays.toString(newArr1));
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
12.4拷贝数组(指定范围)-public staticint[]copyofRange(原数组,起始索引,结束索引)
包头不包尾,包左不包右
int[] newArr2 = Arrays.copyOfRange(arr,0,9);//把arr0~9下标的元素拷贝过来-包头不包尾
System.out.println(Arrays.toString(newArr2));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
12.5填充数组-publicstaticvoidfill(数组,元素)
数组内所有元素被替换,原来的数据会被覆盖
//5.填充数组-数组内所有元素替换成100,原来的数据会被覆盖
Arrays.fill(arr,100);
System.out.println(Arrays.toString(arr));//[100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
12.6按照默认方式进行数组排序-public static void sort(数组)
sort默认把数组中的基本数据类型排成升序
int[] arr2 = {10,2,3,5,6,1,7,8,4,9};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
12.7按照指定的规则排序-public static void sort(数组,排序规则)
1)只能给引用数据类型的数组进行排序,如果数据是基本数据类型,则需要变成包装类
2)参数二是一个接口,所以在调用方法的时候需要传递这个接口的实现类对象,作为排序的规则。 但是这个实现类只要使用一次,所以没有必要单独地去写一个类,可以采用匿名内部类的方式调用
Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
//compare方法的形式参数:
//参数一 o1:表示在无序序列中,遍历得到每一个元素
//参数二 o2:有序序列的元素
//返回值:
//负数:表示当前要插入的元素是小的,放在前面
//正数:表示当前要插入的元素是大的,放在后面
//0:表示当前要插入的元素跟现在的元素比是一样的们也会放在后面
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;//把此处的0改为o1-o2
}
});
System.out.println(Arrays.toString(arr));