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 ...
随机推荐
- XP oracle32位客户端安装找不到orandce11.dll.dbl
同事在XP上装oracle客户端,遇到下面的问题,mark一下. 提示找不到:orandce11.dll.dbl 点继续还会提示这个文件:orancds11.dll.dbl 网上找到解决方法: 删除注 ...
- js的call,apply,bind的使用与区别
在原生js中会有三个很常见的函数,call,apply,bind 他们的作用就是改变当前函数的this指针, 但是细微来说他们还是有不同的. 1)call,apply都是执行某一函数,发现this有变 ...
- MYSQL报错注入方法整理
1.通过floor暴错 /*数据库版本*/ SQL http://www.hackblog.cn/sql.php?id=1 and(select 1 from(select count(*),conc ...
- select、poll、epoll简介
epoll跟select都能提供多路I/O复用的解决方案.在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSIX所规定,一般操作系统均有实现 sele ...
- HttpServlet源码分析
1.HttpServlet的用法 提供了创建Http Servlet的抽象类,通过实现此类定义自己的Servlet 2.HttpServlet是否是线程安全 先说结论:HttpServlet不是线程安 ...
- jdbc电话本项目
整体思路:在登陆之后才能查看自己的电话本,电话本中包含用户名,联系人名字,电话,性别,分类: 1.登陆注册页面--数据库User表,注册登陆使用 2.电话本的前段显示,用表格和表单, 3.创建存取的电 ...
- 【Tomcat】重新獲得war包
Extract war in tomcat/webapps #!/bin/bash #----------------------------------------------- # FileNam ...
- 【Zookeeper】应用场景
配置的管理在分布式应用环境中很常见,例如同一个应用系统需要多台server运行,但是他们运行的应用系统的某些配置项是相同的,如果要修改这些相同的配置项,那么就必须同时修改每台运行这应用系统的serve ...
- 新版TP-Link无线路由器怎么设置
TP-Link路由器的设置和无线WIFI的设置.. -------------- 一.准备工作: 1.首先是路由器的安装,将路由器电源接上,并通电,然后网线的连接.如果是拨号上网用户,请将猫引出的网线 ...
- Nuget安装nupkg文件
问题描述: VS出现故障不能使用Manage NuGet Package自动下载安装DLL 解决方案: 直接官网下载相关需要的DLL 在VS中使用console加载本地下载的包安装 控制台code参考 ...