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

教材学习内容总结

对象和类。

Java有基本类型和类类型这两个类型系统。本章主要介绍类类型。定义类时用关键词class,利用类建立对象实例用new关键词。

使用标准类。

java.util.Scanner:利用Scanner的nextInt()实现用户在程序中输入int类型的数据。Scanner对每个基本类型都有对应的next***()方法。比如nextByte()、nextLong()等。

java.math.BigDecimal:由于Java程序中浮点数遵循一定的规范,使用分数和指数来表示浮点数,导致不能直接用“==”来比较浮点数运算结果。使用java.math.BigDecimal类类型的数据则可以避免上述结果的发生。


BigDecimal operand1 = new BigDecimal ("1.0");
BigDecimal operand2 = new BigDecimal ("0.8");
BigDecimal result = operand1.subtract(operand2);
System.out.println(result);

对象指定与相等性

注意符号“==”和“=”用于基本类型和类类型的区别。

  • 在基本类型中“=”即赋值的意思,“==”即比较两个变量的存储值是否相同。
  • 在类类型中“=”是指定参考名称参考某个对象,“==”是用来比较两个参考名称是否参考同一对象。此时我们可以用a.equal()来比较两对象的内含值。

BigDecimal a=new BigDecimal("0.1");
BigDecimal b=new BigDecimal("0.1");
System.out.println(a==b);//false
System.out.println(a.equals(b));//true

数组对象

数组在Java中就是一个对象。声明一维数组用int[],在一维数组中可以用数组的length属性获得数组元素的个数。声明二维数组用int[][] ,通过.length的指数组有几列,通过[x].length得知每列有几个元素。

数组作为一个对象,每个类型都有初始值,另外数组的索引从0开始,使用new建立数组后,每个索引元素都有确定值,而且数组一旦建立,长度就确定了,我们需要注意的是在使用的时候不能超过其索引范围,否则会出现ArrayIndexOutOfBoundsException的错误。

数组赋值的基本方法:


int[] scores={89,81,74,68,78,76,77,85};
for(int i=0;i<scores.length;i++)
{
System.out.printf("学生分数:%d %n",scores[i]);
}
for(int score:scores)
{
System.out.printf("学生分数:%d %n",scores);
}
字符串对象
  • 字符串本质是打包字符数组的对象,是java.lang.String类的实例。需要注意到是以“”包括的字符串,只要内容完全相同,则只会建立一个String实例,并在字符串池中维护。
  • 字符串对象一旦建立,就无法更改对象中的任何内容。使用“+”连接字符串可以产生新的String实例。

第五章内容

利用构造函数实现对象初始化流程的封装。封装后即可避免重复撰写初始化流程。用private定义私有数据类型 。

public为公开类,在构造函数上声明public表示其他包中的类可以直接调用这个构造函数,在方法上声明public表示其他包的方法可以直接调用这个方法。

定义类时如果没有构造任何函数,编译程序会自动加入一个无参数、内容为空的构造函数,成为默认构造函数。

编译程序自动加入的构造函数,是默认构造函数。如果自行撰写函数无参数、没有内容的构造函数就不是默认构造函数了。

在同一个类中,只要同名函数的参数个数或者参数类型不同,就允许存在。

除了被声明为static外,this关键字可以出现在类中任何地方,在构造函数与对象数据成员同名时,可用this加以区别。

class Other{
{
System.out.println("对象初始区块");
} Other() {
System.out.println("Other() 构造函数");
} Other(int o) {
this();
System.out.println("Other(int o) 构造函数");
}
}
public class Object {
public static void main(String[] args){
new Other(1);
}
}

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

在第四章中对于我而言难点就是“认识对象”。想要区分对象、类、类类型必须要清楚的了解、认识“对象”。解决问题的第一步:搞清楚面向对象和面向过程的区别。

面向对象和面向过程

  • 面向对象是相对于面向过程而言。
  • 面向过程主要强调的是在操作过程中涉及的行为或是说实现的动作。就好比说我现在的目的是要写一篇关于Java的博客。
  1. 我得先阅读与所写内容有关的Java的相关资料;
  2. 接着再看看相关的视频;
  3. 我得动手尝试在所学到基础上编写代码;
  4. 最后才能完成Java的博客编写。

    这就是面向过程,强调实现目标的每一个动作。
  • 面向对象则把上述所描述的所有动作分装到一个对象“我”中。那么在编写程序的时候找到“我”这个对象,然后即可实现对象中的每一个动作。

