Week02-Java基本语法与类库

1. 本周学习总结

  • 学到java的两种数据类型,分别为基本数据类型和引用数据类型。java特有的基本数据类型布尔型(boolean)取值只有truefalse;java中的引用类似于C中的指针,引用类型变量存放指向对象的引用。
  • 与equals的区别:用于比较两个引用类型变量存放的引用(可理解为地址)是否相等;equals用于比较两者指向对象内容是否相等。
  • java中的常用类型有引用类型、包装类、数组
  • 一维数组可以使用new分配内存空间,多维数组直接为每一维分配空间
  • 多维数组的起点是:数组名[0],终点是数组名[length-1]

2. 书面作业

1.String-使用Eclipse关联jdk源代码

1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?

String str="abc...";这样定义的string是存在字符串池中的
String str=new String("abc...")这样定义的string是在堆内存中

1.2 分析其构造函数public String(char value[])的作用?

该函数的作用是通过char数组,生成String字符串对象,接口中的参数是一个char数组

1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)

public String replace(char oldChar, char newChar)函数用新字符代替指定旧字符,没有被代替的字符保存,如

String =123456string.replace("1","");就把里面的1换了 就成23456

1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?

String是一个类 char[]是一个字符类型的数组,字符串(string)是常量 一旦创建完毕就无法改变,字符数组是数组可以改变。
JAVA中char数据不可以直接当成字符串使用,要先转换成字符串,如:

char c = 0;
String str = String.valueOf(c);
str就是字符串了

2.StringBuilder

2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?

string每次修改字符串都是新建,然后删除旧的串会很影响效率,而stringbuilder是在字符串的末尾操作,和string比较快,
在小数据库的时候string和stringbuilder没有什么大的影响,但是大数据量的时候,stringbuilder会比string快很多

2.2 阅读jdk文档,查询StringBuilder的append(char[] str)方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用StringBuilder的append(char[] str)方法时,是如何实现添加字符的操作?

append(char[] str):字符数组参数按顺序追加该序列的内容。StringBuilder内部使用一个足够长的字符数组来存放字符。调用StringBuilder的append(char[] str)方法:字符数组参数按顺序追加,该序列的内容。

3.字符串与字符串池

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

String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

输出true(直接使用双引号创建字符串,会在字符串常量池中创建字符对象,如已有则不创建直接使用),创建了两个字符串对象(str1与str2相同)。

3.2 重点:对基本类型我们可以使用比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用比较?应该怎样比较他们的值是否相等呢?

与equals 都是判断两者是否相等,判断两者的地址是否相等,equals判断两者指向的对象内容是否相等。

4.Wrapper(包装类)

4.1 Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?Integer x = 100; int y = x+1;x++;这一串命令中包含了些什么操作?

Integer i = 100这种语法叫自动装箱——将基本类型转换成integer类型。
Integer x = 100;(自动装箱) int y = x+1;(自动拆箱)x++(先拆箱再装箱)

4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?

JAVA不是完全的面向对象语言.包装类为了实现基本类型与其它类型的交互

5.实验总结

5.1 结对编程实践:使用结对编程的方式完成本周编程题目,即两个人同时合作完成实验题目(可1题也可多题,但最好是是两个人都没做过的题目)。推荐实施步骤:1.两个人坐在同一台电脑屏幕前判题,讨论、决定大概由谁先写。2. 1个人先编5分钟(自己商量多少分钟),同时另一个人观察对方编程或者查相关资料。3. 5分钟后,简单讨论后,换另外一个人继续编(请一定要换,另一个人如果无法接受应由第一个人讲解大概思路以方便其接受)。并完成如下作业:a.描述结对队友姓名、结对过程,提供非摆拍的两人在讨论、细化和编程时的结对照片。b.结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会(如是否有利于自己编程水平的提高、是否有利于开拓编程思路)。

  • 队友:冯一
  • 这种方式比一个人稍微好点吧。因为一个人编的时候卡壳了要想老半天,与别人合作的话就是在遇到问题时可以第一时间获得提醒,也可以参考别人的思路。

5.2 PTA-1综合小测验

  • 本题是根据输入端口的不同执行不同的程序操作。
  • 输入fib执行打印斐波那契数列操作,直接调用fib函数把输入的数转化成斐波那契数列

if (n == 0)
return 0;
else if (n == 1)
return 1;
else if (n > 1)
return Fibonacci (n - 1) + Fibonacci (n - 2);
else
return -1;

  • 输入sort执行排序操作,先把输入的字符串型转化成整型,用Arrays.sort排序函数可以对数组进行排序
  • 输入search,把输入的数字转换成int型,查找其位置
  • 提取出生日期str = ID.substring(6,13)提取出出生日期按格式输出,当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit

5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?

sort1:birth[i]=digits[i].substring(6,14);提取出出生日期,Arrays.sort进行升序排序,输出
sort2:先把字符数组转化成整型数组,用冒泡法从第6位数字开始比较(小于13位),直至有一个较大,交换顺序

5.4 PTA-4动态数组

把九九乘法表的信息录入一个二维数组中,根据输入的数字打印出相应行数的九九乘法表,Arrays.deepToString打印二维数组内容。

5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?

这个题主要是ArrayList 一些函数的用法strList.add()把字符输入到动态数组中;strList.contains()判断是否含有指定字符;strList.get(0)输出指定下标字符等
ArrayList就是动态数组,他可以动态的增加和减少元素,节省空间也更灵活。

5.5 选做:5-5(浮点数计算), 5-6(枚举), 5-7(大整数相加)

大整数相加:先把字符串逆置,把相同位置的字符相加,和对10求余数,大于10就下一数位加一,最后再次逆置输出。

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

4294967276 =(16进制的)FFFFFFFC,其实是欠0.02元。程序员处理时用了无符号整型,没考虑到负数的情况

3. 码云及PTA

3.1. 码云代码提交记录

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

3.2 截图题集“Java基本语法”PTA提交列表




3.3 使用老师发的jar程序统计每周的代码量

行数 新增行数 文件数 新增文件数
278 239 18 9
posted @ 2017-09-23 15:27  Devilss  阅读(460)  评论(0编辑  收藏  举报