1. 本周学习总结

以几个关键词描述本周的学习内容。并将关键词之间的联系描述或绘制出来。
原则:少而精,自己写。即使不超过5行也可,但请一定不要简单的复制粘贴。

  • java数据类型:java数据类型分为基本数据类型和引用数据类型,其中布尔型为java特有的基本类型
  • 字符串类型String:String类最常用的引用类型之一,是不可变的,对String类的任何改变,都是返回一个新的String类对象
  • 字符串常量与字符串池:JVM为了减少字符串对象的重复创建,它维护了一个特殊的内存,这段内存被称为字符串常量池
  • 装箱与拆箱:装箱就是把值类型转换成引用类型,反之就是拆箱
  • 动态数组:无法存放基本数据类型,只能存放引用类型
  • StringBuilder对字符串进行修改。

书面作业

String-使用Eclipse关联jdk源代码1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?

  • 源代码如下:

  • String实际上是用字符数组来存储字符串。

1.2 分析其构造函数public String(char value[])的作用?

  • 用Char数组来存放String对象。如String str = "12";相当于 char a[] = {'1','2'}; String str = new String(a);

1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)

  • 如果oldChar字符串在String对象中没有出现,就返回在此 String 对象中的引用。否则创建一个新的对象,这个对象只是将所有的oldChar替换成newChar,其他与String对象相同。在这个过程中是创建了一个新的对象,oldChar替换成newChar这一动作并没有指向原来的String对象。

1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?

  • 字符数组是char型的,String中的每一个元素都是char,它是char型数组的封装,有函数可以用,比如substring(),这就为我们节省了不少时间。

StringBuilder
2.1 结合PTA -2(StringBuilder),说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?

  • String是固定不变的,在进行字符串连接的时候要新建一个字符串然后赋值,如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统空间。而StringBuilder是可变的,不用生成中间对象,不浪费空间。

2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?

  • 功能:将char数组参数的字符串表示形式追加到此序列。
  • StringBuilder内部使用字符数组来存放字符。
  • 将数组参数转换成字符串,然后按顺序将其追加到序列中,这个序列的长度增加。
    字符串与字符串池
    3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
    String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

  • 答:输出true。这段代码创建了两个字符串对象。在执行String str1 ="hi";时,在常量池中无法找到,于是创建一个"hi"对象;在执行str2="hi";时,由于执行String str1="hi";语句时已经创建过"hi",所以直接从常量池中引用,不用创建,在执行String str3 = new String(str1); System.out.println(str1==str2);时又新建一个对象,共两个字符串对象。

3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?

  • "=="是用来比较两个字符串的存储地址是否相同的,如果两个相同的字符串放到不同的地址时,使用"=="来比较就有可能出错,所以要用equals来比较。

Wrapper(包装类)
4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?

  • 因为自动装箱可以将值类型转换成引用类型,所以可以将100赋值给i;这串命令包含了自动装箱和自动拆箱。

4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?

  • 因为基本数据类型之间的相互转换不是都可以实现的,包装类可以方便的实现基本数据类型之间的转换。
  • 包装类整合了很多函数,在编写代码过程中我们可以直接调用。

实验总结
5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目。

  • 队友:肖文婷
  • 题目:身份证排序
  • 这是我们第一次结对编程,过程很艰难,也遇到了不少问题。因为两个人思路不一样,但是轮到你的时候你又要把队友的代码看懂,按照她的思路去往下想,可能你好不容易勉强写了一部分,队友又发现她接不下去你的思路……我们就是这样的……然后我们就换了一个方法,先统一一个思路再轮流往下编。时间花得比一个人做要多,目前来说还没有做到1+1>2的效果,但是也不是没有收获,在这个过程中我听到了队友不同的想法,还有我卡住的地方也得到了队友的帮助,还是很不错的。

5.2 PTA-1综合小测验

  • 用switch语句来实现功能的选择,斐波那契数列和排序以及查找都是调用函数实现的依次调用fib(n)convertToIntDigits(strDigits)Arrays.sort(digits)等函数,然后用 System.out.println(ids[i].substring(6, 10)+"-"+ids[i].substring(10, 12)+"-"+ids[i].substring(12, 14));语句来实现身份证中出生年月日的截取和输出。

5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?

  • 出生日期的截取和输出与5.2相同,如果需要降序的话就修改冒泡法中的交换条件;若要按照其中的出生年月排序,就类似PTA第二题,将出生年月截取出来进行排序后输出即可。

5.4 PTA-4动态数组

  • 使用动态二维数组来存放乘法表,用嵌套for循环完成,最后使用Arrays.deepToString输出。

5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?

  • ArrayList可以改变大小,也就可以动态增添或删除数组中的元素,判断数组是否为空等。而且实现这些功能的方法都是可以直接调用的额,比较方便,如:remove (int index)移除指定位置上的元素、isEmpty()如果列表中没有元素,则返回true等。

    选做:公交卡里应该还有多少钱?请分析原因
    1.png

3. 码云及PTA
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

3.2 截图题集“Java基本语法”PTA提交列表

3.3 使用老师发的jar程序统计每周的代码量

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

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

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

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

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Web前端学习笔记之JavaScript、jQuery、AJAX、JSON的区别

    官网的英文解释: javascript和jQuery有点关系,js是一种脚本语言,主要用于客户端,现在主要用于实现一些网页效果. jquery是js的一个库,你可以认为是对js的补充,提供了很多方便易 ...

  2. CF1153E Serval and Snake(交互题)

    题目 CF1153E Serval and Snake 很有意思的一道交互题 做法 我们观察到,每次查询一行,当这一行仅包含一端是返回的答案是奇数 根据这个性质查询每一行每一列,我们大体能知道两端的位 ...

  3. mvn设置

    mvn仓库网址: https://mvnrepository.com 安装好maven后,一定要确认安装路径下的setting.xml与本地仓库中的setting.xml一致. 坐标: 什么是坐标? ...

  4. cmd中如何查看环境变量

    查看所有环境变量 set 查看某一个环境变量 C:\WINDOWS\system32>set no_proxyNO_PROXY=localhost,127.0.0.1,172.31.212.14 ...

  5. 组合数模板 - Lucas

    2017-08-10 19:35:32 整理者:pprp 用于计算C(m,n) % p 代码如下: //lucas #include <iostream> using namespace ...

  6. Docker 学习记录

    docker logs 查看日志 docker logs  容器id docker logs -f 容器id 这次命令后面添加了一个新的标识 -f. 和 tail -f 类似, docker logs ...

  7. 51Nod 1521 一维战舰

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1521 思路:先计算出一开始最多能放多少艘战舰,然后每次输入一个点后,找到 ...

  8. DLL注入之SHELLCODE数据转换

    #include "stdafx.h" #include <stdio.h> #include <string.h> #include <conio. ...

  9. vue的seo方案 prerender-seo-plugin

    利用vue cli 3.0安装脚手架.记住:勾选vue-router. 在vue.config.js里添加配置: 2, var path = require('path') 3, const Prer ...

  10. 用gitolite搭建git server

    在Ubuntu上测试安装一下git server,为后面项目的代码管理做准备.记录流水账如下, 中间关于git 命令的使用说明不做过多解释,需要了解的请google或者直接git help: 我用到了 ...