ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习笔记124——集合—增强for循环、静态导入

2021-12-22 21:02:51  阅读:165  来源: 互联网

标签:Java 静态 System 导入 124 println strings out


增强for循环

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/*

        JDK1.5之后出现的特性,
        到目前为止,学过哪些特性是JDK1.5之后出现的:
            泛型,增强for,包装类,Scanner,枚举

        增强for概述
            简化数组和Collection集合的遍历
        格式:
            for(元素数据类型 变量名(自定义) : 数组或者Collection集合) {
	            使用变量即可,该变量就是元素
            }
        好处:简化遍历
        注意事项:增强for的目标要判断是否为null
        把前面的集合代码的遍历用增强for改进

        将来能用增强for的时候,就用,可以消除黄色警告线。

*/

public class ForDemo1 {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {1,2,3,4,5,6};

        //普通for循环
//        for(int i=0;i<arr.length;i++){
//            System.out.println(arr[i]);
//        }
//
        System.out.println("使用增强for循环遍历:");
        for(int x : arr){
            System.out.println(x);
        }
      
        System.out.println("=================================");

        ArrayList<String> strings = new ArrayList<>();

        strings.add("hello");
        strings.add("world");
        strings.add("java");
        strings.add("bigdata");
        strings.add("hadoop");

         for (String string : strings) {
            System.out.println(string);
         }
      
      //假设我一不小心将null赋给了strings
//        strings = null;

        //NullPointerException--空指针异常
//        for(String s : strings){
//            System.out.println(s);
//        }
        
        //很可能我在遍历之前不知道strings是不是null
        //所以我们在遍历之前需要判断一下strings是不是为null

        if(strings!=null){
            for (String s : strings){
                System.out.println(s);
            }
        }

        //增强for循环其实就是用来替代迭代器的
        //怎么去验证呢?
        //并发修改异常验证
//        for(String s:strings){
//        //ConcurrentModificationException--并发修改异常
//             if("world".equals(s)){
//                 strings.add("spark");
//             }
//        }

      
      //如果我想在遍历到"world"的时候在后面添加"spark"
      //这时候就只能使用迭代器了
//        ListIterator<String> iterator = strings.listIterator();
//         while (iterator.hasNext()){
//             String next = iterator.next();
//             if("world".equals(next)){
//                 iterator.add("spark");
//             }
//         }
    }
}

静态导入

//我也可以自己定义一个类
public class StaticClass {
    public static void show(String s){
        System.out.println("这是自己定义类中的show方法"+s);
    }

    public static String fun(){
        return "你是一个大帅哥";
    }
}


/*
    静态导入:
        静态导入概述
            格式:import static 包名….类名.方法名;
            可以直接导入到方法的级别
        注意事项
        方法必须是静态的
        如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。
        由此可见,意义不大,所以一般不用,但是要能看懂。

*/

//如果我静态导入的时候将方法名换成 * ,这时候我就可以使用Math类中的任意方法,而且都不用通过类名调用
import static java.lang.Math.abs;//--静态导入
import static com.shujia.wyh.day24.StaticClass.fun;//--静态导入自己定义的类的静态方法
import static com.shujia.wyh.day24.StaticClass.show;//--静态导入自己定义的类的静态方法

public class StaticImportDemo {
    public static void main(String[] args) {
      //Math.abs()--求绝对值
        System.out.println(Math.abs(-100));
      //Math.pow()--x的y次方
      //例如:Math.pow(2, 3)--2的3次方
        System.out.println(Math.pow(2, 3));
      //Math.max()--求最大值
        System.out.println(Math.max(200, 300));

      //有没有什么办法,不用写类名,直接写方法名调用
      //直接不写的话,不行,找不到方法
      //System.out.println(abs(-100));
      

      //这时候,静态导入的作用来了
      //当我将abs()静态导入之后,我就可以不加类名直接调用
        System.out.println(abs(-100));
      //当我将静态导入的格式中的方法名换成 * 
      //这时候我就能使用Math类中的任意方法,而且都不用通过类名调用
      //但是这样有个缺点,假设将来你需要将这个Java项目打成架包了,这时候
      //会将Math类中的所有方法都拿过来,这样你的架包就会显得很臃肿。
      //所以说建议将来需要用什么方法就导入什么方法。
//      System.out.println(pow(2,5));

      
      //我也可以自己定义一个类
      //通过类名来调用类中静态的成员方法
//      System.out.println(StaticClass.fun());
      
      //还可以静态导入自己定义的类的静态方法
        System.out.println(fun());
      
      //当静态导入的方法名与本类中的方法名冲突了,
      //调用的是本类中的方法
        show("flink");

        //如果我就想使用静态导入的方法怎么办?
        //将前缀路径写完整
        com.shujia.wyh.day24.StaticClass.show("flink");
        //或者 类名.静态成员方法名
        StaticClass.show("spark");
    }

    public static void show(String s) {
        System.out.println("这是在当前类中的show方法" + s);
    }
}

标签:Java,静态,System,导入,124,println,strings,out
来源: https://www.cnblogs.com/zhaoheng0530/p/15721063.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有