一. 本周学习总结

  • 引用类型变量存放指向对象的引用(类似于地址);
  • ==equals 区别在于:==比较的是引用是否相等, 而equals则比较指向对象的内容是否相等;
  • 因为String的不可变性,在要进行大量修改时用 StringBuilder更为高效;
  • 在要表示空(不是0)时,可使用包装类来实现;
  • 数组一旦确定大小就无法修改,若要实时修改则可用动态数组 ArrayList来实现。

二.书面作业

  1. String-使用Eclipse关联jdk源代码

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

    • 是用private final char value[]来存储字符串的。

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

    • 使用java.utils包中的Arrays类来进行复制

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

    • 不是太能看懂,好像在用新的替换旧的时新建了数组buf,而不是直接在val上改

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

    • String封装了字符数组,并且自带大量的函数去操作字符串,会更加方便快捷。
  2. StringBuilder
    2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?

    • 如果使用String,在进行频繁修改时会在内存中产生大量的对象,耗时且占内存,而使用StringBuilder则只会产生一个对象,能在自身进行修改。就像PTA的第二题,如果用String来实现,就会因为内存超限而报错。

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

    • 将 char 数组参数的字符串表示形式追加到此序列。



      StringBuilder内部使用 char[] value 来存放字符。字符数组参数按顺序依次追加该序列的内容,序列的长度增加该参数的长度。

  3. 字符串与字符串池
    3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
    String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

    • 进行 String str1 ="hi" 时,会查看字符串常量池中是否有hi,有则直接用没有则生成一个。在进行 Stringstr2="hi" 时,因为常量池中有,则直接调用。运行 String str3 = new String(str1) 时,无论有没有都会创建一个新的。因为str1和str2指向同一个对象,因而返回true

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

    • 因为 == 比较的是引用是否相等,而比较指向对象的内容是否相等则用 equals
  4. Wrapper(包装类)
    4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?

    • 在运行Integer i = 100; 时,会将基本类型转换成Integer类型(自动装箱);Integer x = 100; int y = x+1;x++; 命令会先自动装箱,然后再拆箱。

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

    • 在使用例如ArrayList之类时,无法将基本数据类型存入,此时就要借助包装类把基本类型变成对象类型,然后再存入。
  5. 实验总结

    • 结对编程

      结对队友:袁德兴

      因为已经写完代码了,就讨论了一下身份证排序那题,我的方法很中规中举,德兴向我介绍了正则表达式的方法,感觉挺厉害的。两个人一起讨论想到的方法比较多,能学到自己不知道的东西。

      • PTA-1综合小测验

      之前的题都是一个函数敲到底,这题学到了调用函数,就像这样private static void fib(int n) 写完这个函数就可直接fib(n) 调用了。

    • PTA-3身份证排序
      • 在进行比较时,可用substring() 函数去取身份证的其中一段然后用compareTo() 函数去比较其大小。
      • 进行升序排列操作是利用冒泡算法进行的,若要改为降序排列只需修改冒泡算法的交换条件即可。若要按出生月份进行排列,只需在调用substring() 函数时只截取月份即可。
    • PTA-8 ArrayList入门

      • 查看gdk文档可知各函数用法
      • 数组一旦确定大小就无法修改,而动态数组 ArrayList 可实现实时修改。
    • 选做:5-5(浮点数计算)

      因为double 型是不精确的,因而不可用,为了精确计算就可用到 BigDecimal ,计算就直接调用他的函数add()multiply()即可。

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

    这个卡里面的余额是一个 int 型的整数, 占 4个字节 范围是 2^32 次方4294967296是有符号的状态下,取值范围是 -2147483648 到 2147483648之间。在无符号的状态下,取值范围是 0 ~ 4294967296 之间。因为最小的单位考虑到是 分 ,即 0.01 元,所以对于人民币-21474836.48到21474836.48之间 符合设计要求。那么 欠费0.2 元 在有符号状态下是-20.在无符号状态下就溢出了,值是 4294967296 -20 = 4294967276即42949672.76元。综上所述,闸机显示按照无符号来理解显示的。计费系统按照有符号来理解计算的。

    由上可知出错是由整数溢出导致的。

三.码云及PTA

  1. 码云代码提交记录

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


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


    周次 行数 新增行数 文件数 新增文件数
    2 432 432 29 29

201621123023《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. 【302】C# TreeView 控件使用说明

    参考:C# 中treeview 树节点图标的动态加载,及选中时图标改变 参考:C# TreeView 控件的综合使用方法 参考:TreeView 类 参考:TreeNode 类 1. 添加根和子级 通 ...

  2. 【原】Coursera—Andrew Ng机器学习—Week 6 习题—Advice for applying machine learning

    [1] 诊断的作用 [2]过拟合 [3] [4] 高偏差bias,欠拟合underfitting 高方差variance,过拟合overfitting [5]参数λ Answer:  λ太大,则参数都 ...

  3. LeetCode之字符串处理题java

    344. Reverse String Write a function that takes a string as input and returns the string reversed. E ...

  4. Linux实战教学笔记43:squid代理与缓存实践(二)

    第6章 squid代理模式案例 6.1 squid传统正向代理生产使用案例 6.1.1 squid传统正向代理两种方案 (1)普通代理服务器 作为代理服务器,这是SQUID的最基本功能:通过在squi ...

  5. Professional C# 6 and .NET Core 1.0 - Chapter 42 ASP.NET Web API

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处: -------------------------------------------------------- ...

  6. 【HDU 6191】Query on A Tree 【可持久化字典树】

    题目 给出一棵有n个结点的树,树根是1,每个结点给出一个value.然后给出q个询问,每个询问给出两个整数u和x,你要在以u结点为根的子树中找出一个结点v,使得val[v] xor x最大, 并输出这 ...

  7. SQL Server 2008 收缩日志

    如果SQL SERVER 日志过大,比如,达到了几十个G,想一次性收缩的,直接执行下面命令即可: USE DATABASENAME; GO – Truncate the log by changing ...

  8. Linux环境(Centos) 安装mysql

    MariaDB是mysql的开源分支,自从mysql被oracle收购商业化之后,mysql之父在mysql5.5开源的版本的基础上重新开了一个分支,centos也把MariaDB作为mysql的默认 ...

  9. Hive入门学习随笔(二)

    ====使用Load语句执行数据的导入 --将操作系统上的文件student01.txt数据导入到t2表中 load data local inpath '/root/data/student01.t ...

  10. kcp源码segment头文件各字段含义

    conv conv为一个表示会话编号的整数,和tcp的 conv一样,通信双// 方需保证 conv相同,相互的数据包才能够被认可 cmd             cmd用来区分分片的作用.IKCP_ ...