教材学习内容总结

  • java并非完整的面向对象程序语言

  • 定义

1:class:定义类

2.char:类型声明变量

3.new:新建对象

4.名称 X:参考

5.=:可用于指定参考至新建变量

6.构造函数:与类名称同名,无须声明返回类型的方法

  • 两个基本标准类

1.java.util.Scanner

+scanner扫描标准输入,看看用户有无输入字符

+scanner对每个基本类型都有个对应的next ...()方法

2.java.math.BigDecimal

+使用ava.math.BigDecimal得到更好的精确度

+java使用分数与指数来表示浮点数,不可以用==直接比较浮点数运算的结果

+创建Decimal的方法之一是使用字符串,可进行加、减、乘、除运算

+ 加法代码形式:BigDecimal result=XXX1.subtract(XXX2); System.out.println(result);

  • 对象指定

    1.操作对象是,=用于指定参考名称参考某个对象,而==用于比较两个参考名称是否参考同一对象,!=用于比较两个名称是否没参考同一对象

  • 打包

    +打包基本类型:让基本类型像对象一样操作

    +打包器:Long、Integer、Double、Float、Boolean、Byte等类

  • 编译程序蜜糖

    +编译蜜糖程序:参考实例4进行操作(自动装箱),运作时自行取出打包器中的基本形态信息(自动拆箱)

    +增强式for:for(int[] row:cords)

  • 数组对象

    +数组:用int[]声明,具有索引的数据结构

    +fill()可新建元素值

    +对象是根据类而建立的实例,代表建立数组对象的类定义由JVM动态产生

    +基本类型数组复制:Array.copyOf()

    +类类型申明的数组,在使用for循环进行复制时并没有实际复制出cloehes对象,称为复制参考或浅层复制

  • 比较对象实质内容是否相同用equals(),不要用==

  • 字符串对象

    +字符串用来打包字符数组,可以用“”包括一串字符来建立字符串

    +字符串池:JVM创建String实例用于对象参考,并在字符串池中维护

    +字符串常量:用“”写下的字符串称为字符串常量

    +用+连接字符串会产生新字符串

    +javac -encoding 指定字符编码

  • 封装

    +封装 = 类 + 访问控制(public,protected,private...)

    +Java可以使用private关键字定义类私有的数据,声明为private的成员表示为类私有

    +封装的主要目的:隐藏对象细节,将对象当作黑箱进行操作。用户要操作对象,要使用你定义的函数,通过你的方法调用,但是不知道构造函数的细节,也不知道私有数据

  • 类语法细节

    +public声明:表示它是个公开类,可以在其他包的类中使用,用在成员变量前

    +重载构造函数:定义多个只要参数类型火哦个数不同的构造函数

    public class Some{ ... public Some(inta){ ... } public Some(int a,String text){ ... } }

    方法重载可用一致的名称调用类似功能的方法

    +this:构造函数参数与对象数据成员同名时,用this加以区别

    +static:所有对象公有的 ,用在类前,用在方法前,用在成员变量前

    +访问惯例:类名.static成员

    +内部类:类中可在定义类

    +传值:Java中方法都是传值(Pass By Value)的 ,传值(Pass By Value,Call by Value),传引用(Pass By Reference,Call by Reference)

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

问题一:构造函数的具体用法?

解决:查阅得知,构造函数是与类名称同名,无须声明返回类型的方法

public class Some{
...
public Some(int a,String text)
...
}

问题二:打包基本类型是怎么实现的?

解决:例如:用Integer打包in类t型数据,可以用new创建Integer实例时传入int数据

问题三:什么事浅层拷贝,什么是深层拷贝?

解决:`

  浅层复制:参考对象可以通用,没有实际复制出cloehes对象
for(int i=0;i<c1.length;i++){
c2 [i]=c1[i];
} 深层复制:c1每个索引参考的对象都会被复制 for(int i=0;i<c1.length;i++){
Clothes2 c=new Clothes2(c1[i].color,c1[i].size);
c2 [i]=c;
}`

问题四:

`package cc.openhome;
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);
}
}`

代码是如何运行出总和的(System.out.println("总和:"+sum);)?

解决:显示每一个输入的数是 Scanner scanner=new Scanner(System.in)扫描显示;问百度,sum+=a 就是sum=sum+a;的意思,得最终和

问题五:op1.add(op2).add(op3).equals(result)是什么用法?

解决:调用add()方法得到它们的和,再调用equals()进行判等

问题六:

package cc.openhome;

public class Average {
public static void main(String[] args) {
long sum=0;
for(String arg:args){
sum+=Long.parseLong(arg);
}
System.out.println("平均:"+(float)sum/args.length);
}
}

