《Java程序设计》第4周学习总结

学号 《Java程序设计》第4周学习总结

教材学习内容总结

  • 第五章要点:
    • 要点1:子类与父类:extends、类的树形结构;
    • 要点2:子类的继承性:同一包中与不在同一包中的继承性、UML图、protected;
    • 要点3:子类与对象:特点、instanceof运算符;
    • 要点4:成员变量的隐藏和方法重写;
    • 要点5:super关键字、final关键字;
    • 要点6:对象的上转型对象,继承与多态;
    • 要点7:abstract类与abstract方法;
    • 要点8:面向抽象编程;
    • 要点9:开-闭原则。

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

1. 编程实现输入平方倒置的功能

要求:命令行传入数组;重点:命令行参数。

  • 问题1解决方案:
    如何实现命令行传入参数?
    public static void main(String [] args)中,Java程序运行时,会调用main方法,args就是命令行参数。
复制public class xxxx {
    public static void main (String args[]) {
        for(String arg : args){
            System.out.print(arg+" ");
        }

for(String arg : args)for each用法,历遍数组args所有元素。
使用命令行输入参数:

复制java xxxx 1 2 3 4

输出如下:

复制//java xxxx 1 2 3 4
1 2 3 4 

2. 对象的上转型对象。

什么是对象的上转型对象?
尝试写一个程序实验学习:

复制class Material {        //定义父类:材料
    void provision(String material, String color) {
        System.out.println(material+"有光泽:"+color);
    }
    void fatherExtra() {
        System.out.println("This is fatherExtra.");
    }
}

class Solid extends Material {        //定义子类:固体
    void provision(String solid, String solidColor) {
        System.out.println(solid+"有金属光泽:"+solidColor);
    }
    void extra() {
        System.out.println("This is extra.");
    }
}

public class Instance {
    public static void main(String[] args) {
        Material metal;
        Solid gold = new Solid();
        metal = gold;       //metal 是 Solid 对象 gold 的上转型对象
        metal.provision("gold", "golden");
        gold.provision("gold", "golden");
        //metal.extra();        // extra 方法是子类 Solid 新增的方法,父类中不存在,所以无法使用
        gold.extra();       // extra 方法是子类 Solid 新增的方法,对象 gold 可使用

        metal.fatherExtra();        //gold 的上转型对象也可以使用 Solid 的父类 Material 的方法
        //提问:子类对象的上转型对象与父类对象的区别?

        Solid metal_2 = (Solid)metal;       //创建一个新对象 metal_2,把上转型对象强制转化为子类的对象
        metal_2.extra();
        //metal.extra();        // extra 方法依然无法使用
    }
}

3. Shell脚本学习笔记二:字符串

xxxxxxxx的Shell脚本学习笔记二:字符串

代码调试中的问题和解决过程

1. Integer.parseInt(String s) 的注意事项

使用Integer.parseInt(String s)的简单程序:

复制import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String s = reader.nextLine();
        int num = Integer.parseInt(s);
        System.out.println(num);
    }
}

执行输入命令时,输入 123123 ,输出 123123
注意Integer.parseInt(String s) 只能将 字符串 类型的 整数 数字转化为 int 类型的数字。

要转化的字符:不可是非数字的字符(英文、中文、特殊字符等),不可是有小数的数字字符(1.0、12.3等)。
如果执行输入命令时,输入 ThisIsNotANumber1.0 ,报错:

复制Exception in thread "main" java.lang.NumberFormatException: For input string: "ThisIsNotANumber"
//Exception in thread "main" java.lang.NumberFormatException: For input string: "1.0"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at test.main(test.java:7)

[代码托管]

  • 代码提交过程截图:

  • 代码量截图:

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

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 322/322 1/1 23/23
第二周 520/842 3/4 25/48
第三周 458/1300 2/6 16/64
第三周 914/2214 2/8 21/85
  • 计划学习时间:20小时

  • 实际学习时间:21小时

参考资料

作者:Yogile

出处:https://www.cnblogs.com/Yogile/p/10585178.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Yogile  阅读(254)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题