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

教材学习内容总结

  • 第四章要点:

    • 要点1:面向对象三个性质:封装性、继承、多态;
    • 要点2:类:类声明、类体、成员变量、方法、类的UML图;
    • 要点3:构造方法与对象的建立:构造方法、对象的建立和使用、对象的引用和实体;
    • 要点4:类与程序的基本结构,参数传值;
    • 要点5:对象的组合:组合和复用,类的关联关系与依赖关系;
    • 要点6:实例成员与类成员,方法重载,this关键字;
    • 要点7:包package,import;
    • 要点8:访问权限:public,protected,友好的(friendly),private;
    • 要点9:基本类型的类封装:Byte(byte num)、byteValue()等,对象数组;
    • 要点10:JRE扩展与jar文件xxx.mf,文档生成器javados,应用举例。

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

1. 引用其他类中的变量数值错误。

如下列程序用来进行阶乘运算

public class JDB{
public static void main(String[] args) {
int numone=9, numtwo=10;
HE tet = new HE(); //为tet分配空间
tet.mult(numone); //实现9!并输出
System.out.println(numone+"!的值supnum="+tet.supnum); //输出阶乘的值
tet.mult(numtwo); //实现10!并输出
System.out.println(numtwo+"!的值supnum="+tet.supnum); //输出阶乘的值
}
} class HE{ //声明实现阶乘运算的类
int supnum = 1; //声明成员变量
void mult(int num){
for (int i=1; i<=num; i++){
supnum = supnum*i; //进行阶乘运算
}
}
}

结果如下:

9!的值supnum=362880
10!的值supnum=-1736015872
  • 问题1解决方案:

    为什么9!的值是对的,但10!就不对了呢?

    重点是:类中的变量分为两种:成员变量和局部变量。成员变量在声明的方法外,成员变量的值一旦通过命令改变就不会恢复初始,进行垃圾回收。但局部变量在方法内,在方法运行完成后就会回收,下次再用方法时,会重新定义为初始值。

    而tet中的supnum是成员变量,supnum是不会随着tet中方法mult的结束而恢复初始1。在进行9!的运算后,supnum=362880;但在进行10!的运算的时候,supnum就不是1了,还是362880。这时进行的运算就是362880*10!,这个算式的结果超过了int类型的最大容量2^31-1,结果就变成了错误的值。

    将程序更改如下,改变的命令已用 //** xxxxx ** 的格式标明:
public class JDB{
public static void main(String[] args) {
int numone=9, numtwo=10;
HE tet = new HE();
tet.mult(numone);
System.out.println(numone+"!的值supnum="+tet.supnum);
tet.mult(numtwo);
System.out.println(numtwo+"!的值supnum="+tet.supnum);
}
} class HE{
int supnum = 1;
void mult(int num){
int innum=1; //** 声明局部变量 **
for (int i=1; i<=num; i++){
innum = innum*i; //** 使用局部变量进行阶乘运算 **
}
supnum = innum; //** 将局部变量的值赋值给成员变量 **
}
}

正确结果如下:

9!的值supnum=362880
10!的值supnum=3628800

2. 可变参数的用法

声明可变参数int ... add基本等同于int[] add,如下程序。

4个注意事项:

1.只能出现在参数列表的最后;

2.位于变量类型和变量名之间;

3.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数;

4.参数的类型必须保持一致。

