20145213《Java程序设计》第三周学习总结
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程序设计》第三周学习总结的更多相关文章
- Java程序设计第三周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
随机推荐
- VTK初学一,Pro文件的配置
1. pro文件的配置 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG += qt QT += core gui greate ...
- firefox浏览器不能使用window.close的解决方案
javascript中window.close()函数用来关闭窗体,而且IE.google.firefox浏览均支持,但由于firefox浏览器dom.allow_scripts_to_close_w ...
- PHP基础Mysql扩展库
mysql扩展库操作步骤如下: 1.连接数据库 2.选择数据库 3.设置操作编码 4.发送指令sql,并返回结果集 ddl:数据定义语句 dml:数据操作语句 dql:数据查询 ...
- hibernate中get,load,list,iterate的用法及比较
首先,get和load都是查询单个对象,而list和iterate为批量查询 注意以下写法仅针对hibernate3的语法. 使用案例如下: // 1. get和load 的用法 Person p = ...
- jquery mobile cannot be created in a document with origin 'null' and URL
jquery mobile cannot be created in a document with origin 'null' and URL http://zhidao.baidu.com/lin ...
- 9.4用WebApi去连接外部认证服务
原文链接:http://www.asp.net/web-api/overview/security/external-authentication-services VS2013和Asp.Net4.5 ...
- java历史
1.产生: 1990年初sun公司James Gosling等员工开发java语言的雏形,最初被命名为Oak,定位于家用电器的控制和通讯,随后因为市场的需求,公司放弃计划,后面由于Internet的发 ...
- iOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
触摸事件 在用户使用app过程中,会产生各种各样的事件 一.iOS中的事件可以分为3大类型 触摸事件加速计事件远程控制事件 响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponde ...
- [转载]Linux下tomcat的catalina.out文件过大,以及目录更改解决办法
原文链接:http://liyan0524.iteye.com/blog/1285644 方法1—分割流 使用cronolog工具切分Tomcat的catalina.out日志文件 cronolog一 ...
- hiho #1284 机会渺茫
#1284 : 机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要 ...