Java程序设计

主讲教师: 郑如滨 副教授 / 集美大学

教学进度:
  • 预报名
  • 进行中
  • 已结束

学时安排:56学时

学分:3.5分

主要讲解Java程序设计。课程不仅包含讲授理论的视频,还包含在线编程练习。从理论与实践两个方面带领学生进入Java面向对象编程世界。课程每章均设有章节测验,并提供完整课件的下载,方便自学。课程中的丰富资源可为教师开展SPOC教学提供有力支撑。本课程制作精良、内容丰富,为福建省精品线上一流课程。
  • 10917966

    累计页面浏览量

  • 19800

    累计选课人数

  • 23634

    累计互动次数

03-12 20:10 郑如滨 集美大学 在Java程序设计课程中提问:

一个网页文件(html)包含很多链接。如何结合使用Java流技术与jsoup编程抽取出其中的所有链接?尝试按步骤说明

  • 05-30 07:25 邹子熙

    步骤1:环境准备
    引入jsoup依赖(Maven项目)
    步骤2:用Java流读取本地HTML文件, 通过 FileInputStream   InputStreamReader 读取文件,解决编码问题,再将文件内容转为字符串,交给jsoup解析。
    步骤3:用jsoup解析并提取所有链接。
  • 查看全部(15条)

03-12 19:49 郑如滨 集美大学 在Java程序设计课程中提问:

使用缓冲流读写可能会造成数据丢失。为什么?要怎么解决?有哪些典型的缓冲流?

  • 05-30 07:20 邹子熙

    缓冲流数据丢失的根源是缓冲区数据未刷新到磁盘,解决关键是规范关闭流( try-with-resources )或手动调用 flush() 。
  • 查看全部(13条)

03-12 15:32 郑如滨 集美大学 在Java程序设计课程中提问:

什么类可以将字节流转化为字符流?怎么利用这个类怎么解决乱码问题,尝试给出示例代码。

  • 05-30 06:51 邹子熙

    用  InputStreamReader / OutputStreamWriter  做字节流和字符流的转换,手动指定正确的字符编码,就能彻底解决乱码问题。
  • 查看全部(13条)

03-12 15:32 郑如滨 集美大学 在Java程序设计课程中提问:

什么时候使用字节流?什么时候使用字符流?

什么时候使用字节流?什么时候使用字符流?

  • 05-30 06:51 邹子熙

    只处理纯文本数据,用字符流更安全、更方便。处理二进制数据,或不确定数据类型时,优先用字节流
  • 查看全部(13条)

03-12 19:11 郑如滨 集美大学 在Java程序设计课程中提问:

NIO.2对NIO的主要改进有哪些?

  • 05-30 06:02 邹子熙

    NIO.2 补全了原 NIO 在文件操作、异步 I/O、文件监控三大核心场景的短板,让 Java 拥有了现代化、高性能的 I/O 能力。
  • 查看全部(13条)

03-12 19:06 郑如滨 集美大学 在Java程序设计课程中提问:

Java中定义的三个标准输入输出流是什么?它们分别是什么?

Java中定义的三个标准输入输出流是什么?它们分别什么?有什么用?

  • 05-30 05:44 邹子熙

    Java的三个标准输入输出流是标准输入流( System.in )、标准输出流( System.out )、标准错误流( System.err )。
    -  System.in :读取外部输入(如键盘);

    -  System.out :输出正常结果(如控制台);
    -  System.err :输出错误信息。
  • 查看全部(13条)

03-12 19:06 郑如滨 集美大学 在Java程序设计课程中提问:

什么时候应该使用输入流、什么时候应该使用输出流?

  • 05-30 05:44 邹子熙

    输入流用于读取数据,像读文件内容;输出流用于写入数据,如写文件,场景不同使用有别。
  • 查看全部(13条)

03-12 13:54 郑如滨 集美大学 在Java程序设计课程中提问:

思考:随机生成大量不同的id

有一个Student类,其属性(Integer id, String name)。现在想编写一个程序,随机生成10万个学生,这些学生的id范围是1-50万。要求生成的学生的id不能相同。 1. 你觉的使用什么集合类来存储学生?为什么? 2. 给出你的代码。

  • 05-24 11:42 袁志佳

    1. 集合选择

    选用  HashSet<Student>  + 重写  equals() 、 hashCode() 
    原因:

    1. Set 自动保证元素唯一,重复ID自动拒绝存入
    2. 10万数据  HashSet  存取效率远高于 ArrayList 循环查重
    3. ID唯一约束刚好匹配Set特性

    备选思路:先用 HashSet<Integer> 存已生成ID,再封装Student,也可行。

    2. 极简代码

    java

    import java.util.HashSet;
    import java.util.Random;

    class Student{
    Integer id;
    String name;
    public Student(Integer id, String name){
    this.id=id;
    this.name=name;
    }
    // 按id去重必备
    @Override
    public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Student student = (Student) o;
    return id.equals(student.id);
    }
    @Override
    public int hashCode() {
    return id.hashCode();
    }
    }

    public class Test {
    public static void main(String[] args) {
    HashSet<Student> set = new HashSet<>();
    Random rand = new Random();
    // 生成10万唯一ID学生
    while(set.size()<100000){
    int id = rand.nextInt(500000)+1; //1~500000
    set.add(new Student(id,"学生"+id));
    }
    System.out.println("生成学生总数:"+set.size());
    }
    }
  • 查看全部(1条)

