20145329 《Java程序设计》第三周学习总结
2016-03-20 11:04
405 查看
教材学习内容总结
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
解决:没有提供整数
代码调试中的问题和解决过程
问题1package 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 | 掌握了更多的语法知识 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
...
相关文章推荐
- java Date加一天(往后加一天)
- javaweb数据库操作
- 使用Scala实现Java项目的单词计数:串行及Actor版本
- Java实现文件的读取操作
- Java代码优化(长期更新)
- JDK JRE JVM的区别
- 20145304 Java第三周学习报告
- NetBeans中正则表达式替换实例
- Eclipse设置合适的字体
- eclipse根据.wsdl文件自动生成webservice的调用客户端
- java.io.Serializable的作用
- java项目命名规范
- Java批量处理数据
- JAVA循环遍历Map的几种方法
- 使用Spring-MVC框架生成验证码
- java学习之集合---浅析HashMap
- java 序列化
- Java内存模型 详解
- 20145326 《Java程序设计》第3周学习总结
- Spring整合Hibernate详细步骤