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


教材学习内容总结

正所谓距离产生美,上周我还倾心于Java表面的基础语法。其简单的流程结构,屈指可数的基本类型分类,早已烂熟于心的运算符等,让我萌生出Java不过尔尔的幻觉。然而,快乐的时间总是短暂的。随着本周学习程度的不断深入,之前一直小觑为加菲猫的Java竟也露出了它的獠牙。本周的学习任务,无论从学习难度还是学习量,与之前都不可同日而语。犹记得周三的时候,我就开始自习教材的第四章了,红红火火恍恍惚惚,看一遍下来后,脑中梳理一遍,竟无所得。于是我想绕路,跳过第四章,学习第五章,可第五章动不动就出现的类,实例,对象,封装bulabula让我瞬间懵逼。上次让我有这样感同身受的文章是小学时期鲁迅先生的朝花夕拾,亦或是百草园。对于鲁迅老先生的文章,我的小学老师教课方式是让我一直读一直读。待到读出味道了,就是学有所得之际。我把这个方式运用到学习Java。第一次阅读让我有竹篮打水一场空的挫败感,关上课本,什么都记不住了。第二次阅读也算是行至水穷处,山重水复疑无路的味道更浓墨了一些。在不熟悉类,实例,参考对象这些概念前提下,还是不算认识对象这个词。第三遍第四遍。。。说多了,其实至今我才看了四遍,虽说没有柳暗花明又一村的醍醐灌顶,但依稀摸到一条道了。在没有完全掌握第四章第五章知识的前提下要我写博客,其实我是拒绝的,但眼看娄老师的DEADLINE越来越近,愁死我了。算了,箭在弦上,不得不发!

  • 我个人理解就是设计图就是类,既然是设计图,那一定规定了设计的衣服的一些基本信息,这些基本信息就是数据成员,根据设计图设计出衣服,就像根据类,设计出一个对象一样。至于Java构建函数,是在类中进行的。

  • 标准类就像C语言中的模块函数一样,C语言中使用要声明,Java里面可以用IMPORT偷懒一下。

  • 至于=与,在Java里,在基本类型里使用与在C语言中使用并无二异,在C语言中能正确区分=与,在Java基本类型中也可以正确区分。区别在于Java中类类型中的使用,操作对象,=用在指定参考名词参考某个对象,而==是用在比较两个参考名词是否参考同一个对象。

  • 基本类型的打包是为了像操作对象一样操作基本类型。有很多类,是可以服务于对象的。对象往往可以携带更多的信息。随着版本升级,蜜糖越来越多,也就出现了自动装箱和拆箱了。

  • Java里的数组要区分C语言中的数组,因为数组在Java中是对象,而在C语言中只是一些数的集合。

    以上是我个人在第四章的部分总结。由于第五章看过后并没有多大收获,还是没有形成一个系统的概念,在这里就不误人子弟了。

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

首先,先分享一下我发现教材中的错误。P92输出结果应该是20与11,而不是20与10.其次,谈谈一下学习中的问题吧。感觉教材对于知识的梳理衔接并不紧凑,举例代码中很多书外的知识默认我作为一个新手是懂的,这或许就是第一章中提到的对新人并不友好吧。本周学习过程中,问题很多,但具体是什么都不懂,也就很难提问并具体阐述自己的困惑了,这或许是自学的弊端了。我认为自习过程中,重要的是能培养成一个大局观。有一个整体框架和整体概念意识。其次,就是要多读多想。其实第一次阅读很多模糊不清的知识点也反复阅读后往往能逐渐明亮清晰起来。这过程需要大量学习时间,虽然我早有准备,然而事实证明准备并不充分。解决办法就是自己再挤时间出来自习。然而学习上的空缺,我只好用实践来尽可能弥补了。下面是我的实践部分;


class Clothes{
String color;
char size;
}
public class Field{
public static void main(String[] args){
Clothes sun = new Clothes();
Clothes spring = new Clothes();
sun.color = "red";
sun.size = 'S';
spring.color = "green";
spring.size = 'L';
System.out.printf("sun (%s,%c)%n",sun.color,sun.size);
System.out.printf("spring (%s,%c)%n",spring.color,spring.size);
}
}

执行结果如下


class Clothes2{
String color;
char size;
Clothes2(String color,char size){
this.color = color;
this.size = size;
}
}
public class Field2{
public static void main (String[] args){
Clothes2 sun = new Clothes2("red",'S');
Clothes2 spring = new Clothes2("green",'M');
System.out.printf("sun (%s,%c)%n",sun.color,sun.size);
System.out.printf("sun (%s,%c)%n",spring.color,spring.size);
}
}

