20155306 2006-2007-2 《Java程序设计》第3周学习总结
20155306 2006-2007-2 《Java程序设计》第3周学习总结
教材学习内容总结
第四章 认识对象
4.1 类与对象
定义类
1.先在程序中定义类:
Clothes{
String color;
Char size;
}//定义color和size两个对象数据成员
2.新建一个对象,并且将c1名称参考至新建对象
CLothes c1 = new Clothes();
类分为公开类和非公开类,一个原始码中可以有多个类定义,但只能有一个公开类,但,且文档中的主文档名必须与公开类名称相同。(只要有一个类定义,就会编译产生一个.class文件)
标准类
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("猜中了!");
}
}
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);
}
}
}
数组复制
基本方法是另行建立新数组,使用System.arraycopy(),五个参数:来源数组、来源起始索引、目的数组、目的起始索引、复制长度。
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" 并截图

- 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
代码量截图:
- 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

- 运行 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就接近了。
计划学习时间:20小时
实际学习时间:26小时
改进情况:这周任务重,需要自己更钻研,更细致地去研究课本。
参考资料
20155306 2006-2007-2 《Java程序设计》第3周学习总结的更多相关文章
- 20155306 2016-2017-2 《Java程序设计》第九周学习总结
20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...
- 20155236 2016-2017-2 《Java程序设计》第九周学习总结
20155236 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标 ...
- 20155313 2016-2017-2 《Java程序设计》第一周学习总结
20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...
- 20155331 2016-2017-2 《Java程序设计》第九周学习总结
20155331 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是什么? JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立 ...
- 20145231 《Java程序设计》第一周学习总结
20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...
- 20145238-荆玉茗 《Java程序设计》第一周学习总结
20145238 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台:由于java领域的应用越来越广,根据不同级别的应用开发区分了不同的应用版本,后正式更名为Java ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
随机推荐
- WPF基础篇之静态资源和动态资源
静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了. 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源. 一.定义 ...
- [SDOI2008]沙拉公主的困惑
题面 传送门 Sol 题目要求\(\sum_{i=1}^{n!}[gcd(i, m!)==1]\) 设\(N=n!,M=m!\),莫比乌斯反演一波 就变成了\(\sum_{d|M}\mu(d)\fra ...
- [APIO2015]巴邻旁之桥
Bzoj权限题 luogu题面 先去掉同边的 首先k==1,即求一个点j 使\(\sum_{i\in A} |D_i - D_j| + \sum_{i\in B} |D_i - D_j|\)最小 因为 ...
- [BZOJ1588] [HNOI2002] 营业额统计 (treap)
Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额. ...
- 大三小学期 Android开发的一些经验
1.同一个TextView几种颜色的设置: build=(TextView)findViewById(R.id.building); SpannableStringBuilder style = ne ...
- 解决PhpMyadmin1440秒未活动自动退出
解决方法如下:#vim phpMyAdmin/libraries/config.default.php找到如下位置$cfg['LoginCookieValidity'] = ; 将1440修改成 ...
- JS中的闭包问题
一.闭包:在函数外也可使用局部变量的特殊语法现象 全局变量 VS 局部变量: 全局变量:优点:可共享,可重用; 缺点:在任意位置都可随意修改——全局污染 局部变量:优点:安全 缺点:不可共享,不可重用 ...
- css学习の第五弹—单位和值
一. >>1.颜色表示方法总结: 1.英文命令颜色 前面几个小节中经常用到的就是这种设置方法: p{color:red;} 2.RGB颜色 这个与 photoshop 中的 RGB 颜色是 ...
- 精解Mat类(一):基本数据类型-固定大小的 矩阵类(Matx) 向量类(Vector)
一.基础数据类型 1.(基础)固定大小矩阵类 matx 说明: ① 基础矩阵是我个人增加的描述,相对于Mat矩阵类(存储图像信息的大矩阵)而言. ② 固定大小矩阵类必须在编译期间就知晓其维 ...
- git上传项目到github简易步骤
第一步: 在github创建仓库,创建完成进入该仓库,仓库地址如:https://github.com/winerss/wcMall格式 第二步:使用git,cd到本地项目目录下,执行git明令: g ...