zoukankan      html  css  js  c++  java
  • 201521123006 《Java程序设计》 第2周学习总结

    1. 本周学习总结

    本周进一步学习了java,了解了java编程中一些特定的用法,比如:在编译程序时可以使用import来减少输入包名称。本周还学会了使用枚举类(enum Choice{fab,sort})的        使用及switch语句和if...else语句字java中的使用。虽然java和C语言中控制流程的语句基本上相同,但是对于while语句中的条件不在可以是简单的条件,而是必须是条件式,且返回值为true或false。并且在实验课上对java的编程软件——eclipse的使用进行了进一步的加深。在实验课中学会了使用eclipse来管理自己的码云,这种方法对比起使用cmd来说,更加的方便,简洁,不需要输入过多的命令语句。而且发现了eclipse软件的更便捷之处,可以先行编写出程序的大体结构,eclipse软件可以快捷编写所需要的函数等。
    

    2. 书面作业

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



      首先String对象虽然java语言中重要的数据类型,但其本身并不属于java的8种基本数据类型。因为关于对象的默认值是null,而String也是一种对象,所以String的默认值也       是null。
      其次在C语言中,对于字符串的表示通常使用char数组,而在java中,通常使用String对象,在了解String对象的用法后可以默认String是对于char数组的进一步操作或者是延伸。String对象的作者针对一些方面进行了优化。String对象在不变性,常量池进行了优化,使其能够具有节约内存,性能好,安全的优势。
      最后String对象是对于char数组本身无法封装字符串操作所需的基本方法的补充,是为提高处理字符串的效率,节约内存而设计优化的,毕竟字符串在计算机处理中有着很重要的地位。
    

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

      因为对于String来说是对一串字符串进行操作,但是其是不可变类,而对于StringBuilder来说,它同样是对一串字符串进行操作,但是它却是为可变类。并且如果使用String    对字符进行修改,需要把字符都写入内存,然后删除原来的String对象,再创建一个String对象并读取内存内的数据,而使用StringBuilder则能够在原来的String对象上直接进行字    符串的修改,比起String更加简单,所需时间更少。
    

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

      因为在java中“==”比较的是引用的值,“==”只能比较是否是同一个对象。在比较引用时,如果引用指向内存中的同一对象,结果为true。比较两个字符串的值是否相等,    一般是使用equals方法。
    

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

          String str1 =“hi“, str2=“hi“;
          String str3 = new String(str1)
          System.out.println(str1==str2);
    
      程序段的输出结果是:true。
      在本程序段的第一行:它在常量池中创建了一个对象str1,它的值为“hi”,并且对象str2的值同样为“hi”,而str1,str2是为同一个字符串对象。
      在本程序段的第二行:它则是在常量池中另外新创建了一个对象str3,并且把str1的值“hi”赋值给str3。
      在本程序段的第三行:此行则是在比较str1和str2是否为同一个对象,而str1和str2是为同一个对象,所以此时输出“true”。
    

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

      因为对于Integer来说,在JDK5.0的版本之后,能够采用自动装箱和自动拆箱,装箱就是将java中的基本类型转换成对象类型,而拆箱就是将对象类型的值取出来赋值给java中的基本对象类型。所以题目中的Integer i=100则可以理解成:Integer i = new Integer(100);int j = i.intValue。所以可以将100赋值给i。
    

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

          Integer i1 = 127;Integer i2 = 127;
          i1 == i2;//true of false?
          Integer i1 = 128;Integer i2 = 128;
          i1 == i2;//true of false
    
      对于Integer来说,想要使所赋值的整数能够使用valueOf()函数缓存,则对赋值的整数要求在-128—127之间。而在上面的代码中,第一行中的整数为127,在其范围内,所以第二行输出的结果为:true。而代码的第三行中的整数为128,超出了范围,所以第四行输出的结果为:false。
      输出结果:true
               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方法 **
      7.1 尝试用命令行进行编译并运行,截图
    

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

      7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。
    
          Eclipse中源代码放在src目录中,而class文件放在bin目录中。
          因为对于Ctrl+f11来说,它执行的是含有main的代码,它首先会判断当前是否是可以执行的代码,没有包含main则会执行上次的代码。
    

    Q8. 自己在这门课的目标与计划
    。请描述一下你的技术基础(会什么语言,都写了多少行代码)

       (1)C语言和c++,因为大一一年的实践都在学习C语言和c++,所以对于编写代码的量还挺大的,至少也有几千行了,具体没有数过。
       (2)java,刚开始入门,编写的程序主要以pta上的实验题目为主,现在写的代码主要是实验一和实验二的编程题目。    
    
      。一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
    
        准备利用每天晚上的时间来学习java及编写java的程序。
        一周准备些二到三百行,或者更多,依情况而定。
        采用以编程为主,实际应用为主,看书为辅的方式来学习java,毕竟即使看了好多遍的书,都抵不上自己动手编写下程序来得深刻和明白。
        遇到困难打算自己先想想能不能自己解决,如果各种方法都行不通,则可以去询问老师,同学或者也可以在专业的网站上向广大的IT专业的人员询问。
    
      。关于这门课的smart目标参考链接
    
        首先对于smart目标是在目标管理中的一项原则,分别由「Specific、Measurable、Attainable、Relevant、Time-based」五个词组组成。这是订定工作目标时,必须谨记的五项要点。
        S 即specific,代表具体的,指绩效考核要切中特定的工作指标,不能笼统;
        M 即measurable,代表可度量的,指绩效指标是数量化或者行为化的,验证这些绩效指标的数据或者信息是可以获得的;
        A 即attainable,代表可实现的,指绩效指标在付出努力的情况下可以实现,避免设立过高或过低的目标;
        R 即relevant,代表相关性,指实现此目标与其他目标的关联情况;
        T 即time-based,代表有时限,注重完成绩效指标的特定期限。
        
        能够掌握好java的知识,能够独立完成一个java的大项目,希望能够在本学期期末的时候能够对于java运用自如,至少不需要在编写程序时经常不知道从哪里下手,同样也希望学习java能为以后的就业打好基础,虽然还没决定好在毕业后是否从事IT工作,但依旧希望学好java。
    

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

      29.4
      可能是无符号浮点数的小数位没有在正确的位置,而是后移了。
    

    3. 使用码云管理Java代码

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图 
    

    4. PTA实验

    在这次的pta试验中,对于java中一些特定的用法有了了解,例如学会了使用Arrays及String的方式进行编写程序,从而使得程序变得更加简单,执行时间也有所缩短。而且在java中String是不可变类,当我们需要在有限制执行时间和内存大小时,我们需要采用StringBuilber,因为它是可变类,不会生成新对象。对于ArrayList的基本使用有了初步的了解,通过对ArrayList进行编程,从而对ArrayList更加熟悉,在以后使用到的时候能够很熟练。
    

    5. 小任务(加分)(PS:有时间的话会补上的)

    Q1. 现有choice.txt文件,里面包含上千行,上百题选择题。先在老师要将其中的题目转化为PTA网站的选择题。然而PTA网站上的选择题对输入格式有要求。要求如下:

      * 题面第1行及选项行前不能有空格,题面其他行无此要求。
      * 题面第1行结尾要包含答案字符串,内容形式@[C](2),代表该题答案为C,分值为2
      * PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。 
      * 统计:题目数量
      * 输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。
      * 提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。
      * 提示2:题目很简单,大概50行左右,不要畏难。
      * 进阶:可以为将来的自动出题、组卷系统做准备
  • 相关阅读:
    【SAS NOTE】OUTPUT
    【SAS NOTES】_NULL_
    【SAS NOTE】sas 9.2 安装
    【SAS NOTE】FREQ
    纯数学教程 Page 203 例XLI (1)
    纯数学教程 Page 203 例XLI (3)
    纯数学教程 Page 203 例XLI (2)
    Prove Cauchy's inequality by induction
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
  • 原文地址:https://www.cnblogs.com/KimHeechul/p/6487411.html
Copyright © 2011-2022 走看看