public class VariableParameter {
public static void main(String[] args) {
//使用可变参数
System.out.println(add(2,3));
System.out.println(add(2,3,4));
//使用数组方式
int[] x1=new int[]{2,3};
int[] x2=new int[]{2,3,4};
System.out.println(add2(x1));
System.out.println(add2(x2));
} public static int add(int x,int ... args){ //隐含建立数组(int)args[]
int sum=x;
for(int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}
//传入数组参数
public static int add2(int[] args){
int sum=0;
for(int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}
}

3. 编写简单脚本的初尝试

20175223的Shell脚本学习笔记一:变量

在初次打开终端时,只是进入根目录~,如何快速进入码云的本地仓库目录并开启root权限呢?

在根目录中vim cas.sh创建脚本文件,输入以下命令、保存退出;chmod +x cas.sh添加执行权限;在根目录中执行脚本文件. ./cas.sh要在普通目录中./xxx.sh命令之前加. ,注意:../之间有空格。

#!/bin/sh
clear
cd /alive/string
echo "You had cd ~.alive.string."
echo ""
sudo su

执行脚本并输入密码结果如下:

You had cd ~.alive.string.

[sudo] yogile 的密码:
root@yogile-VirtualBox:/alive/string#

如果这时输入exit回车,将停留在/alive/string文件夹中,但是失去了root权限。

菜鸟教程提供的Shell在线编辑器

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

1. 仍然对类封装不太熟悉。

在编译第四章例子22时,可编译,但仍然在编译完成后想要运行它,短时间内没有意识到它是有理数的类封装。

root@yogile-VirtualBox:/alive/string/bin# java Rational
错误: 在类 Rational 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

上述错误并非程序错误,是用法错误。Rational.class 是为Example2_23.java提供 Rational 类的可创建对象的。在 Example4_23.java 中写public static void main(String[] args),以Example4_23为主类即可。

[代码托管]

  • 代码提交过程截图:

  • 代码量截图:

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

学习进度条

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

  • 实际学习时间:16小时

  • 改进情况:

    较上周,解决了可变参数的问题。

参考资料

# 学号 20175223 《Java程序设计》第3周学习总结的更多相关文章

  1. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  2. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  3. 学号20145322 《Java程序设计》第一周学习总结

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

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

    201521123061 <Java程序设计>第九周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1 ...

  5. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  7. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

  8. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  9. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

  10. # 20175329 2018-2019-2 《Java程序设计》 第二周学习总结

    学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...

随机推荐

  1. 内置函数_map、filter

     1.map   #循环帮你调用函数 map(makir,dir_names)     #生成器,结果是一个内存地址.为了节省内存,每次循环时,就按照定义的规则去生成一个数据,循环一次释放一次生成的数 ...

  2. ELK学习笔记之基于kakfa (confluent)搭建ELK

    0x00 概述 测试搭建一个使用kafka作为消息队列的ELK环境,数据采集转换实现结构如下: F5 HSL–>logstash(流处理)–> kafka –>elasticsear ...

  3. Docker+Consul+Registrator 实现服务注册与发现

    Docker+Consul+Registrator实现服务注册与发现 逻辑图 实现nginx节点自动化加入容器IP代理 1.三台Consul agent server作为高可用通过Consul Tem ...

  4. dataguard从库数据库丢失恢复例子(模拟丢失数据文件)

    准备工作,使用如下脚本进行数据库的全备份[oracle@localhost ~]$ more rman_backup.sh #!/bin/sh RMAN_OUTPUT_LOG=/home/oracle ...

  5. Java Web获取Web应用根路径

    最基本的 1,request.getRealPath("/");这个方法已不推荐用 2,在Servlet 里用this.getServletContext().getRealPat ...

  6. ant__property标签的含义与使用

    property标记用于设置属性 属性是键值对,其中每个值都与键相关联,属性用于设置可在构建文件中的任务位置访问的值,设置属性后无法更改 Apache Ant属性类型有两种:内置属性 / 用户定义的属 ...

  7. 王之泰201771010131《面向对象程序设计(java)》第四周学习总结

    王之泰201771010131<面向对象程序设计(java)>第四周学习总结 第一部分:理论知识学习部分 第四章 1.类与对象的基础概念. a.类(class)是构造对象的模板或蓝图.由类 ...

  8. 牛客练习赛43C Tachibana Kanade Loves Review

    题目地址 Link 题解 虚点这种东西还是没有掌握好啊. 考虑建一个虚点,向已经学会的东西连一条边权为0的边,关系正常连边,单独学的从虚点连一条边过去. 然后做一遍最小生成树就得到答案了. 这题略卡常 ...

  9. 论文笔记:Visual Semantic Navigation Using Scene Priors

    Visual Semantic Navigation Using Scene Priors 2018-10-21 19:39:26 Paper:  https://arxiv.org/pdf/1810 ...

  10. AJAX缓存清理

    Ajax页面缓存是ajax处理数据时对一些重复相同数据进行一个缓存操作,这样从另一个层面对于我们来讲是非常的不错了,但有时我们并不希望它缓存要如何处理呢?下面我们一起来看看关于页面缓存问题分析与解决, ...