• 201521123022 《Java程序设计》 第二周学习总结


    1. 本章学习收获

    (1)在老师指导下学会如何使用码云管理代码,代码不仅是保存到本地,还需要Push到码云这个“仓库”里。

    (2)JDK源代码可以为我们的编程提供许多便利之处,应善加利用。

    (3)对String类的了解更深了一层。

    (4)用BigDecimal类来进行浮点数的精确计算。

    (5)StringBuilder可用于大量重复性字符串连接。

    2. 书面作业

    Q1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。


    String本质上基于字符数组char[]实现,且创建的对象是不可变不可修改的。

    Q2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?

    String所创建的对象是不可变的,所以每次对字符串的修改其实都是在进行新建操作,之后删除旧的字符串,这样在效率上就显得很低。

    对StringBuilder来说,存在如Append等函数的应用,可在原有字符串基础上进行修改,效率较高。

    Q3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?

    比较两个字符串的值是否相等应使用equals()而非用,因为比较的是两个字符串的地址而非它们的值。

    例如:

    String s1=new String("JOJO");

    String s2=new String("JOJO");

    System.out.println(s1==s2);

    这里的输出为false,因为虽然字符串值相同,但它们的地址不同。

    Q4.尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:

    String str1 =“hi“, str2=“hi“;

    String str3 = new String(str1)

    System.out.println(str1==str2);

    输出结果为true。

    该段代码创建了2个对象,因为定义str1时,已经将hi置入字符串常量池,对str2来说,对象也是hi,可直接引用。故str1,str2共创建一个对象。而str3定义时使用了new,虽然值与str1值相同,但意味着重新创建了一个对象。所以共创建两个对象。

    Q5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i

    这一句代码相当于:

    Integer i = new Integer(100);

    是对象的自动封箱与拆箱操作,运用于对象类型和基本类型互换。

    Q6.尝试分析下面代码输出结果

    Integer i1 = 127;

    Integer i2 = 127;

    i1 == i2;//true of false?


    Integer i1 = 128

    ;Integer i2 = 128;

    i1 == i2;//true of false?

    答:本题是关于自动拆箱的知识运用。Integer i 操作相当于Integer i=Integer.valueof(),范围在-128-127之间,若i1,i2在范围内,则返回同一Integer实例,若有其一超出范围,则新建Integer实例。故:

    (1)true。

    (2)false。

    Q7.package与javac、 java、 -classpath、 -d在>com.ibm包中编写StringUtil类,内有一方法

    public static void foo1(){

    System.out.println(StringUtil.class+" method:foo1");

    }

    在>edu.jmu包中编写Main类,调用com.ibm.StringUtil的foo1方法。

    Q7.1 尝试用命令行进行编译并运行,截图。

    Q7.2 将生成的StringUtil.class放到d盘的lib目录下,将Main.class在d: est目录下,尝试命令行下运行,截图。

    Q7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。

    源代码存放在src文件夹中,而class文件放在bin目录下。

    Q8.自己在这门课的目标与计划。

    (1)请描述一下你的技术基础(会什么语言,都写了多少行代码)

    学习了C,C++,java(前两者其实也是一知半解算不得熟练,后者初入门),代码写了以前老师布置的一些。

    (2)一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?

    讲道理这门课需要花的时间是最多的- -,毕竟身为计算机学院的学生么。本课程我感觉作业比较多且难,能够完成作业和老师的要求怕是就要尽量花上大部分时间了吧。我认为对于JAVA课程来说,光看是无甚用处的,大多时候还需自己动手敲键盘实践。与此同时,碰到困难时无可避免的,可求助于同学,百度,以及老师。将他们所教的东西再自行消化,一步一步来吧。

    (3)目标

    脚踏实地是最好的,希望自己首先能在老师的带领下逐步学习好JAVA,为大三专业课打下基础,对代码的运用能够更加熟练,对编程的思路能够更加清晰。如果可能的话,希望自己能达到用JAVA编出一个WEB的水平。

    3.码云代码提交记录

    4.PTA实验总结

    PTA上的实验虽然老师在课上讲过,但或许我理解不足,目前只做出几题,现在还在奋斗中……
    (1)还对JAVA资源库中自带的函数运用不充分、熟练。
    (2)区分好StringBulider与String的区别。
    (3)善于运用BigDecimal解决浮点数的精确计算。

  • 相关阅读:
    ESFramework Demo -- 动态组及群聊Demo(附源码)
    反射整理学习
    JavaScript 每周导读
    SQLSERVER 中的 with锁级别
    代码细节重构:请对我的代码指手划脚
    SQLServer查询死锁语句
    模块加载系统 v16
    数据结构之排序算法C#实现
    浅谈操作系统对内存的管理
    如何编写可维护的面向对象JavaScript代码
  • 原文地址:https://www.cnblogs.com/the-world/p/6501237.html
Copyright © 2020-2023  润新知