1. 本周学习总结

答:① 定义流程控制的各种条件式是同以前学习的一样,要善于运用快捷键。(例如`a/t` + `/` )
② 熟悉输入输出的使用,注意输入的变量类型使用相应的输入类。
③ 数组对象:
A. 数组在Java中是对象,用来收集数据,具有索引的数据结构,在Java中要声明数组并初始值。例 int[] scores = {0, 1, 2}
B. 操作数组对象:int[] scores = new int[10]
C. 二维数组不一定是矩阵形式。
D. 使用for each循环来遍历数组。for (类型 变量名 : 对象)
④ 字符串对象:
A. 本质是打包字符数组的对象。
B. 特性1-->字符串常量和字符串池。看到new是创建新的String,未使用常量池;需要注意如果比较字符串要使用 equals() 而不是==。
C. 特性2-->字符串对象不可变。在Java中可以使用+运算来连接字符串,这样会产生新的 String实例;这样的话就应该尽量避免用到循环或者递归里面。使用+连接字符串,如同建立**StringBuilder**对象,使用 append()方式附加字符串,但是StringBuild可以修改。
⑤ ArrayList特性:因数组内存为连续空间,根据索引随机存取的效率,例如排序,则可以使用此索引方法;但此方法需要指定内部数组长度,否则耗费时间与内存。

2. 书面作业

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

    答:使用Eclipse关联jdk源代码:

① 点 "window"-->"Preferences"-->"Java"-->"Installed JRES"。

② 此时"Installed JRES"右边是列表窗格,列出了系统中的JRE环境,选择你的JRE,然后点边上的 "Edit...",会出现一个窗口(Edit JRE)

③ 选中rt.jar文件的这一项;展开它,点击Source Attachment:(none),点右边Source Attachment..., 选择你的JDK目录下的 src.zip文件

④ 结果

        String对象的源代码(按`ctrl`并用鼠标移到String上并单击左键):

分析:

    implements java.io.Serializable, Comparable<String>, CharSequence {...}
可以看出String是final类型的,表示该类不能被其他类继承,同时该类实现了三个接口:java.io.Serializable  Comparable<String> CharSequence。
 * are created. String buffers support mutable strings.
* Because String objects are immutable they can be shared. For example:*/
这里**定义**了String字符串是常量,其值在实例创建后就不能被修改,但字符串缓冲区支持可变的字符串,因为缓冲区里面的不可变字符串对象们可以被共享(即使对象引用发生改变)。

构造方法

  • 空的构造器:
        this.value = "".value;
}
  • 使用字符串类型的对象来初始化:
        this.value = original.value;
this.hash = original.hash;
}
  • 使用字符数组来构造:
        this.value = Arrays.copyOf(value, value.length);
}
注意:当我们使用字符数组创建String的时候,会用到Arrays.copyOf方法或Arrays.copyOfRange方法。这两个方法是将原有的字符数组中的内容逐一的复制到String中的字符数组中。会创建一个新的字符串对象,随后修改的字符数组不影响新创建的字符串。
  • 使用字节数组来构建String
  • 使用StringBuffer和StringBuider构造一个String
  • 一个特殊的保护类型的构造方法
  • …… (这里不一一例举了,详情请参照String源代码)

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

    答:String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。Java 语言提供对字符串串联符号("+")是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。而StringBuilder在实现中比StringBuffer快。在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。StringBuilder有拼接功能。

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

    答:"=="只是用来比较是否为同一个对象;而 equals()用来比较对象实质内容是否相同。由于String对象不可变,"=="无法判断其实质。

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

    String str1 =“hi, str2=“hi;
String str3 = new String(str1);
System.out.println(str1==str2); 答:这个程序片段的输出结果显示true,因为str1和str2指向同一个对象,所以用"=="也不会出现false。 这段代码创建了两个字符串对象,一个是str1,而str2与str1参考的是同一个对象,即直接参考至"hi"建立的String实例并在字符串池中维护;另一个是str3,,因new一定是建立新对象,所以str3参考新建String实例。

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

    答:(引用类型是一个对象类型,它的值是指向内存空间的引用,即地址,所指向的内存中保存着变量所表示的一个值或一组值。基本类型的值是数字,字符或布尔值。)这个赋值语句其实是运用了Integer中的valueof(int i)函数,相当于 Integer i = new Integer(100)。

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。Integer是对象类型的这种赋值方式是会自动调用valueof方法会缓存,当Integer定义类型的值在-128~127之间才能缓存,所以当取值为128时,比较的是地址

7) 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方法

(1) 尝试用命令行进行编译并运行,截图
(2) 将生成的StringUtil.class放到d盘的lib目录下,将Main.class在d:\test目录下,尝试命令行下运行,截图。
(3) Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl + f11就可以直接运行Main,尝试分析背后实现的原理。
    答:

(1)

(2)

错误的那个语句是漏写了c。

StringUtil.java文件位置:

Main.class文件位置:

(3)Eclipse中源代码在D:\javaworkspace\test\src目录下(例),.class文件放在D:\workspace\test\bin目录下(例);运行Main主要是为了找到字节码文件(.class)。

8) 自己在这门课的目标与计划

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

    答:C、C++、Java分别学会的都只是皮毛。代码是没有统计过,但是觉得写得挺少的。
  • 一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?

    答:一周中每天都准备一两个小时在Java上或者其他语言;

    一周尽可能多写代码,并没有具体的行数;

    学习方式:认真听讲,多参考课外书,最重要的是自己要勤于思考;

    困难解决方式:自己调试,或查找资料,或多问老师同学。
  • 关于这门课的smart目标参考链接

    答:虽然意思不太明确,但是参考了同学的链接,大概的意思是这样的吧:http://www.dennispot.com/career/theory-guide/smart-goals.html

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

    答:公交卡里欠款0.02元;