为什么返回值为:平均:NaN

解决:没有提供整数

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

问题1

  package cc.openhome;

  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="M"; System.out.printf("sun(%s, %c)%n",sun.color,sun.size);
System.out.printf("spring(%s, %c)%n",spring.color,spring.size);
}
}

错误:java:不兼容的类型:java.lang.String无法转移为char

解决:java.lang.String与char,仔细检查代码发现着急把字符S用“”括住,而不是‘’。

问题2

package cc.openhome;
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("green",'M')};
Clothes[] c2=new Clothes[c1.length];
for(int i=0;i<c1.length;i++){
c1[i]=c1[i];
}
c1[0].color="yellow";
System.out.println(c2[0].color);
}
}

错误:Exception in thread "main" java.lang.NullPointerException

at cc.openhome.Shallowcopy.main

解决:百度解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象。检查发现 c1[i]=c1[i];书写错误,改为 c2[i]=c1[i];后运行正确

问题3

 package cc.openhome;
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);
} }
}错误: java: 类CardApp是公共的, 应在名为 CardApp.java 的文件中声明

解决:书本上有错误,应把CardApp改为与类名称完全吻合的名,改为CashApp

问题4:

`package cc.openhome;
import java.util.Scanner;
public class CashApp {
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);
} }
}`

错误:java: 找不到符号

符号: 方法 store(int),

位置: 类型为cc.openhome.CashCard的

变量 card

解决:请教大神,得知这个程序代码调用了CashCard2,所以写的时候和书上的不能一样,组要根据自己的来调用,然后再把package cc.openhome;去掉,让两个函数在同一个工程文件下

import java.util.Scanner; public class CashApp { public static void main(String[] args) { CashCard2[] cards={ new CashCard2("A001",500,0), new CashCard2("A002",300,0), new CashCard2("A003",1000,1) }; Scanner scanner=new Scanner(System.in); for(CashCard2 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); } }}

再次编写运行正确

学习感悟思考

学习java应该是循环渐进,有始有终,按部就班,脚踏实地.java是一门有着阶梯性的一们语言,如果要学习它.感觉最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦,编了两周的代码,感觉代码多数还是可以看懂,但是没有具体代码示例的知识点的内容解释真的是好伤脑啊,敲了很多代码,但是感觉自己编起来可能还是有问题。

代码托管



学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/50 2/2 20/20 实现“HelloWorld”
第二周 100/150 2/4 20/40 学会用用IDEA编写代码
第三周 100/250 2/6 20/60 掌握了更多的语法知识

参考资料

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. LAMP集群项目二 初始化系统

    1.关闭防火墙 /etc/init.d/iptables stop chkconfig iptables off 2.关闭selinux cat /etc/selinux/config #查看状态 s ...

  2. C# DataTable和DataRelation

    form2.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  3. node jar sh

    https://nodejs.org/api/child_process.html Node.js v11.1.0 Documentation Index View on single page Vi ...

  4. Spark源码分析 -- PairRDD

    和一般RDD最大的不同就是有两个泛型参数, [K, V]表示pair的概念 关键的function是, combineByKey, 所有pair相关操作的抽象 combine是这样的操作, Turns ...

  5. c 整数运算

    一.无符号加法(形式的模运算,无符号加法等价于计算模2w 的和) 示例:非负数 x 和 y 位数: w(8位机) 范围: 0 <= x,y <= 2w -1 结果:0 <= x+y ...

  6. PHP 支持8种基本的数据类型。

    四种标量类型:boolean (布尔型):这是最简单的类型,只有两种取值,可以为 TRUE/true 或 FALSE/false ,不区分大小写.详细请查看:PHP布尔类型(boolean)integ ...

  7. post 传递参数中包含 html 代码解决办法,js加密,.net解密

    今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式 ...

  8. linux下的KSM内存共享机制分析

    2017-04-26 KSM是内核中的一种内存共享机制,在2.6.36版本的内核中开始引入,简单来说就是其会 合并某些相同的页面以减少页面冗余.在内核中有一个KSM守护进程 ksmd,它定期扫描用户向 ...

  9. LInux进程虚拟地址空间的管理

    2017-04-07 脱离物理内存的管理,今天咱们来聊聊进程虚拟内存的管理.因为进程直接分配和使用的都是虚拟内存,而物理内存则是有系统“按需”分配给进程,在进程看来,只知道虚拟内存的存在! 前言: 关 ...

  10. 机房断电导致MySQL同步1594错误

    1.错误信息 Last_IO_Error: Got fatal error from master when reading data from binary log: ' at 208645951. ...