戴建钊 201521123023《Java程序设计》第2周学习总结
1. 本周学习总结
(1)String类:字符串连接“+”,以前觉得方便但不知其原理,所以在有大量修改字符串操作的时候用得不亦乐乎,既浪费内存,又减缓效率。现在知道用Stringbuilder()才是正确的选择
(2)java中类型分为基本类型和类类型(也称参考类型),java撰写程序几乎都在使用对象,对象是类的实例,所以要乘凉,先种树,定义了类,才能产生对象
(3)自动装箱/拆箱:在编译某些代码时,编译器自动调用某些方法来翻译。
例如:Integer i = 100;
实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100);
再如:
Integer i = 10; //装箱
int t = i; //拆箱,实际上执行了 int t = i.intValue();
2. 书面作业
1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。


String对象的设计思路:String是一个非可变类,它的实例是不能被修改的。在java中为了效率考虑,相同的字符串(以""包括且序列,大小相同)无论在代码中出现几次,JVM都只会建立一个String实例并放在字符串池中以供使用。
2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?
因为使用String频繁对字符串作修改操作会产生大量的新对象,浪费内存且效率不高
3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?
当两个字符串值相等但是对应不同的对象时,用==比较会产生错误的结果。用==比较的话是比较两者对应的是否为同一对象,而不是值的比较,所以若要比较两个字符串的值要用equals()。
4.尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);
输出结果:true 。
共创建两个字符串对象。str1="hi"建立了“hi”字符串,并放在了字符串池中;str2="hi",使用的是字符串池中已经建好的“hi”字符串;str3 = new String(str1)新建了一个String类,与之前建立的字符串值相等,但是是不同的对象。
5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i
这是java为我们提供的转换方法(自动装包/自动拆包)。
JDK1.5为Integer增加了一个全新的方法: public static Integer valueOf(int i)
对于范围在-128到127的整数,valueOf方法做了特殊处理。采用IntegerCache.cache[i + offset]这个方法。 当-128=<i<=127的时候,返回的是IntegerCache中的数组的值;当 i>127 或 i<-128 时,返回的是Integer类对象。
因此 Integer引用i中存储的是cache数组第228号元素的地址。
相关链接:java的integer与int互转
6.尝试分析下面代码输出结果
Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true or false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true or false
前面一个问题已经说了,对于范围在-128到127的整数,Integer引用i[]中存储的是cache数组元素的地址,==比较的是引用的地址,因为cache是Integer的static数组,只有一个,所以第一个比较所得的结果为true;
而第二个则是false,因为当i>127 或 i<-128 时,返回的是Integer类对象,所以Integeri1=128;Integer i2 = 128;实际上是建立了两个新对象,因此用==比较时所得结果为false。
7.package与javac、 java、 -classpath、 -d
在 com.ibm包中编写 StringUtil类,内有一方法
public static void foo1(){
System.out.println(StringUtil.class+" method:foo1");
}
7.1 尝试用命令行进行编译并运行,截图

7.2 将生成的StringUtil.class放到d:\lib下正确的目录结构下,将Main.class放到d:\test下正确的目录结构,尝试在命令行下运行,并截图。

提示无法加载到类StringUtil
7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录?在Eclipse项目中按一下Ctrl+F11就可以直接运行Main,当按下Ctrl+F11时,到底在哪个目录下执行了什么样的java命令?
源代码放在src文件夹中,字节码文件在bin目录里,当按下Ctrl+F11时,在src目录中编译源文件生成.class文件放到bin目录下,然后在bin目录执行字节码文件输出结果。
8.自己在这门课的目标与计划
- 请描述一下你的技术基础(会什么语言,都写了多少行代码)
- 一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
3. 使用码云管理Java代码
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