原因参考链接:http://news.163.com/13/0320/05/8QCUNHI600014AED.html

3. 使用码云管理Java代码(在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图)

4. PTA实验

答:问题一:有的java程序在Eclipse可以运行但是PTA不予通过
解决方法:多了解类对象的用法。
问题二:很多代码都写不出来,做练习的时间没有利用好,时间不够。
解决方法:在代码时间截止前都尽量写完代码。

5. 小任务(加分)----(未写,能力有限)

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

题面第1行及选项行前不能有空格,题面其他行无此要求。

题面第1行结尾要包含答案字符串,内容形式@C

PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。

统计:题目数量

输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。

提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。

提示2:题目很简单,大概50行左右,不要畏难。

进阶:可以为将来的自动出题、组卷系统做准备。

choice.txt在qq群下载

第2周作业-Java基本语法与类库的更多相关文章

  1. 第2周作业-Java基本语法与类库(20170227-20170304)

    本周学习总结 (1)这周学习认识和熟悉了java的一些类型和变量: (2)学习了java的运算符基本使用方法: (3)了解了如何建立远程仓库和本地仓库,和如何让java代码在临时储存,本地仓库和远程仓 ...

  2. 201521123044 《Java程序设计》第2周作业-Java基本语法与类库

    1. 本章学习总结 ·1.浮点型的不精确,不能简单的像C语言一样用float或者double来定义.在java中有更精确的BigDecimal类. 举例:BigDecimal bd1= new Big ...

  3. 1903021121-刘明伟-java十一周作业-java面向对象编程

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...

  4. 第五周作业:markdown语法小总结

    第五周作业 markdown语法总结 早就想写这么一个文章了,关于markdown的语法,因为最近使用的比较多,所以特地总结一下 一,标题 首先要介绍的就是标题, 标题一共有六级 # h1 ## h2 ...

  5. 1903021121—刘明伟—Java第六周作业—java类

    项目   内容 课程班级博客链接  19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...

  6. 作业02-Java基本语法与类库

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

  7. 201521123053 <<Java基本语法与类库>>第二周

    1.本周学习总结 这是第二周学习了,还是感觉吃力,慢慢来吧 .知识总是一点一点进到脑子里,虽然头小,但总会进来不是! 知识储备:   A.整形变量按照长度分为byte.short.int.long. ...

  8. 1903021116-吉琛- JAVA第二周作业—Java程序编写

    项目 内容 课程班级博客链接 19级信计班 这个作业要求链接 https://www.cnblogs.com/thelovelybugfly/p/9641367.html 我的课程学习目标 1. 学习 ...

  9. Java第2次实验提纲(Java基本语法与类库)

    1. 使用Git克隆(clone)项目到你的Eclipse项目中 见以下参考资料中的3 从码云将项目clone到你的电脑 重要提示: 使用Git来管理你的代码以后,当你在本机Eclipse项目中开始编 ...

随机推荐

  1. HTML5 — Wed SQL 本地数据库示例

    1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF- ...

  2. android 学习 Spinner控件的使用

    今晚看了下spinner控件的使用,结合博客大神的教程,一个小demo 一,SpinnerActivity private Spinner spinner; private ArrayAdapter& ...

  3. python---------函数练习题

    2.写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作 # 方法一 # import os # def fun(): #y为要修改的内容,z为修改的结果 # y=in ...

  4. 从源码理解Spring原理,并用代码实现简易Spring框架

    前言(本文为原创,转载请注明出处) 个人之前对于框架的学习,就停留在配置,使用阶段.说实话过段时间就会忘得荡然无存.也不知道框架的运行逻辑,就是知道添加个注解,就可以用了. 由于实习,时间比较多,也感 ...

  5. iostat磁盘IO命令详解

    Linux IO 实时监控iostat命令详解 简介: 对于I/O-bond类型的进程,我们经常用iostat工具查看进程IO请求下发的数量.系统处理IO请求的耗时,进而分析进程与操作系统的交互过程中 ...

  6. sqlserver-4064

    早上忘记了SQLServer的sa帐户密码,在网上搜索才弄清楚了解决办法:1.在SQLServer企业管理器中输入以下命令:ALTER LOGIN sa ENABLE GO ALTER LOGIN s ...

  7. noip普及组2004 花生采摘

    花生采摘 描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!--熊字". 鲁宾逊先生和多多 ...

  8. Web前端学习开篇

    首先想想自己喜欢干什么?想干什么?脑袋需要什么?什么对自己来说最重要?自己的规划? 本人数字媒体技术专业,想学Web前端开发有好长时间了,有一定的基础,所以就想进一步深入学习.谁料想,我怎么那么没有耐 ...

  9. ASP.NET MVC5写.php路由匹配时的问题 ASP.NET MVC 4 在 .NET 4.0 与.NET 4.5 的專案範本差異

    由于外包公司结束合作,所以考虑把其APP服务替换过来,因原后台是用php写的,在不影响员客户端使用的情况下在MVC下重写路由配置实现处理原php链接地址的请求,但实现时发现怎么也匹配不到自己写的路由, ...

  10. Fedora删除旧版本内核

    由于Fedora升级非常快,因此非常有必要清除陈旧的内核,否则的话,每次登录系统会出现多个引导项,看着烦人也占用内存: 1.查看当前使用的内核 [root@w ~]# uname -r 4.9.14- ...