201521123013 《Java程序设计》第2周学习总结
1. 本章学习总结
1.final声明,一旦赋值不能被改变。移位运算符的应用,负数右移高位补“1”,正数右移高位补“1”。利用移位运算,按位与运算可以方便得出整数的32位二进制表示。
2.String类的重要,被final所修饰,它的对象是不可变的,对象创建后是不再对它进行修改,可以进行字符串共享,直接从字符串池中取出使用。但是频繁修改字符串的话,则会大量字符串对象,例如对字符串的拼接虽不改变原字符串,但会产生大量字符串对象,此时应使用StringBulider。
3.理解equals与“”的区别,如果比较的是字符串内容则使用equals而“”只比较是否是同一对象,只比较是否是同一地址。
4.引用型数据和基本数据 ,基本类型可以赋值给引用型。
5.for(int element:a)等价于for(int i=0;i<a.length;i++)
2. 书面作业
Q1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。



分析:String其实是基于字符数组char[]实现的,用它来存放字符串,并且有一个int型的变量hash来存放计算后的哈希值。用一个空的构造器,创建空的字符序列,使用字符串类型的对象来初始化,使用字符数组来构造String(使用Arrays类复制),然后用字节数组将字节以charsetName编码格式拷贝给value,之后再解码造成String。
Q2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?
因为String对象建立就是不可修改,所以使用String会产生大量的字符串对象。而使用StringBuilder类中的append()就可以对已有的对象进行修改,在进行大量字符串的修改操作上,append()的效率就高多了。
Q3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?
不能,“==”在基本数据类型的时候,比较的是实际的值是否相同,而在比较引用型时候,则是堆内存的地址。如果比较内容的话要用equals()比较好,它比较的是字符串的序列是否相同。
Q4.尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1);
System.out.println(str1==str2);
以上输出结果:true。“hi”存在字符串池中,str1和str2同时指向“hi”,而String str3=new String(str1);产生的“hi”并不存在字符串池中,所以str1与str2引用值一样,与str3不一样。
Q5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i
Integer是包装类(引用数字类型),而int是基本数据类型,它可以直接进行赋值。Integer是对象,要用一个引用指向这个对象。这个叫做对象的自动封箱与拆箱,相当于Integer i=Integer.valueOf(100);,在调用的时会自动拆箱,int i=intValue(100);。
6.尝试分析下面代码输出结果
Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true of false
一个字节(-128到127)的整型数在jvm启动时会加载入内存,第一次调用Integer.valueOf(),发现Integercache中并没有127,所以创建一个新对象,Integer i2=127;,Integercache中已有这个对象直接引用,所以输出结果为true。而128已经超出Integercache范围了,所以生成了新的Integer对象,i1==i2输出结果为false。
Q7.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方法
7.1 尝试用命令行进行编译并运行,截图
7.2 将生成的StringUtil.class放到d盘的lib目录下,将Main.class在d:\test目录下,尝试命令行下运行,截图。

7.3 Eclipse中源代码放在哪个目录、class文件放在哪个目录。在Eclipse项目中按一下ctrl+f11就可以直接运行Main,尝试分析背后实现的原理。
源代码放在src目录下,class文件放在bin目录下。eclipse在执行的时候直接编译,我们之前设置好了环境变量,并且eclipse环境设置为自动编译,一个class文件的组织方式是由“外部路径”和“内部路径”构成的,执行的要记住完整的类名和包名称。编译时“外部路径”默认为“output folder”的路径,“内部路径”为.java文件的包路径,按ctrl+f11运行,package中的路径和.java文件路径完全一致,所以eclipse自动根据.java文件存放路径够将完整的包路径执
行。
Q8.自己在这门课的目标与计划
◦请描述一下你的技术基础(会什么语言,都写了多少行代码)
◦一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
◦关于这门课的smart目标参考链接
c、c++语言,但是掌握的并不扎实。一周里准备每天花一半的空闲时间学习java,做到每天打一份代码。通过问老师、百度、问同学的方式来解决做java时遇到的不懂的问题。smart目标:s(具体、量化):学好java,每天打一到两篇代码,并且上相关视频网站每天看一个视频学习java; m(可以衡量):每天可以打30行代码; a(可以达到):可以自己打出一篇较难的代码; r(相关性): 在学好java的同时,也涉及其他语言的学习; t(截止日期): 希望一个月内可以打200行代码。
Q9.选做:公交卡里应该还有多少钱?请分析原因

余额为-0.2元。浮点数计算不精确,金融计算不能用浮点数。
3. PTA实验总结及码云上代码提交记录
3.1本周Commit历史截图

3.2 实验总结
学会使用了StringBuilder、BigDecimal、Arraylist,但是还不是很熟悉。实验也只会做些简单的,很经常答案错误。
201521123013 《Java程序设计》第2周学习总结的更多相关文章
- 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程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- HBase集群安装部署
0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...
- C/C++ 知识点---C语言关键字(32个)
C/C++ 知识点 1.C语言关键字(32个) <1>.基本数据类型 [5] void :声明函数无返回值或无参数,声明空类型指针 char :声明字符型变量 int :声明整形变量 fl ...
- ubuntu下动态链接库小计
只记录下具体操作代码,以后再做补充 1,gcc -Wall -fPIC -c test4.c 2,gcc -g -shared -Wl,-soname,libtests.so -o libtests. ...
- 配置Tomcat
目前有很多网站使用jsp的程序编写,所以解析jsp的程序就必须要有相关的软件来完成.Tomcat就是用来解析jsp程序的一个软件. 安装tomcat Tomcat的安装分为两个步骤:安装JDK和安装T ...
- SpringMVC入门--编写一个SpringMVC小程序
一.SpringMVC的优势 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一.Spring3.0 后全面超越 Struts2,成为最优秀的 M ...
- Could not establish trust relationship for the SSL/TLS secure channel 问题解决方法
最近在写一个跟第三方对接的数据同步服务,在本地都没有问题,今天放到生产环境测试报错: System.Net.WebException: The underlying connection was cl ...
- 【学习笔记】深入理解超时调用(setTimeout)和间歇调用(setInterval)
超时调用(setTimeout):在指定的毫秒数后调用函数或计算表达式. setTimeout(func, 1000); // func执行的函数,1000毫秒 间歇调用(setInterval):按 ...
- quartz学习笔记(一)简单入门
前言 quartz是Java编写的一款开源的任务调度开发框架,在项目开发中很多场景都可以用到,比如订单超期自动收货. 所谓程序源于生活,生活中也有很多场景可以用quartz来模拟,比如工作日早上七点起 ...
- jenkins 时区设置
背景 直接搭建好jenkins没有留意时间这块,执行job的时候发现,执行时间和服务器时间不对,需要设置时区 步骤 找到jenkins的启动配置,centos在: /etc/sysconfig/jen ...
- dede织梦如何防止被黑客入侵渗透?
dede精简设置篇:避免被hack注射挂马 精简设置篇:不需要的功能统统删除.比如不需要会员就将member文件夹删除.删除多余组件是避免被hack注射的最佳办法.将每个目录添加空的index.htm ...