静态导入
import static
作用: 在同一个静态方法 要被多次使用的时候,达到 简化书写的作用
格式:
import static 包名.类名.静态方法名或者是静态成员的名字;
在导入之后使用这个 类的这个静态方法,就可以直接写方法名,而不用写类名方法名。
注意点:
如果静态导入的 成员 (成员变量,方法) 和 本类中的 方法或者是成员 同名的情况下,那么 默认使用本类中的 方法,
如果你还是要使用 静态导入的这个方法, 加上类名就可以了。
import java.util.*;
import static java.util.Arrays.sort;
import static java.lang.System.out;
import static java.util.Collections.max;
public class Demo5 {
public static void main(String[] args) {
int[] arr = {10, 2, 3, 17, 8, 11};
//在静态导入了 这个类的 静态方法之后,那么可以直接不用类名,就调用这个 sort方法
Arrays.sort(arr);
out.println(arr[0]); // system的out
Demo5 d5 = new Demo5();
d5.test();
}
public void test(){
int[] arr = {10, 2, 3, 17, 8, 11};
sort(arr); // 调用 这个 sort方法的 ,不是this, 是类名,Arrays
//使用集合
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(123);
list.add(33);
int r = max(list); // 调用者 是 Collections这个类
out.println(r);
}
public static void sort(int[] arr){
out.println("----------这是自己写的sort");
}
}
增强for循环
增强for循环的 底层是使用迭代器来实现的。 因此要注意不要在 循环的时候,更改集合的长度。
在增强的for循环中,我们不需要去检查数组的边界,不必担心数组下标越界,这些都由增强的for循环替我们代劳了
1.增强for循环和iterator遍历的效果是一样的,也就说
增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。
格式
for(数据类型 变量名称 :遍历的目标数组或者集合){
//变量名 就是集合中存储的 元素
}
普通的For循环:
- for (int i = 0; i < dataList.size(); i++) {
- System.out.println(i + ":" + dataList.get(i));
- }
增强For循环(获取index需要定义额外的变量):
- int i = 0;
- for (String elem : dataList) {
- System.out.println(i + ":" + elem);
- i++;
- }
自定义静态方法实现带index的循环:
- for (Indexer<String> elem : ExtFor1.loop(dataList)) {
- System.out.println(elem.index() + ":" + elem.value());
- }
- 可变参数类型
1.实际上 是一个数组,
2.可变参数 既然是一个数组,那么代表它的类型 是固定的,
3.一个方法中 可以有 可变参数 以及其他参数, 但是可变参数 要放在最后一个参数位置上, 其他参数放在前面
test(String a, int...b){}
4.一个方法中 最多只能有一个可变参数, 因为可变参数 一定要放在 形参的最后一个位置
5.如果方法的形参 使用的是可变参数, 那么可变参数 可以不传参数。
格式 : 数据类型...变量名
-
对于二维数组,我们可以把二维数组当成一个元素为一维数组的数组,这样就很容易实现对它的访问了
int[][] arr={{1,2,3},
{4,5,6},
{7,8,9}};
for(int[] row:arr)
{
for(int element:row)
{
System.out.println(element); - }
- }
- 以上代表个人观点,如有错误,还请指教。