20155203 2016-2017-4 《Java程序设计》第8周学习总结

本文总结了Java NIO操作中的关键类和方法,包括channel的继承架构、Path的各种实用方法,并探讨了Logger类的使用方式。此外,还记录了代码调试过程中遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20155203 2016-2017-4 《Java程序设计》第8周学习总结

教材学习内容总结

1.channel的继承架构
1065404-20170416112216506-1885959806.jpg

2.position()类似于堆栈操作中的栈顶指针。

3.Path path = Paths.get(System.getProperty("user.name"),"Documents","Downloads");表示当前指定的路径为C:\Users\Justin\Documents\Downloads。
4.Path的几种常用方法以及用法的区别

方法名称作用
normalize()移除冗余信息
toAbsolutePath()将相对路径转化为绝对路径
toRealPath()将符号连接转换为真正路径或将相对路径转化为绝对路径
resolve()路径和路径的结合
equals()比较两个Path路径实例是否相同
endsWith()比较路径结尾是否相同
starsWith()比较路径起始是否相同
relativize()切换路径

5.Logger类的构造函数标识为protected要取得Logger实例3必须使用Logger的静态方法getLogger()

教材学习中的问题和解决过程

  • 问题1:P457页
    Files.setAttribute(Paths.get(args[0]),"dos:hidden",true)第一个参数中get()中的参数为什么是args[0]而不是一个文件地址?第三个参数为什么是true而不是一个文件名?

  • 问题1解决方案:args[0]代表的是字符串也就是当前指定文件的相对路径文件夹,第三个参数的含义仍然不明。

  • 问题2:
是什么意思?
- 问题2解决方案:查阅资料后我认为,是这两个实例都会优先考虑Level的过滤然后再执行操作


## 代码调试中的问题和解决过程
- 问题1:教材中的PathDemo.java代码中的输出部分代码用```forEach(out::printf);```表示后和原代码输出一样。但两者在代码中并无联系(我输入的源代码并不是全部输出path各类方法的结果,只是选择了一部分)
![](http://images2015.cnblogs.com/blog/1065404/201704/1065404-20170416112257521-1636105512.png)

![](http://images2015.cnblogs.com/blog/1065404/201704/1065404-20170416112311693-66454406.png)

![](http://images2015.cnblogs.com/blog/1065404/201704/1065404-20170416112325865-1980207585.png)


- 问题1解决方案:
1. System.out是一个PrintStream实例的引用;System.out::println 是对一个实例方法的引用
2. 该引用同时指定了对实例(System.out)的引用以及对方法(PrintStream::println)的引用System.out::println 不是 System.out.println 的等价物;前者是一个方法引用表达式,而后者不能单独作为一个表达式,而必须在后面跟上由圆括号包围的参数列表来构成方法调用表达式。
3. System.out::println 可以看作 lambda表达式 e -> System.out.println(e) 的缩写形式。



## [代码托管](http://git.oschina.net/bestiisjava2017/Hellowh)

![](http://images2015.cnblogs.com/blog/1065404/201704/1065404-20170416112345834-915420225.png)



## 上周考试错题总结
- 哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容:

B .
od -tcx1 Hello.java
C .
od -tc -tx1 Hello.java


- A method that has multiple definitions is an __________________ method(具有多重定义的方法称为方法___).

A .
overloaded(重载)


- What is the output of the following code?(下面代码的运行结果是?)
LocalDate date = LocalDate.of(2018, Month.APRIL, 30);
date.plusDays(2);
date.plusYears(3);
System.out.println(date.getYear() + " "
+ date.getMonth() + " "+ date.getDayOfMonth());

B .
2018 APRIL 30
```

结对及互评

点评过的同学博客和代码

其他(感悟、思考等,可选)

学习任务很大,所以有时可能不能及时的在本周完全将本周的学习任务完成到百分之百,还是需要继续努力!

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标2500行30篇400小时
第一周80/1001/120/20
第二周180/2802/230/38可以用Java语言独立的编写一些具有基本结构的程序
第三周504/7843/322/25
第四周690/14744/425/30基本可以使用父类和子类进行简单的定义和调用
第五周807/22815/525/25进行基本的查错和抛出或直接在程序中改正,理解收集对象的含义
第六周1373/36546/625/25正确使用输入输出系统和线程的一些方法和接口,了解了一些线程环境下的注意事项
第七周623/45082/825/172了解了Lambda表达式的便捷和漏洞,学会设置时间格式
第八周312/49001/925/197了解了NIO操作的类和方法,和关于日志管理的内容
  • 计划学习时间:25小时

  • 实际学习时间:25小时

  • 改进情况:能合理安排自己的时间,而不是“每天都学Java”。

参考资料

转载于:https://www.cnblogs.com/xhwh/p/6718261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值