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周学习总结的更多相关文章

  1. 2018-03-11 20165235祁瑛《Java程序设计》第二周学习总结

    2018-03-11 20165235祁瑛<Java程序设计>第二周学习总结 教材学习内容总结 第二章要点: 在这一章中我学到了很多东西: (1)布尔类型boolean,布尔类型的赋值只能 ...

  2. # 20175227 2018-2019-2 《Java程序设计》第一周学习总结

    20175227 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 1.安装VB,Ubuntu,Git,JDK,并自行配置. 2.写"Hello Wo ...

  3. 20155326刘美岑 2016-2017-2 《Java程序设计》第二周学习总结

    20155326刘美岑 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 教材第三章主要讲解的是基础语法,主要包括认识类型与变量.学习运算符的基本使用.了解类型 ...

  4. 20155201 2016-2017-2 《Java程序设计》第九周学习总结

    20155201 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC全名JavaDataBaseConnecticity,是Jav ...

  5. 20155319 2016-2017-2 《Java程序设计》第一周学习总结

    20155319 2016-2007-2 <Java程序设计>第一周学习总结 考核方式 翻转课堂考核12次(5*12=60):每次考试20-30道题目,考试成绩规格化成5分(如总分20分就 ...

  6. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  7. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  8. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  9. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  10. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

随机推荐

  1. python编程基础知识—列表(二)

    3操作列表 3.1 遍历整个列表 使用for循环 cars = ['bmw','audi','toyota','Jeep'] for i in cars: print(i) bmw audi toyo ...

  2. java自旋锁

    一 Test-and-Set Lock 所谓测试设置是最基本的锁,每个线程共用一把锁,进入临界区之前看没有有线程在临界区,如果没有,则进入,并上锁,如果有则等待.java实践中利用了原子的设置stat ...

  3. Fortran与C混合编程(转自Ubuntu)

    Fortran与C混合编程 由于 GNU 的 Fortran 和 C 语言二者的函数彼此可以直接相互调用,所以混合编程可以非常容易地实现.只要你足够仔细,确保函数调用时传递的参数类型正确,函数就可以在 ...

  4. CentOS 7 服务器配置--安装Redis

    #下载Redis wget -r -np -nd http://download.redis.io/releases/redis-3.2.8.tar.gz #解压文件 tar zxvf redis-3 ...

  5. offsetof的意义

    offsetof是求类的成员变量的偏移量,如果成员变量是类定义的第一个变量,那他的偏移量应该是0.但是引入继承之后,就要额外考虑了.下面的代码说明了这个问题: #define AFX_NOVTABLE ...

  6. 设计模式原则(2)--Liskov Substitution Principle(LSP)--里氏替换原则

    1.定义: 所有引用基类(父类)的地方必须能透明地使用其子类的对象.这一原则与继承紧密相关.如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的 ...

  7. TP-LINK 路由器怎么设置

    TP-LINK 路由器怎么设置... ----------------------- 1.线路连接: 没有使用路由器时,电脑直接连接宽带上网,现在使用路由器共用宽带上网,则需要用路由器来直接连接宽带. ...

  8. Javascript是单线程的深入分析(转)

    http://www.cnblogs.com/Mainz/p/3552717.html

  9. DotNetCore跨平台~Quartz热部署的福音~监控文件夹的变化

    在DotNetCore出来之后,同时也使用了quartz进行调度中心的设计,将它做到docker里方便部署,在之前的quartz版本里支持配置文件的方式,而现在不支持了,我们应该去想一下,为什么不去支 ...

  10. ID3算法(1)

    1 简述1.1    id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发.id3根据信息增益,运用自顶向下的贪心策略建立决策树.信息增益用于度量某个属性对样本集合分类的好 ...