20155306 2006-2007-2 《Java程序设计》第3周学习总结

教材学习内容总结

第四章 认识对象

4.1 类与对象

定义类

1.先在程序中定义类:

 Clothes{
String color;
Char size;
}//定义color和size两个对象数据成员

2.新建一个对象,并且将c1名称参考至新建对象

CLothes c1 = new Clothes();

类分为公开类和非公开类,一个原始码中可以有多个类定义,但只能有一个公开类,但,且文档中的主文档名必须与公开类名称相同。(只要有一个类定义,就会编译产生一个.class文件)

标准类

  1. java.util.Scanner:Scanner

    nextInt()方法会看标准输入中,有没有输入下一个字符串(以空格或换行分隔),将其剖析为int或其他nextByte()型等等 ,直接取得上一个字符串使用next(),取得整行文字nextLine()(以换行分隔)

import java.util.Scanner;

    public class Guess {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int number = (int)(Math.random() * 10);
int guess; do{
System.out.print("猜数(0 ~ 9):");
guess = scanner.nextInt();
}while(guess != number); System.out.println("猜中了!");
}
}
  1. java.math.BigDecimal

    以默认精度,提供plus()、subtract()、multiply()、divide()可以进行加减乘除运算,都会返回运算结果

import java.math.BigDecimal;

    public class DecimalDemo {
public static void main(String[] args){
BigDecimal operand1 = new BigDecimal("1.0");
BigDecimal operand2 = new BigDecimal("0.8");
BigDecimal result = operand1.subtract(operand2);
System.out.println(result);
}
}

对象制定与相等性

用于基本类型时:=将值复制给变量;==比较两个变量储存的值是否相同;

用于操作对象时:=指定参考名称参考某个对象用在操作对象;==比较两个参考名称是否参考同一对象

equals():用于操作对象,比较两对象的值是否相同

4.2 基本类型包装

Java中分为两个类型系统为基本类型与类类型。将基本类型打包在对象之中,将基本类型当作对象来操作,可以使用(Wrapper):Long、Integer、Double、Float、Boolean、Byte来打包基本类型。

package cc.openhome;
public class IntegerDemo {
public static void main(String[] args){
int data1 = 10;
int data2 = 20;
Integer wrapper1 = new Integer(data1);
Integer wrapper2 = new Integer(data2);
System.out.println(data1 / 3);
System.out.println(wrapper1.doubleValue() / 3);
System.out.println(wrapper2.compareTo(wrapper2));
}
}

自动装箱、拆箱

Integer wrapper =10;//自动装箱
int foo = wrapper;//自动拆箱

自动拆装箱是编译程序蜜糖,不能让变量参考至空对象又对之进行操作,也不能超过打包器的值域范围

无论两个变量打包的值位于哪个范围,只要变量打包的值相同,equals()比较的结果就会是true

4.3 数组对象

Java中,数组就是对象,而不是单纯的数据结合。

依次取出数组中每个值的方法,一种是for循环:

public class Score {
public static void main(String[] args){
int[] scores = {88,81,74,68,78,76,77,85,95,93};
for(int i = 0; i < scores.length; i++){
System.out.printf("学生分数:%d %n",scores[i]);
}
}
}

增强式for循环:

public class EnhanceScore {
public static void main(String[] args){
int[] scores = {88,81,74,68,78,76,77,85,95,93};
for(int score : scores){
System.out.printf("学生分数:%d %n",score);
}
}
}

声明二维数组,要使用两个索引来存取数组元素:

public class XY {
public static void main(String[] args) {
int[][] cords = {
{1, 2, 3},
{4, 5, 6}
};
for (int x = 0; x < cords.length; x++) {
for (int y = 0; y < cords[x].length; y++) {
System.out.printf("%2d", cords[x][y]);
}
}
}
}

增强for循环:

public class EnhanceXY {
public static void main(String[] args) {
int[][] cords = {
{1, 2, 3},
{4, 5, 6}
};
for (int [] row : cords){
for(int value : row){
System.out.printf("%d",value);
}
System.out.println();
} }
}

利用java.util.Arrays的fill()方法来设定新建数组的元素值:

import java.util.Arrays;

public class ArrayScore {
public static void main(String[] args){
int[] scores = new int[10];
for(int score : scores){
System.out.printf("%2d",score);
}
System.out.println();
Arrays.fill(scores,60);
for(int score : scores){
System.out.printf("%3d",score);
}
}
}

数组复制

  1. 基本方法是另行建立新数组,使用System.arraycopy(),五个参数:来源数组、来源起始索引、目的数组、目的起始索引、复制长度。

  2. Array.copyof()方法不用另行建立新数组,浅层复制

浅层复制:c1每个索引处所参考的对象,也给c2每个索引来参考,用在类类型声明的数组时,都是执行浅层复制,比如:System.arraycopy(),Array.copyof()

深层复制:实际上c1每个索引参考的对象会被复制,分别指定给c2每个牵引。

4.4 字符串对象

  • 字符串是打包字符数组的对象

  • 是以“”包括的字符串,只要内容完全相同,则只会建立一个String实例,并在字符串池中维护。

  • 字符串对象一旦建立,就无法更改对象中的任何内容。使用“+”连接字符串可以产生新的String实例

第五章 对象封装

5.1 何谓封装

  • 封装实际上使用方法将类的数据隐藏起来,隐藏对象细节,将对象当作黑箱操作,用户不用再需要重复撰写对象初始化流程
  • 在类中定义方法,如果不用返回值,方法名称前可声明void,方法若会返回值,必须在方法前声明返回值的类型

    -不想让用户直接自由存取类私有数据,使用private定义;private可以用在方法或构造函数声明。声明为private的成员表现为类私有,用户无法在其他类的程序代码中直接存取。