03-12 13:54 郑如滨 集美大学 在Java程序设计课程中提问:

思考:使用集合来改造你的购物车

1.购物车与商品之间是什么关系? 2.如果让你设计购物车程序,你会使用数组还是集合来存放购物车的商品?各有何优缺点? 3.你决定使用什么接口及实现类?请分析原因? 4.可选:尝试给出你的代码。

  • 05-24 11:41 袁志佳

    1. 关系
    购物车包含多个商品,同一件商品只存一份、叠加购买数量
    2. 数组 vs 集合
    - 数组:长度固定,购物车增减商品麻烦,弃用
    - 集合:自动变长,自带增删方法,适合购物车动态数据
    3. 选用 Map+HashMap
    key=商品ID,value=商品对象
    优点:一键查重、快速修改数量,效率最高
  • 查看全部(1条)

03-11 21:45 郑如滨 集美大学 在Java程序设计课程中提问:

思考:Comparable接口与Comparator接口的区别

1.Comparable与Comparable接口都可以实现对象之间的比较。那他们之间的区别是什么? 2.可选:尝试使用代码说明他们之间的区别。

  • 05-15 12:59 夏心蕊

    omparable 与 Comparator 接口的区别

    所属关系与侵入性:

    Comparable 是 内部比较器。它属于对象本身,需要修改目标类的源代码,在类内部实现该接口并重写  compareTo  方法。一旦实现,该类的对象就具备了默认的比较规则。

    Comparator 是 外部比较器。它是一个独立的工具类,不需要修改目标类的源代码,只需在需要排序的地方传入一个实现了  Comparator  接口的实例即可。

    定义位置的灵活性:

    Comparable 定义在类的内部,表示该类的自然排序(Natural Ordering)。

    Comparator 定义在类的外部,表示一种自定义或特定的排序规则。

    使用场景:

    Comparable:适用于类的内部有自然的、唯一的排序逻辑(例如:整数大小、字符串字典序)。

    Comparator:适用于需要对同一个类使用多种不同的排序规则,或者类本身不允许修改(如第三方类库)的情况。
  • 查看全部(1条)

常见问题

  • 1.我该如何学习这门课程?

    (1)首先您要注册一个学银在线的账号。

    (2)您需要有一定的上网条件,能够流畅的观看教学视频。在观看的过程中,您可以选择在PC端登陆我们的网页, 也可以选择下载我们的app学习通,通过手机客户端来学习。

    (3)您一旦报名选择了课程,我们的课程主讲老师或课程团队会通过通知的形式给您发送课程有关的消息,同时会抄送您的邮箱,请您及时查收。

  • 2.我在学习过程中遇到问题了,怎么办?

    您可以通过以下几种方式获取帮助:

    (1)在课程群聊中发布求助信息,说不定和你一起学习这门课的小伙伴就能够解决你的问题呢;

    (2)在课程讨论区留言,课程团队看到后将会及时回复。

    (3)联系我们的客服,或者随时给我们发邮件,邮箱地址:xueyinkf@chaoxing.com。

  • 3.我是新手,能否给我一些学习建议?

    (1)我们的课程采用MOOC的方式授课,因此您可以自由安排您的学习时间、学习地点。但我们仍旧希望您每周能都有固定的时间持续进行本课程的学习,根据人的记忆曲线显示这种规律的学习方式能够最大限度的提升您的学习质量。

    (2)学习的过程比较容易,为了检验您的学习成果,我们的课程团队会在课程章节结束后布置测验或作业,希望您尽可能的按时独立完成。如果有没有掌握的知识点,您可以继续回看复习课程。

    (3)希望您能够积极参与课程的讨论,与各位学习者一起煮酒论英雄。在讨论的过程中,不光可以对课程所学内容温习内化,还能互相碰撞出思想的火花,相信您一定会有额外的收获。

  • 4.课程会不会很难、很枯燥?

    (1)我们的课程都是老师经过精心设计拍摄制作而成,并且由于是MOOC的方式,所以课程拆分成了不同的知识点,学习起来一点也不费劲。

    (2)我们的课程多采取理论结合实际的授课方式,课程中也有许多案例的呈现,相信会给学习者带来诸多方面的启发。我们也将力求做到深入浅出,支持学习者将研究发现转化为实践,改进自身教学。