增强for
简化数组和Collection集合的遍历
-
格式
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
} -
好处:简化遍历
-
注意事项:增强for的目标要判断是否为null
静态导入
- 格式:import static 包名….类名.方法名;
可以直接导入到方法的级别 - 注意事项:
a. 方法必须是静态的。
b. 如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用。
import static java.lang.Math.abs;
import static java.lang.Math.pow;
import static java.lang.Math.max;
//错误:非静态方法
//import static java.util.ArrayList.add;
public class StaticImportDemo {
public static void main(String[] args) {
// System.out.println(java.lang.Math.abs(-100));
// System.out.println(java.lang.Math.pow(2, 3));
// System.out.println(java.lang.Math.max(20, 30));
// 太复杂,我们就引入到import
// System.out.println(Math.abs(-100));
// System.out.println(Math.pow(2, 3));
// System.out.println(Math.max(20, 30));
// 太复杂,有更简单
//System.out.println(abs(-100));
//因为有另外一个abs方法,不知道用哪一个,所以要打全。
System.out.println(java.lang.Math.abs(-100));
System.out.println(pow(2, 3));
System.out.println(max(20, 30));
}
public static void abs(String s){
System.out.println(s);
}
}
可变参数
定义方法的时候不知道该定义多少个参数。
- 格式:修饰符 返回值类型 方法名(数据类型… 变量名){}
- 注意事项:
这里的变量底层实现是一个数组
如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 - Arrays工具类中的一个方法:public static List asList(T… a)
虽然此方法可以把数组转成集合,但是集合的长度不能改变。一旦想要改变(如使用add()和remove()方法),就会报错UnsupportedOperationException。
// 定义一个数组
// String[] strArray = { "hello", "world", "java" };
// List<String> list = Arrays.asList(strArray);
List<String> list = Arrays.asList("hello", "world", "java");
// UnsupportedOperationException
// list.add("javaee");
// UnsupportedOperationException
// list.remove(1);
list.set(1, "javaee");
for (String s : list) {
System.out.println(s);
// 2个数据求和
int a = 10;
int b = 20;
int result = sum(a, b);
System.out.println("result:" + result);
// 3个数据的求和
int c = 30;
result = sum(a, b, c);
System.out.println("result:" + result);
// 4个数据的求和
int d = 30;
result = sum(a, b, c, d);
System.out.println("result:" + result);
// 需求:我要写一个求和的功能,到底是几个数据求和呢,我不太清楚,但是我知道在调用的时候我肯定就知道了
// 为了解决这个问题,Java就提供了一个东西:可变参数
result = sum(a, b, c, d, 40);
System.out.println("result:" + result);
result = sum(a, b, c, d, 40, 50);
System.out.println("result:" + result);
}
public static int sum(int... a) {
// System.out.println(a);
//return 0;
int s = 0;
for(int x : a){
s +=x;
}
return s;
}
}