java基础知识点(四)

一、Stream API

理解:JDK8以后提供一种流式编程的API,用来对集合或者数组进行操作。
	
	1.获取流操作
		//1)通过集合获取流
		Stream<元素类型> s1 = list.stream();
		Stream<元素类型> s2 = set.stream();
		//注意:Map集合不能直接获取流,而是要先转换为单列集合,再获取流
		Stream<键的类型> s3 = map.keySet().stream();
		Stream<值的类型> s4 = map.values().stream();
		Stream<Map.Entry<键的类型, 值的类型>> s5= map.entrySet().stream():
		
		
		//2)通过数组、元素获取流
		Stream<元素类型> s6 = Stream.of(数组);
		Stream<元素类型> s7 = Stream.of(元素1, 元素2, 元素3);
	
	2.中间操作方法
		概述:使用Stream流调用方法之后,得到的结果是一个新的Stream流,可以支持链式编程
		
		fliter: 过滤流的元素(把满足条件的元素保留)
		limit: 截取流中前面几个元素
		skip: 跳过流中前面几个元素
		sotred: 对流中的元素排序
		distinct: 去除流中重复的元素
		contact: 把两个流合并为一个流
		map: 把流中的元素转换为其他类型的元素
		mapToInt: 把流中的元素转换为Integer
		mapToDouble: 把流中的元素转换为Double
	
	3.终结方法
		max: 求流中元素的最大值
		min: 求流中元素的最小值
		forEach: 遍历流中的元素
		count: 求流中元素的个数
		
		DoubleStream、IntStream有求平均值的方法
			average: 求流中元素的平均值
	
	4.收集方法
		collect(Collector coll): 把流中的元素收集成List、Set、Map集合
			参数:Collectors.toList() 收集成List集合
				  Collectors.toSet()  收集成Set集合
				  Collectors.toMap(
					lambda表达式1 //什么是键
					,
					lambda表达式2 //什么是值
				  )
		toArray(): 把流中的元素收集成数组

二、异常

1.什么是异常?
        解释:异常是Java程序在编译或者执行过程中产生的问题,把这些问题叫做异常.
            Java语言的设计者,为了让开发者知道,程序产生的是什么问题,就把异常写成类,把这些类也编写到了API文档中
            当开发者遇到这些异常类,可以通过查询API文档,来查找问题产生原因。
        
2.异常的体系
        由于Java中异常有很多类,有些异常是有共性的,所以就有了异常的继承体系
        Throwable类:异常的根类
            --Error: 错误(比较严重的问题,用代码解决不了)
            --Exception:异常(可以用代码解决的)
                -----Exception及其子类:编译时异常(编译时报错,不处理无法执行)
                -----RuntimeException及其子类: 运行时异常(编译时不报错,运行时报错)
        举例:
            IndexOutOfBoundsException: 索引越界父类
           ArraIndexOutOfBoundsException:  数组索引越界
           StringIndexOutOfBoundsException: 字符串索引越界
        
3.异常是如何产生的?
        1)在API方法中,方法的设计者,考虑到方法的调用者可能传递参数不合法,导致程序无法正常执行
          所以方法的设计者,就需要在方法内部对参数进行校验,如果校验不通过,就给调用者产生异常对象,目的就是告诉调用者出现了什么问题

public static void 方法名(参数){
			  if(参数不合法1){
				  throw new 异常类(); //把异常对象抛给调用者
			  }
			  
			  if(参数不合法2){
				  throw new 异常类(); //把异常对象抛给调用者
			  }
			  
			  //....正常代码...
		  }
			
		

2)作为方法的调用者,如果真的传递不合法的数据,就会触发异常,产生异常对象
          如果不做任何处理,这个异常对象最终就交给了JVM,JVM就会把异常打印输出。

4.调用一个有异常的方法,如何处理?

作为方法的调用者,对异常的处理有两种方案
		
		方法1:使用throws 把异常继续往外抛
			public static void 方法名() throws ParseException{
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
				Date date = sdf.parse("2008年08月08日");
			}
			
		方法2:使用try...catch处理异常
			public static void 方法名() {
				try{
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
					Date date = sdf.parse("2008年08月08日");
					System.out.println(date);
				}catch(ParseException e){
					System.out.println("日志格式不对");
				}
			}

