201521123072《Java程序》第二周总结
201521123072《Java程序》第二周总结
标签(空格分隔): Java学习
1,本周小结
1,字符串的使用,
(字符串变量作为对象来处理),所以字符串相等就要用到equals()方法,
学会了字符串的拼接(两种方法),截取,
字符串池的理解
Java运行环境有一个字符串池,由String类维护。执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
【对于字符串中堆,栈的理解】http://jingyan.baidu.com/article/546ae18566c6ce1149f28c36.html
2,枚举类型
3.一些常用的数学函数
4,Scanner扫描器的用法,对文件的读写
5,图形界面的构造
2. 书面作业
- 使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。



String类的源代码
将string转换成动态数组进行操作
- 为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?
因为String 对象是不可改变的。每次使用String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间,所以在需要对字符串执行重复修改的情况下,创建新的String对象相关的系统开销会很大。所以如果要修改字符串而不创建新的对象,则使用StringBuilder 类
- 比较两个字符串的值是否相等?为什么不能用==直接进行比较?
因为字符串变量是作为对象来处理的,只能用equals()来比较字符串中的内容是否相等,用来比较对象是否相等
例如有如下定义:
String a="student";
String b="student";
执行a时会首先检查字符串池中是否存在“student”,如果有则直接赋给a,如果没有则在字符串池中创建一个"student",然后再赋给a,当执行到b时,检查字符串池已经存在了"student",因此直接赋给b,此时a与b指向同一个对象,直接用其实是在比较两个对象是否相等
又例:
String a=new String("student");
String b=new String("student");
而执行String a=new String("student")时,不管字符串池中有没有"student",都会在堆中新建一个字符串对象然后将其赋给a引用,所以其上a,b的值虽然相同,但是却是指向不同的对象
- 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:
String str1 =“hi“, str2=“hi“;
String str3 = new String(str1)
System.out.println(str1==str2);
输出为true ,创建了两个对象,
解释:执行String str1时因为在字符串池中没有hi, 所以字符串池中创建一个"hi",然后再赋给str,执行str2时,因为字符串池中已经有了“hi”,所以直接将“hi”赋值给str2,此时只创建了一个对象,所以str==str2,结果输出为ture,而在执行String str3 = new String(str1)时,不管字符串池中有没有"hi",都会在堆中新建一个字符串对象然后将其赋给str3引用, 所以总共创建了两个对象
- Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i
Integer类是打包器,将基本类型打包在对象之中,这样就可以操作这个对象,就像是将基本类型当做对象操作
其上为自动装箱功能,自动装箱后可自动拆箱,int会参考至integer,若被指定给int的变量i,则会自动取的打包的int类型再指定给i,
在JDK上, 编译程序时会自动将程序代码展开为:
Integer localInteger=Integer.valueof(100);
- 尝试分析下面代码输出结果
Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true of false
第一次为ture,第二为flase
在Integer.valuof()建立Integer实例时,valueof()的操作内容如下:
IntegerCache.low的默认值为-128,IntegerCache.high的默认值为127,所以Integer.valueof()就会针对-128~127的范围中建立打包器进行快速存取,执行Integer i1 = 127时,因为其值在-128~127的范围中,所以会从缓存中传回Integer实例,当执行Integer i2 = 127时,要打包的同样是127,也是从缓存中传回Integer实例,所以会参考到同一个Integer实例,,使用比较就会是true
因为128没有在范围内,所以直接建立Integer实例,第二次执行Integer i2 = 128也是直接建立Integer实例,使用比较就会是flase
- 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目录下的
通过Main找到字节码文件,再将字节码文件进行运行
- 自己在这门课的目标与计划,
1,请描述一下你的技术基础(会什么语言,都写了多少行代码)
会C语言,了解了一点C++,写了挺多了的,用行来计算应该计算不清楚了
2,一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?
各个课程合理分配,一周写多少代码和我在这一周是否有多少时间是紧密相关的,有空闲的时间都会好好练习Java,学的方式的话当然是实践和理论相结合,光看课本是远远不够的,重在自己实践。遇到困难,先自己冷静思考一下,看书,思考不出来再百度,百度不出来问询问。
3,关于这门课的smart目标参考链接
对于这门课程的目标,是熟练掌握,想做出很完美的图形界面,结合课外,做好科研立项。
3. 使用码云管理Java代码
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