类与对象

  • 类:描述具有共性的对象的特征。定义类及定义一个类别的属性和行为。
  • 对象:在Java语言中在类的基础上用new建立具体的对象。

就好比电科院的全体学生是一个类,但是在这个类中的每一个人(对象)却有着不同的年级,姓名,性别,专业等。

  • Java语言描述:
package creatclass;
class Student{
int studentID;
String sex;
int age;
Student(int studentID,String sex,int age){
this.studentID=studentID;
this.sex=sex;
this.age=age;
}
} public class Creatclass {
public static void main(String[] args) {
Student s1=new Student(20140018,"female",20);
Student s2=new Student(20140012,"male",20);
System.out.printf("s1(%d,%s,%d)%n",s1.studentID,s1.sex,s1.age);
System.out.printf("s1(%d,%s,%d)%n",s2.studentID,s2.sex,s2.age);
} }

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

关于自动拆箱与装箱的问题
  1. 对象指定一相等性中我们知道对于基本类类型而言,“==”和“=”前者用来比较参考名是否参考同一对象,所以类类型中不能草率的使用这两个符号。但是在章节自动装箱与拆箱中又可以直接比较两个对象中的内含值。是因为基本类型打包的表述方式不同所以有所区别吗?

  2. 凡是使用integer wrapper=10这样的方式jvm都会自动默认装箱与拆箱?在自动装箱与拆箱中“==”符号必须在指定的范围内才可以进行数值比较,那么用“=”赋值操作有限定吗?

  3. 在课本上有这样一句话

建立Integer时,使用Integer.valueof()。用这种方式建立实例,如果传入的int在IntegerCache.low与IntegerCache.high之间,就会看缓存中有没有打包过相同的值,如果有就会直接返回,如果没有就会用new建立新的实例。

那么Integer i1=100;Integer i2=100;这相当于Integer i1=100;Integer i2=i1;那i1和i2有什么意义吗?同一个对象i2改变,那么i1也会改变啊?仅仅是为了比较数值大小吗?

代码托管截图:

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

以前我一直把java当成和c语言一样简单的语言,现在看来,java需要学习的地方还有很多,需要仔细去研究,实验。java中的面向对象这个思想还需要我们在以后的学习中慢慢探索。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3500行 30篇 400小时
第一周 100/100 2/2 20/20
第二周 200/300 1/3 30/50
第三周 300/600 1/4 28/78

参考资料

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

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

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

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

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

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

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

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

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

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

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

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

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. BNU4208:Bubble sort

    冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如 ...

  2. Android Runtime.getRuntime().exec

    try { // Executes the command. Process process = Runtime.getRuntime().exec(cmd); // NOTE: You can wr ...

  3. Android 7.1.1 系统截屏

    frameworks/base/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java Tak ...

  4. 以前做的H5推广小游戏(活动及派发奖品形式)

    润百颜 1 微信授权登录,获取用户openid.一个openid一次抽奖机会,该openid用户多次玩游戏抽奖,仍然是相同的优惠码. 2 游戏结束抽奖,100%中奖,获得优惠码.优惠码和openid保 ...

  5. 【BZOJ5101】[POI2018]Powód 并查集

    [BZOJ5101][POI2018]Powód Description 在地面上有一个水箱,它的俯视图被划分成了n行m列个方格,相邻两个方格之间有一堵厚度可以忽略不计的墙,水箱与外界之间有一堵高度无 ...

  6. Ensemble Learning

    Ensemble Learning是机器学习里最常见的建模方法,RandomForest 和 GBDT 采用了Ensemble Learning模式,只是具体方法不同. 下面简单翻译下一 https: ...

  7. 【转载】细说 Form (表单)

    Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源. 虽然Asp.net WebForms框架为了帮助我们简化开发工作,做了很完 ...

  8. 170614、MySQL存储引擎-MyISAM与InnoDB区别

    MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理 ...

  9. 静态绑定 self 和 static的区别

    后期静态绑定 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwar ...

  10. Servlet------>request和response控制编码乱码问题

    我在request篇和response都有提到,觉得会忘记,所以从新整理一下 request细节四----->通过request控制编码问题 第一种方式是通过设置------>reques ...