5.自定义异常类

如果API中的异常类不足以描述程序中的问题,就可以自定义异常类
              自己写一次类,最重要的是异常的名字(见名知意,哪怕这个名字特别长)

自定义异常类的步骤:
			//第一步:先定义一个异常类,继承RuntimeException或者Exception
			public class NumberTooBigException extends RuntimeException{
				//第二步:提供两个构造方法,方便创建异常对象
				public NumberTooBigException() {
				}

			//String message:表示异常的描述信息,在控制台中打印异常时
            //冒号后面的解释信息
				public NumberTooBigException(String message) {
					super(message);
				}
			}
					
		   //在需要的地方,产生自己定义的异常类对象
			 public static void test(int num) throws NumberTooBigException{
				if(num<0 || num>100){
					throw new NumberTooBigException(num+"数据过大");
				}

				System.out.println(num);
			}

三、logback日志框架

日志作用:日志用来记录程序在运行过程中产生数据,方便程序员对代码进行调试
    
    日志的使用步骤:
        第一步: logback日志的jar包复制到项目的lib文件下
                (jar包:jar包指的是一个压缩包,里面封装是别人写好的字节码文件)
        
        第二步:选择这些jar,点击 Add as Library (添加为项目的依赖库)
        
        第三步:把logback的配置复制到src目录下
        
        第四步:写代码
            //创建一个日志记录器对象
            public static final Logger LOGGER = LoggerFactory.getLogger(Demo1.class);
            
            //然后,再采用不同的方法,打印输出不同级别的日志
            LOGGER.trace("trace");
            LOGGER.debug("debug");
            LOGGER.info("info");
            LOGGER.warn("warn");
            LOGGER.error("error");
四、File类

理解:File类的对象用来表示文件或者文件夹


	1.File类的构造方法
		public File(String filename)
			根据指定的字符串路径创建File对象
		public File(String parent, String child)
			根据指定的字符串父路径、子路径,创建File对象
		public File(File parent, String child)
			根据指定的File对象父路径、子路径,创建File对象
			
	2.关于路径写法的注意事项:
		1)路径可以是存在的路径,也可以是不存在的路径
		2)路径可以是相对路径、也可以是绝对路径
			绝对路径:从盘符开始的路径,如果是Linux或者Mac系统是以/开头
				举例:C:\\itheima\\a.txt
			
			相对路径:从项目的根目录开始的路径(省略项目的根目录不写,直接
                写根目录以下的路径)
				举例:假设项目的根目录是 C:\IdeaProjects\javase_advance
					  在项目的根目录下有一个a.txt文件
				相对路径写法: "a.txt"
		3)在不同的操作系统中,路径名称的分隔符是不一样
			Windows系统: \\
			Linux系统:  /
			
			
	3.File类的常见方法
		1)判断方法
			public boolean isDirectory()
				判断File对象表示的路径是否是一个文件夹
			public boolean isFile()
				判断File对象表示的路径是否是一个文件
			public boolean exists()
				判断File对象表示的路径是否存在
				
			
		
		2)获取方法
			public String getAbsoultePath()
				获取File对象表示的绝对路径
			public File getAbsoulteFile()
				获取File对象表示的绝对路径
			
			public String getPath()
				获取File对象封装的路径
			public String getName()
				获取File对象表示文件或者文件夹的名字
			public long lastModified()
				获取File对象表示文件或者文件夹的最后一个修改的时间(毫秒)
				
		
		3)创建删除方法
			public boolean createNewFile()
				根据File对象的路径来创建文件
				注意:文件它的父路径必须存在
			
			public boolean mkdir()
				根据File对象指定的路径,来创建文件夹
				注意:只能创建单级文件夹
			
			public boolean mkdirs()
				根据File对象指定的路径,来创建文件夹
				注意:可以创建多级文件夹
			
			public boolean delete()
				根据File对象指定的路径,来删除文件、删除文件夹
				注意:必须是空的文件夹才能删除
		
		4)遍历方法
			public File[] listFiles()
				获取File对象表示文件夹里面的一级内容(可能是文件、也可能是文件夹)
				返回一个File数组
				
				注意:如果调用者是一个空的文件夹,则返回一个长度为0的数组
				      如果调用者是一个文件,则返回null
					  如果调用者不存在,也返回null

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值