4. PTA实验
题目集:jmu-Java-02-Java基本语法 中的判断、选择、编程(8道)
- 2.实验二:
字符串的拼接:
方法一:String str=0.5+"ahhh";
方法二:用要大量使用重复性连接的话,要使用StringBuilder
例:
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 100_00000; i++) {
stringBuilder.append(i);
}
其中还有关于字符串的截取:
String str;
str.substring(x,y)(从x 开始,到y 之前结束)
- 实验三:
其中涉及到字符串的比较问题
若有两个字符串:
String str1 = new String(“hi“);
String str2 = new String(“hi“);
str1==str2;是判断其两个对象是否是一样的
str1.equals(“hi”);则是判断 str所指向的字符串是否等于 “hi”
不区分大小写进行比较,用:"abc".equalsIgnoreCase(ABC);
- 实验四:
将整数转换成字符串: String.valueOf( int a);
使用Arrays.deepToString 打印二维数组中的内容,可以将内嵌的数组打印出来
String.format();的用法
String temp=String.format("%-7s", arry[i][j-1]);
"-"表示向左对齐,输出的arry[i][j-1]总共占七位
"+"表示向右对齐
- 实验五
因为浮点数的不精确性(其遵守IEEE754浮点数运算规范),使用分数与指数来表示浮点数,所以在进行浮点数运算时,引进BigDecimal方法,
其提供
plus(),substract(),此为课本上的(MyEclipse中的方法为:add(),subtract)
multiplay(),divide(),
【BigDecimal】(http://baike.so.com/doc/6988815-7211667.html)
201521123072《Java程序》第二周总结的更多相关文章
- 2017面向对象程序设计(Java)第二周学习总结
2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...
- 2017-2018-1 JAVA实验站 第二周作业
2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结
丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- Java学习第二周学习笔记
20145307<Java程序设计>第二周学习总结 教材学习内容总结 Java语言中的很多基本语法都和C语言类似,以下Java中的基本语法 标识符 标识符是程序中自定义的一些名称. 由26 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第二周
学习第二周(Java基本程序设计结构) 这一周,着重学习了Java的简单程序设计实现及运行,通过自己操作,发现Java的程序语法大面 ...
- 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...
- 2017-2018-1 Java演绎法 第二周 作业
团队任务:讨论Android上的游戏软件 参考现代软件工程 第一章 [概论]练习与讨论: 软件有很多种,也有各种分类办法,本次团队任务是讨论选取Android上的一个游戏软件,考虑到每位组员接触的游戏 ...
- 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...
- JAVA语言 第二周
放假第二周了,时间真快! 上一周配置好了环境变量,这一周就可以做一些测试了.对不同的内容分类进行了测试,包括写入.输出.变量·······还有很多.对于开学的试卷,在第一部分做的还行,第二部分就没什么 ...
随机推荐
- Oracle数据库 拾漏补缺
select语句的基本使用 可以查询需要的列,行,可以进行多表链接,连接查询. from p_emp e select 后面跟的是要显示的结果,可以是通过运算或者连接符号得出的伪列 null 空值 ...
- MySQL中的数据类型及创建
MySQL创建: 1.创建数据库create database test2; 2.删除数据库drop database test2;3.创建表create table ceshi( ids in ...
- webpack教程(四)——css的加载
首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css- ...
- Linux工具参考篇(网摘)
Linux工具参考篇 原文出处:[Linux Tools Quick Tutorial] 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆文件 4. ps 进程查看器 5. ...
- 设计模式之Iterator模式
STL里的iterator就是应用了iterator模式. 一.什么是迭代模式 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator按顺 ...
- HDU 6153 拓展KMP (2017CCPC)
A Secret Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 256000/256000 K (Java/Others)Total ...
- Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scra ...
- 【物联网云端对接-4】通过MQTT协议与百度云进行云端通信
百度云的天工物联网服务目前包括:物接入.物解析.物管理.时序数据库和规则引擎等5大部分,本篇文章仅介绍物接入. 天工物联网的物接入,从开发者的角度来说相对有些复杂,需要多步操作才能实现一个云设备的创建 ...
- Nodejs 复制文件/文件夹
1.使用fs复制文件 使用fs对象的readFileSync,writeFileSync方法进行读写操作复制 cp.js function copyIt(from, to) { fs.writeFil ...
- 腾讯织云:DevOps 流水线应用平台践行之路
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:梁定安,腾讯织云负责人,目前就职于腾讯社交网络运营部,任运维技术总监,开放运维联盟委员,腾讯云布道师,腾讯课堂运维讲师,EXIN D ...
