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

教材学习内容总结

编程语言的发展事是从面向机器(汇编、机器)到面向过程(C)再到面向对象(Java)

成员变量:

1、成员变量定义在类中,在整个类中都可以被访问;

2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中;

3、成员变量有默认初始化值。

局部变量:

1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效;

2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放;

3、局部变量没有默认初始化值 。

在使用变量时需要遵循的原则为:就近原则。

类UML图分为名字层、变量层和方法层。

构造方法的注意事项:名字与类名相同;没有类型;可以有多个构造方法,但是参数需不相同;没有写构造方法,系统会默认只有一个构造方法。

对象(类似C语言的结构体?):创建对象包括对象的声明+分配变量:[类名] [对象名],[对象名] = new 类名,不能使用空对象、[对象].[变量]来对对象进行变量的修改、方法的调用。

一个类声明的两个对象如果有相同的引用,二者就具有完全相同的变量。

Java程序由多个类组成,把这多个类写在不同的源文件中,再把这些源文件放到同一个目录下,之后只要编译主类的源文件,其他相关的源文件也会一起编译,然后主要运行主类的字节码文件就可以得到想要的结果了。这样方便程序的管理和维护。

可变参数用···表示若干参数,他们的类型相同,最后一个参数是参数列表中的最后一个参数,例如public void f(int ...x)。这样的意思是定义了若干个int类型的参数,具体的个数由输入情况决定,达到了动态分配的效果。与数组类似,可以用下标来对可变参数进行操作,如x[0],x[1],而x.length等于x所代表的参数个数(for语句适用)。

对象的组合与复用和C语言的嵌套函数相似。若有两个对象他们的引用相同,改变其中一个对象的变量,另外一个对象的相应的变量也会跟着改变;但是如果改变其中一个对象的引用,那么另外一个对象的引用不变且对象里面的变量会保持。

实例成员和类成员的区别是:实例成员只能通过对象名来调用,而类成员可以通过类名来调用;类成员是所有由这个类创建的对象共同拥有的;类方法只能操作类变量,定义类成员的关键词是static。

方法重载:一个类中有多个方法可以用相同名字,但是它们的参数必须不同,且不能出现歧义调用。

this关键字可以出现在实例方法、构造方法中,不能出现在类方法中。this关键字通常可以省略,只有当成员变量与局部变量相同时不可省略。

包是管理类的一个机制,能够区分名字相同的类。语句为package [包名],要写在源文件的开头。如果源文件没有指定包名,则默认为无名包的一部分。同属于一个目录下的没有指定包名的源文件,他们属于同一个无名包。

在编译和运行无名包时,要注意,源文件和字节码都要在相应包名的目录之下。编译时,进入包名目录的上一层目录,使用javac */[包名]/源文件;运行时,也是进入包名目录的上一层目录,使用java [包名].[类名]。源文件可以不放在包名目录下,但是相应的字节码文件必须放在包名目录下。

可以利用import [包名].[类名]来调用不是同一个包的类。import语句放在package语句和源文件中类的定义之间;也可以带着包名来直接只用其他包的类[包名].[类名] [对象名] = new [包名].[类名]。

包名调用大概有4种情况,处理方式不相同:

1、有包名调用有包名:直接使用import;

2、无包名调用无包名:把他们放在同一个目录下;

3、无包名调用有包名:把有包名的包名目录和无包名的文件放在同一个目录下;

4、有包名调用无包名:不可能实现。