4. PTA实验
题目集:jmu-Java-02-Java基本语法 中的判断、选择、编程(8道)
实验种碰到的问题、思考、收获与解决方案
(1)PTA实验 5-1 jmu-Java-02基本语法-01:fib(int n);可用多种方法解决(递归函数、循环等);从算法的时间复杂度考虑,我选择了用循环输出的方式
public static void fib(int n){
int a=0;int b=1;
//System.out.print(a+" ");
for(int i=1;i<=n;i++){
if(i==1)System.out.print(b+" ");
else {
System.out.print(a+b+" ");
if(a>b)b=a+b;
else a=a+b;
}
}
}
(2)Arrays.sort()的用法;java中sort方法采用的多为递增方式,采用逆位输出可以得到递减序列
(3)search方法:发现PTA上的题目有些细节问题,由于在search之前先有sort 方法建立起来的数组,所以可以进行查找,若跳过sort直接search,则无法进行正确的查找。(关于search,如果数组中出现多个相同的数,是否应该有多个返回值?)
戴建钊 201521123023《Java程序设计》第2周学习总结的更多相关文章
- 2018-03-11 20165235祁瑛《Java程序设计》第二周学习总结
2018-03-11 20165235祁瑛<Java程序设计>第二周学习总结 教材学习内容总结 第二章要点: 在这一章中我学到了很多东西: (1)布尔类型boolean,布尔类型的赋值只能 ...
- # 20175227 2018-2019-2 《Java程序设计》第一周学习总结
20175227 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 1.安装VB,Ubuntu,Git,JDK,并自行配置. 2.写"Hello Wo ...
- 20155326刘美岑 2016-2017-2 《Java程序设计》第二周学习总结
20155326刘美岑 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 教材第三章主要讲解的是基础语法,主要包括认识类型与变量.学习运算符的基本使用.了解类型 ...
- 20155201 2016-2017-2 《Java程序设计》第九周学习总结
20155201 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC全名JavaDataBaseConnecticity,是Jav ...
- 20155319 2016-2017-2 《Java程序设计》第一周学习总结
20155319 2016-2007-2 <Java程序设计>第一周学习总结 考核方式 翻转课堂考核12次(5*12=60):每次考试20-30道题目,考试成绩规格化成5分(如总分20分就 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
随机推荐
- Hibernate(三)
1.1Hibernate的检索方式 1.1.1Hibernate的检索方式概述 Hibernate提供了以下几种检索对象的方式: 导航对象图检索方式:根据已经家就在的对象导航到其他对象. Custom ...
- 项目管理利器---Maven
Maven快速入门 maven介绍 maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和软件的项目管理工具.简单来说,maven可以帮助我们更有效的管理项目,也是一套 ...
- webgl自学笔记——矩阵变换
这章主要探讨矩阵,这些矩阵代表了应用在我们场景上的变换,允许我们移动物体.然而在webGL api中并没有一个专门的camera对象,只有矩阵.好消息是使用矩阵来取代相机对象能让webgl在很多复杂动 ...
- 理解JavaScript的立即调用函数表达式(IIFE)
首先这是js的一种函数调用写法,叫立即执行函数表达式(IIFE,即immediately-invoked function expression).顾名思义IIFE可以让你的函数立即得到执行(废话). ...
- tomcat调优的几个方面(转)
tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复 ...
- Win7电脑桌面的Administrator图标没了怎么办
Win7电脑桌面的Administrator图标没了怎么办.. win7电脑桌面的Administrator图标没了,怎么办?在桌面空白处右键选择个性化,进入个性化之后,左边栏选择“更改桌面图标”勾选 ...
- 转每天一个linux命令(3):pwd命令
Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文 ...
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
- appium的webdriver执行swipe
# convenience method added to Appium (NOT Selenium 3) def swipe(self, start_x, start_y, end_x, end_y ...
- NCS8801S芯片RGB/LVDS转EDP功能简介
NCS8801S RGB/LVDS-to-eDP Converter (1/2/4-lane eDP) Features --Embedded-DisplayPort (eDP) Output 1/2 ...