5.2 类语法细节

  • 三个权限修饰:public、private、 protected

  • 定义方法时也可以重载,类似功能的方法名称虽然一致,但是根据传递的自变量类型不同,会调用相应的方法。

  • 除被声明static的地方外,this关键字可以出现在类中的任何地方。

  • this()代表调用另一个构造函数,根据调用时给的自变量类型与个数定调用哪个函数,只能出现在构造函数的第一行。

  • 被声明为static的成员,不用每个对象各自拥有,表示它属于类,通过类名称.static成员取得static成员;static方法或区块中,不能调用非static方法或区块。

  • 要使用不定长度自变量,声明参数列时要在类型关键字后加...,且方法上声明的不定长度参数必须是参数列最后一个,使用两个不定长度参数列是不合法的。

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

  • 问题一

    在增强for循环时的语法,为什么要换成 for(int score : scores)的形式,有什么具体的意义吗?

解答:通过百度,查阅资料知道原来是这样的形式:

增强for(part1:part2){part3};

part2中是一个数组对象,或者是带有泛性的集合.

part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的.

part3当然还是循环。

  • 问题二:在书中我们看到:对于基本类类型而言,“”用来是比较两个变量存储的值是否相同,,在类类型中,比较参考名是否参考同一对象。在自动拆箱和装箱中,为什么可以直接用“”来比较i1,i2,而且还可以用equals()?

    解答:没有解答

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

  • 问题1

    在敲书上代码的时候,出现了下图这样的问题。后来发现是自己同时点开两个程序,把public的类名写错了,与文件名不符合。

代码托管

  • 代码提交过程截图:

    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图

  • 代码量截图:

    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

上周考试错题总结

  • 填空:Linux Bash中,查找当前目录中前天创建的Java文件的命令是(find . –name *.java -ctime 2)
  • 填空:~0b1011的十进制值是(-12)
  • Java中, 数字235.00的类型是float. (X) 也可能是double型。 float x = 4.0则会报错,需要如下写法:

    float x = 4.0f或者float x = (float)4.0

    其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义
  • 填空 :0x10%9 的结果是( 7 )
  • 填空 :0x10&9 的结果是(0)

    先把十六进制的数字写成二进制,再进行运算,在转化为十六进制。

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

考试前一晚把书好好又看了一遍,但是做题还是不行。感觉自己看书学习很难抓到那些小细节,对考点不敏感。很久没有这样自己去学一本书了,能力有点欠缺,但我相信长久下来,一定会有所进步的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/2 15/15 完成JDK、IDEA下载,并且可以简单操作
第二周 150/200 1/2 18/20 开始可以撰写简单的代码,了解了一些常用的语法
第三周 327 /400 1/2 26/25 更深入认识类与对象,以及对象的封装,时间紧,任务重,需敲大量代码来熟练

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155306 2006-2007-2 《Java程序设计》第3周学习总结的更多相关文章

  1. 20155306 2016-2017-2 《Java程序设计》第九周学习总结

    20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...

  2. 20155236 2016-2017-2 《Java程序设计》第九周学习总结

    20155236 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标 ...

  3. 20155313 2016-2017-2 《Java程序设计》第一周学习总结

    20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...

  4. 20155331 2016-2017-2 《Java程序设计》第九周学习总结

    20155331 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是什么? JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立 ...

  5. 20145231 《Java程序设计》第一周学习总结

    20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...

  6. 20145238-荆玉茗 《Java程序设计》第一周学习总结

    20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java ...

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

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

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

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

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

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

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

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

随机推荐

  1. 使用promise方式写settimeout

    //使用promise方式写settimeout, //好处就是用于写动画的时候只需知道后一个的动画在前一个动画结束后多久执行 console.time('settimeout:');//开始计算这段 ...

  2. freemarker声明变量(十)

    freemarker声明变量 1.使用assign创建和替换变量 (1)新建声明变量的ftl variable.ftl: <html> <head> <meta http ...

  3. 【转】Swagger2 添加HTTP head参数

    大家使用swagger往往会和JWT一起使用,而一般使用jwt会将token放在head里,这样我们在使用swagger测试的时候并不方便,因为跨域问题它默认不能自定义head参数.然后自己去网上找, ...

  4. Java多线程之Callable接口的实现

    Callable 和 Future接口  Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务. Callable和Runn ...

  5. jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法

    一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...

  6. 【BZOJ4869】相逢是问候(线段树,欧拉定理)

    [BZOJ4869]相逢是问候(线段树,欧拉定理) 题面 BZOJ 题解 根据欧拉定理递归计算(类似上帝与集合的正确用法) 所以我们可以用线段树维护区间最少的被更新的多少次 如果超过了\(\varph ...

  7. 2014NOIP普及组 子矩阵

    觉得题目水的离开 觉得普及组垃圾的请离开 不知道 DFS 和 DP 的请离开 不屑的大佬请离开 ……. 感谢您贡献的访问量 ————————————————华丽的分割线 ——————————————— ...

  8. 29.Django session

    session 1.概述 cookie和session的区别 Cookie是保存在用户浏览器端的键值对,Session是保存在服务器端的键值对:Cookie做用户验证的时,敏感信息不适合放在Cooki ...

  9. Spring @AfterReturning 总是返回null

    在学习Spring Aop时,遇到一个问题,当 @Around(环绕通知)与 @AfterReturning(后置通知)共存 时,@AfterReturning 通过属性 returning = &q ...

  10. html学习第二弹の表格的使用方法

    >创建表格的四个元素: table.tbody.tr.th.td 1.<table>-</table>:整个表格以<table>标记开始.</table ...