访问限制修饰符有private,protected,public他们都可以用来修饰成员,但是类不能用private,protected来修饰。private使其他类用本类创建的对象不能调用本类的变量和方法。public和protected使其他类用本类创建的对象能调用本类的变量和方法,三者都不加的情况下只有和本类同包的其他类才能调用本类的变量和方法。

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

  • 问题1:第四章程序很多,有很多类的名称相同但是都放在一个名为test3的文件夹里,如4-10和4-5的Lader、4-8和4-13的Circle

  • 问题1解决方案:修改其中一类的名称并在代码中做出相应修改,或可以为每一个程序都创建一个文件夹(项目)。

  • 问题2:没有仔细阅读课本要求,如4-17无要求运行而只是编译并在4-18中运行

  • 问题2解决方案:先不急把代码一股脑打到虚拟机上调试运行而先通读一遍课本再开始。
  • 问题3:4-20程序代码最后输出形式没有换行不够工整

  • 问题3解决方案:可以将System.out.print改成System.out.println或设置一个循环最后加入System.out.println("");

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

  • 问题1:修改4-15的Student类为student并调整代码后出现编译错误

  • 问题1解决方案:删除public class student{行中的public然后将student.java代码放入Example4_15.java中

  • 问题2:遇到有包(package)的程序依然用javac、java编译和运行
  • 问题2解决方案:javac -d . [程序名.java]、java [包名].[类名] [程序名]
  • 问题3:在用JDB调试的时候输入cont程序就退出了

  • 问题3解决方案:应该是因为断点没有命中,但检查了很多遍暂时没找到是哪一步的问题...

代码托管

上周考试错题总结

  • 错题1

    原因:概念不清

    理解情况:全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用

  • 错题2

    原因:概念不清

    理解情况:对象是存放在堆中 变量名存放在栈中。

心得体会

第四章的内容比第二、三章之和还要多,但直到现在只有这次我在周五之前提交了博客,说明人的潜力还是比较大的,但也因为这周内容过多,很多程序我只是把代码输进去编译运行(虽然我认为对于简单代码能够节省无用的时间),这样可能是不对的,果然在4_17和4_22被极其低级的问题耽误了相当多时间,绞尽脑汁地想代码哪里出现了问题,却发现这不是完整的程序,以后还是应该不因完成作业而应付作业,不然这样的学习浅薄又低效。

上周我认为提前完成博客极有可能会让我在周末再难提起学编程的想法,我还是这样认为的,但我还是觉得应该早些把博客写出来,这样才有时间做其他同样重要的事情而不会有焦虑感(这学期需要在周末去驾校练车,平常需要一定的时间学习英语备战六级还有其他学科的学习),每天两三小时的Java时间暂时还不会让我感到难以接受而且对于完成课内的作业任务来说也足够,这可能就是马原上所说的否定之否定吧。同时我发现Java学的越多,和C语言的类似之处也发现的越多。

学习进度条

代码行数 博客量 学习时间 重要成长
目标 5000行 16篇 320小时
第一周 51/100 1/1 12/20 基本掌握了Linux的简单指令
第二周 173/200 1/1 18/20 学习了Java重要基本语法
第三周 672/800 1/1 18/20 学习了包含多个类的Java程序及类的包机制
第四周
  • 计划学习时间:20小时

  • 实际学习时间:18小时

  • 改进情况:日积月累不可急功近利

参考资料

20175314 《Java程序设计》第三周学习总结的更多相关文章

  1. Java程序设计第三周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  2. 20175314 《Java程序设计》第九周学习总结

    20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...

  3. 20175314 《Java程序设计》第二周学习总结

    20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...

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

    20175314 <Java程序设计>第一周学习总结   教材学习内容总结       除了学院统一购买的<Java 2 实用教程(第5版)>我还在网上买了一本<Head ...

  5. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  6. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  7. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  8. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  9. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  10. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

随机推荐

  1. DP常用模板

    递推模板: 从结果往回推,需要设定边界为无穷大,并建立状态转移方程 ;j<n;j++) d[n][j]=a[n][j];///边界处理 ;i>=;i--){ ;j<i;j++)/// ...

  2. windows server 修改远程桌面连接端口号

    1. [运行]输入 regedit 2.  在注册表编辑器中找到以下PortNamber键,改为要使用的远程端口,如10000. HKEY_LOCAL_MACHINE\SYSTEM\CurrentCo ...

  3. 虚拟机安装及配置(centOs7)

    准备工作 a)下载VMware workstation14 b)下载CentOS7 CentOS7 c)下载xshell.xftp 安装参考 分区设置 补充(解决网络IP问题,设置IP,service ...

  4. py-day3-3 python 函数的作用域

    def test1(): print('in the test1') def test(): print('in the test') return test1 print(test) res = t ...

  5. golang http proxy反向代理

    本文介绍golang中如何进行反向代理. 下面例子中, proxy server接收client 的 http request,转发给true server,并把 true server的返回结果再发 ...

  6. 在内存中加载DLL

    有个需求是把一个DLL作为数据打包到EXE中,运行的时候动态加载.但要求不是释放出来生成DLL文件加载. 花了一天时间做出来.效果还可以. 不过由于是直接分配内存加载DLL的.有一些小缺陷.例如遍历进 ...

  7. <ROS> 通讯方式之 Action

    Ros 官网介绍 http://wiki.ros.org/actionlib 一个简易的action教程,package -- example_action_server. action文件夹内存放 ...

  8. PAT 甲级 1083 List Grades (25 分)

    1083 List Grades (25 分) Given a list of N student records with name, ID and grade. You are supposed ...

  9. 使用RecyclerView实现聊天界面

    原文地址:https://blog.csdn.net/wang_wy/article/details/79032698

  10. openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录

    openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主 ...