执行结果如下


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("猜中了。。。");
}
}

执行结果如下


import java.math.BigDecimal;
public class DecimalDemo{
public static void main(String[] args){
BigDecimal m1 = new BigDecimal ("1.0");
BigDecimal m2 = new BigDecimal ("0.8");
BigDecimal m3 = m1.subtract(m2);
System.out.println(m3);
}
}

执行结果如下


import java.math.BigDecimal;
public class DecimalDemo2{
public static void main(String[] args){
BigDecimal m1 = new BigDecimal("0.1");
BigDecimal m2 = new BigDecimal("0.1");
BigDecimal m3 = new BigDecimal("0.1");
BigDecimal m4 = new BigDecimal("0.3");
if(m1.add(m2).add(m3).equals(m4)){
System.out.println("等于 0.3");
}
else{
System.out.println("不等于0.3");
}
}
}

执行结果如下


public class IntegerDemo{
public static void main(String[] args){
int m1 = 10;
int m2 = 20;
Integer w1 = new Integer(m1);
Integer w2 = new Integer(m2);
System.out.println(m1/3);
System.out.println(w1.doubleValue()/3);
System.out.println(w1.compareTo(w2));
} }
执行结果如下


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]);
}
}
}

执行结果如下


import java.util.Arrays;
public class Score2{
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);
}
}
}

执行结果如下


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

执行结果如下


public class IntegerArray{
public static void main(String[] args){
Integer[] scores = new Integer[3];
for(Integer score :scores){
System.out.println(score);
}
scores[0] = new Integer(99);
scores[1] = new Integer(87);
scores[2] = new Integer(66);
for(Integer score : scores){
System.out.println(score);
}
}
}

执行结果如下


import java.util.Arrays;
public class CopyArray{
public static void main(String[] args){
int[] scores1 = {88,81,74,68,78,76,77,85,95,93};
int[] scores2 = Arrays.copyOf(scores1,scores1.length);
for(int score : scores2){
System.out.printf("%3d",score);
}
System.out.println();
scores2[0] = 99;
for(int score : scores1){
System.out.printf("%3d",score);
}
}
}

执行结果如下


class Clothes {
String color;
char size;
Clothes(String color,char size){
this.color = color;
this.size = size;
}
}
public class ShallowCopy{
public static void main(String[] args){
Clothes[] c1 = {new Clothes("red",'L'),new Clothes("blue",'M')};
Clothes[] c2 = new Clothes[c1.length];
for(int i=0;i<c1.length;i++){
c2[i]=c1[i];
}
c1[0].color = "yellow";
System.out.println(c2[0].color);
}
}

执行结果如下



class Clothes2{
String color;
char size;
Clothes2(String color,char size){
this.color = color;
this.size = size;
}
}
public class DeepCopy{
public static void main(String[] args){
Clothes2[] c1 = {new Clothes2("red",'L'),new Clothes2("green",'M')};
Clothes2[] c2 = new Clothes2[c1.length];
for(int i=0;i<c1.length;i++){
Clothes2 c = new Clothes2(c1[i].color,c1[i].size);
c2[i] = c;
}
c1[0].color = "yellow";
System.out.println(c2[0].color);
} }

执行结果如下


import java.util.Scanner;
public class Sum {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
long sum = 0;
long number = 0;
do{
System.out.printf(" 输入数字:");
number = Long.parseLong(scanner.nextLine());
sum += number;
}while(number != 0);
System.out.println("总和:" + sum);
}
}

执行结果如下


class CashCard{
String number;
int balance;
int bonus;
CashCard(String number,int balance,int bonus){
this.number = number;
this.balance = balance;
this.bonus = bonus;
}
}
public class CardApp{
public static void main(String[] args){
CashCard[] cards = {
new CashCard("A001",500,0),
new CashCard("A002",300,0),
new CashCard("A003",1000,1),
new CashCard("A004",2000,2),
new CashCard("A005",3000,3), };
for(CashCard card : cards){
System.out.printf("(%s,%d,%d)%n",card.number,card.balance,card.bonus);
}
}
}

执行结果如下

