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

    201521123082《Java程序设计》第2周学习总结

    标签(空格分隔): Java


    1.本周学习总结

    • 巩固了类型转换的相关细节
    • 初步认识了类和对象,使用Java撰写程序几乎都在使用对象,要产生对象必须先定义类。同时一个原始码中可以有多个类定义,但只能有一个是公开类,且文档中的主文档名必须与公开类名称相同。
    • 学会使用标准类:java.util.BigDecimal。并将其运用于Pta的实验。
    • 了解了自动装箱和拆箱的内幕,对数组对象和字符串对象的运用。
    • 初步了解了对象与封装,以及继承与多态。

    2.书面作业

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

    答:
    (1)JDK相关截图


    *关联jdk源代码的步骤:

    MyEclipse-->Windows--> preferences--> Java --> Installed JREs
    --> Edit -->Source Attachment -->Extenal location -->Extenal File...-->src.zip -->OK-->Finish
    *使用Eclipse(MyEclipse)关联jdk源代码的具体方法(参考链接):http://blog.csdn.net/weiwangchao_/article/details/25960961

    (2)String对象源代码部分截图

    (3)String对象的设计思路

    首先String是final类型的,不能被其他类继承。其次String字符串是常量,其值在实例创建后就不能被修改,但字符串缓冲区支持可变的字符串。后面的源代码还未具体深究,等以后分析完毕后,再来补充和修改博客。
    参考文章链接:http://www.jianshu.com/p/799c4459b808

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

    答:
    当创建了 StringBuilder对象,用来存储字符串,并对其做了追加和插入操作。这些操作修改了对象的值,而没有创建另一个新的对象。而String则创造了一个新的对象。
    实例说明:

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

    答:
    不可以;
    具体例子:
    String str1 = "Moyi";
    String str2 = "Moyi";
    System.out.println(str1 == str2); //返回true,因为str1和str2是对同一个字符串常量的引用,是同一个对象地址。
    String str1 = new String("Moyi");
    String str2 = new String("Moyi");
    System.out.println(str1 == str2); //返回false,因为str1和str2是两个值都是Moyi,但是对象不同。
    建议使用equals()。

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

    答:
    返回true;
    以""包括的字符串,只要内容相同,JVM只会建立一个String实例;并在字符串池中维护,所以str1=str2;这段代码创建了两个字符串对象。

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

    答:
    这是个自动装箱的例子。
    Integer i = 100是对象的自动装箱,在编译程序时,会自动将程序代码展开为Integer i = new Integer(100)。

    Q.6尝试分析下面代码输出结果
    Integer i1 = 127;Integer i2 = 127;
    i1 == i2;//true of false?
    Integer i1 = 128;Integer i2 = 128;
    i1 == i2;//true of false

    答:
    分别为:true 和 false
    因为IntegerCache.high默认值是127,IntegerCache.low默认值是-128。i1=i2=127,处在其间。所以一个代码运行结果返回true。
    第二段代码i1=i2=128不处于-128到127之间,所以要建立一个新的Integer实例,在使用==时就会返回false。

    Q.7package与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,尝试分析背后实现的原理。

    答:
    7.1


    7.2
    错误:

    正确:

    7.3
    在src里面存放源代码,在bin文件夹中存放class。

    Q.8自己在这门课的目标与计划
    (1)请描述一下你的技术基础(会什么语言,都写了多少行代码)
    (2)一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
    (3)关于这门课的smart目标

    答:
    (1)接触过C语言和一点点C++
    (2)
    每天2~3小时,具体的情况会增加;
    每周完成PTA代码和适量的学习网站题目;
    先熟悉基本知识,后实践,再总结归纳;
    遇到困难上Google查阅资料,或者先思考后再询问老师同学。
    (3)
    期待期末能够独立完成一个Web或者安卓项目的制作。

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

    答:
    视频地址:http://v.ifeng.com/news/society/201303/bec03216-938b-4618-8e65-64f4e42f5803.shtml
    公交卡余额为-0.2元
    原因:可能机器上定义了无符号的数吧。

    3. 使用码云管理Java代码

    起初误删码云上的项目,重新在MyEclipse上设置Egit出错,就用Git Bash上传。

    命令整理:

    git init
    touch README
    git add README
    git add 提交的文件
    git commit -m '信息'
    git remote add origin 码云项目地址
    git pull --rebase origin master
    git push -u origin master

    截图:


    4. PTA实验及其总结

    • 实验2中用到了基本语法StringBuilder,学会用append()和substring()来完成题目要求。
    • 实验3中,用parseInt将字符串参数作为有符号的十进制整数进行解析。
    • 实验4中用到Arrays.deepToString 打印二维数组中的内容。
    • 实验5中用到BigDecimal实现浮点数计算。
    • 实验7大整数相加用到BigInteger

    5. 小任务(加分)[在规定时间内若未完成后面补上]

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

    题面第1行及选项行前不能有空格,题面其他行无此要求。
    题面第1行结尾要包含答案字符串,内容形式@[C](2),代表该题答案为C,分值为2
    PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。
    统计:题目数量
    输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。
    提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。
    提示2:题目很简单,大概50行左右,不要畏难。
    进阶:可以为将来的自动出题、组卷系统做准备。
  • 相关阅读:
    幕客前端基础入门-html表单
    幕客前端基础入门-html表格
    幕客前端基础入门-html基础
    尚硅谷nginx教程-7nginx原理
    尚硅谷nginx教程-7nginx配置示例-配置高可用的集群
    尚硅谷nginx教程-6nginx配置示例-动静分离
    尚硅谷nginx教程-5nginx配置示例-负载均衡
    尚硅谷nginx教程-4nginx配置示例-反向代理
    尚硅谷nginx教程-3nginx常用命令和配置文件
    尚硅谷nginx教程-1nginx简介
  • 原文地址:https://www.cnblogs.com/moyi-h/p/6498854.html
Copyright © 2011-2022 走看看