关于静态导入以及增强for循环

静态导入

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 list = new ArrayList();
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循环: 

Java代码   收藏代码
  1. for (int i = 0; i < dataList.size(); i++) {  
  2.   System.out.println(i + ":" + dataList.get(i));  
  3. }  


增强For循环(获取index需要定义额外的变量):  
Java代码   收藏代码
  1. int i = 0;  
  2. for (String elem : dataList) {  
  3.   System.out.println(i + ":" + elem);  
  4.   i++;  
  5. }  


自定义静态方法实现带index的循环:  
Java代码   收藏代码
  1. for (Indexer elem : ExtFor1.loop(dataList)) {  
  2.   System.out.println(elem.index() + ":" + elem.value());  
  3. 可变参数类型
      1.实际上 是一个数组,
      2.可变参数 既然是一个数组,那么代表它的类型 是固定的,
      3.一个方法中 可以有 可变参数 以及其他参数, 但是可变参数 要放在最后一个参数位置上,  其他参数放在前面
      test(String a, int...b){}
     4.一个方法中 最多只能有一个可变参数, 因为可变参数 一定要放在 形参的最后一个位置
     5.如果方法的形参 使用的是可变参数, 那么可变参数  可以不传参数。 
      格式 :   数据类型...变量名

  4. 对于二维数组,我们可以把二维数组当成一个元素为一维数组的数组,这样就很容易实现对它的访问了 
    int[][] arr={{1,2,3}, 
    {4,5,6}, 
    {7,8,9}}; 
    for(int[] row:arr) 

    for(int element:row) 

    System.out.println(element);
  5. }

  6. 以上代表个人观点,如有错误,还请指教。


你可能感兴趣的:(不定期总结,经典题类型代码)