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. C++中加const与不加const的区别

    “常量”与“只读变量”的区别. 常量肯定是只读的,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它. “只读变量”则是在内存中 ...

  2. Jedis与Redisson选型对比

    1 概述 1.1.       主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为无线云管理项目中Redis编程模型的选择提供参考. 2.    ...

  3. 利用OpenCms9提供的模块创建新站点

    OpenCms 9中提供b一个Demo,Demo使用了alkacon的bootstrap模板.如果已经安装了OpenCms 9,可以登陆http://localhost:8080/opencms/op ...

  4. 深入浅出数据结构C语言版(12)——平衡二叉查找树之AVL树

    在上一篇博文中我们提到了,如果对普通二叉查找树进行随机的插入.删除,很可能导致树的严重不平衡 所以这一次,我们就来介绍一种最老的.可以实现左右子树"平衡效果"的树(或者说算法),即 ...

  5. STL简单的介绍

    我们要知道C++的含义:C语言 + 类 + 模板  (STL就是典型的代表) STL是Standard Template Library的简称,中文名是标准模库.从根本上说,STL是一些“容器”的集合 ...

  6. DRAM(MT48LC8M32B2)学习

    Micron公司,型号为MT48LC8M32B2的DRAM,其86PIN的 TSOP封装引脚定义 Micron公司,型号为MT48LC8M32B2的DRAM,其86PIN的 TSOP封装引脚定义如上图 ...

  7. ID3算法(2)

    今天,我来讲解的是决策树.对于决策树来说,主要有两种算法:ID3算法和C4.5算法.C4.5算法是 对ID3算法的改进.今天主要先讲ID3算法,之后会讲C4.5算法和随机森林等. Contents   ...

  8. poj2828 Buy ticket

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  9. Spring MVC请求执行流程

    学习Spring MVC时间有点长了,但是最近打算找工作,需要重新了解下,所以又去温故知新了.Spring MVC就是用来写web的框架,简化你写web的一些不必要的流程,让程序员能专注于业务逻辑也就 ...

  10. 《阿里巴巴Java开发手册v1.2》解析(编程规约篇)

    之前在乐视天天研究各种底层高大上的东西,因为我就一个人,想怎么弄怎么弄.如今来了新美大,好好研读一下<阿里巴巴Java开发手册v1.2>.还要对这么看似简单的东西解析一番.毕竟现在带团队, ...