import java.util.Scanner;
public class CardApp1{
public static void main (String[] args){
CashCard[] cards = {
new CashCard("A001",500,0),
new CashCard("A002",300,0),
new CashCard("A003",1000,1)
};
Scanner scanner = new Scanner(System.in);
for(CashCard card : cards){
System.out.printf("为(%s,%d,%d)储值:",card.number,card.balance,card.bonus);
card.store(scanner.nextInt());
System.out.printf("明细(%s,%d,%d)%n",card.number,card.balance,card.bonus);
}
}
}

执行结果如下


class Some{
void someMethod(int i){
System.out.println("int 版本被调用");
}
void someMethod(Integer integer){
System.out.println("Integer版本被调用");
}
}
public class OverloadBoxing{
public static void main (String[] args){
Some s = new Some();
s.someMethod(1);
}
}

执行结果如下


import java.util.Scanner;
import static java.lang.System.in;
import static java.lang.System.out;
public class ImportStatic{
public static void main(String[] args){
Scanner scanner = new Scanner(in);
out.print("请输入姓名");
out.printf("%s 你好!%n",scanner.nextLine());
}
}

执行结果如下


public class CallByValue{
public static void main(String[] args){
Customer c1 = new Customer("Justin");
some(c1);
System.out.println(c1.name);
Customer c2 = new Customer("Justin");
other(c2);
System.out.println(c2.name);
}
static void some(Customer c){
c.name = "John";
}
static void other(Customer c){
c = new Customer("Bill"); }
}
class Customer {
String name;
Customer(String name){
this.name = name;
}
}

执行结果如下

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

这个代码我照抄教材,然而却执行失败,很费解。我也想知道为什么这个代码没有公开类


class CashCard{
String number;
int balance;
int bonus;
CashCard(String number,int balance,int bonus){
this.number = number;
this.balance = balance;
this.bonus = bonus;
}
void store(int money){
if(money >= 0){
this.balance += money;
if(money >= 1000){
this.bonus++;
}
}
else{
System.out.println("储值是负的?");
}
}
void charge(int money){
if(money >= 0){
if(money <= this.balance){
this.balance -=money;
}
else{
System.out.println("钱不够啦");
}
}
else{
System.out.println("扣负数?这不是叫我储值吗?");
}
}
int exchange(int bonus){
if(bonus >= 0){
this.bonus -= bonus; }
return this.bonus;
}
}

其他

本周的学习任务有点失败,因为截至写博客止,我并没有很好掌握第四章和第五章的知识。总结一下原因就是自学真的要花很多时间才琢磨教材,要一个人摄取消化,这不是偶然一次心血来潮的晚自习或者懒散地拖到周末才可以解决的。这个观念一定要纠正,我就是失败在自习时间不够上。出于弥补,我只好做一些操作题来练练手。还有一点想和老师说的就是,这周学习任务真的比上周学习任务重很多,我都没来得及过渡,希望老师能把每周任务学习量均摊一下。

另附上开源中国代码托管截图如下:






学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/1 10/10
第二周 200/220 1/2 15/25
第三周 200/42 1/3 15/40

参考资料

*Java学习笔记(第8版)

*《Java学习笔记(第8版)》学习指导

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. netstat命令的常见用法(转)

    netstat 的10个基本用法 Netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监 ...

  2. Sublim text2 的注册码

    1. Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E9 ...

  3. setValuesForKeysWithDictionary forUndefinedKey

    http://my.oschina.net/u/2407613/blog/524879 -(void)setValue:(id)value forUndefinedKey:(NSString *)ke ...

  4. Inno Step 安装包程序 写INI配置文件脚本

    [INI]Filename: "{app}\Config\config.ini"; Section: "config";Key: "name" ...

  5. redis--key1

    package com.ztest.redis; import java.util.Set; import com.sun.istack.internal.logging.Logger; import ...

  6. PYTHON 自动化学习之路

    一.用户交互小程序 username = 'gyc' password = 'gyc' u = input("what is you name?:") p = input(&quo ...

  7. Validform —— 再也不用担心“表单验证”!

    <!doctype html> <html> <head> <meta content="text/html" charset=" ...

  8. Java读写文件通用格式

    String path = "I:\\"; File file = new File(path + "user_id_pair.txt"); FileReade ...

  9. python操作memcached以及分布式

    memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件.现在已成为 mixi.Facebook.Live ...

  10. linux中用shell获取昨天、明天或多天前的日期

    linux中用shell获取昨天.明天或多天前的日期 时间 -- :: BlogJava-专家区 原文 http://www.blogjava.net/xzclog/archive/2015/12/0 ...