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语言 第二周
放假第二周了,时间真快! 上一周配置好了环境变量,这一周就可以做一些测试了.对不同的内容分类进行了测试,包括写入.输出.变量·······还有很多.对于开学的试卷,在第一部分做的还行,第二部分就没什么 ...
随机推荐
- hdu 6121---Build a tree(深搜+思维)
题目链接 Problem Description HazelFan wants to build a rooted tree. The tree has n nodes labeled 0 to n− ...
- 单词方阵 洛谷 P1101
题目描述 给一nXn的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间 ...
- HTML5 — Wed Storage简单示例
一.Wed Storage 概述 Wed Storage功能:在Wed上储存数据的功能,这里的储存是针对客户端本地而言的. 具体分为两种: sessionStorage,将数据保存在session对象 ...
- QtWebEngine加载资料缓慢
最近由于项目需要(另外Qt后续版本也将不再支持QtWebKit),把Qt工程涉及QtWebKit的移植为QtWebEngine,用的Qt版本为5.5.0,结果出现QWebEngineView加载网页是 ...
- asp.net core 运用 Redis 配置步骤
Redis可以用来存储session或直接存储键值对 首先要有asp.net core的项目,可以是webapi 或者MVC项目,还有有本地的Redis或者在远程服务器上,具体的安装就不讲述了 以下是 ...
- koa2 controller中实现类似sleep的延迟功能
今天有同事问我如何在koa2中的controller中使用延迟执行的功能,他直接在controller中使用setTimeout,但是没效果. 错误的代码类似下面这样: // 错误的方法 export ...
- 【可视化】div背景半透明
css实现元素半透明使用 opacity:0.x 实现背景色半透明:rgba(a,b,c,x); x为透明度0,到1
- matplotlib 填充颜色
def huitu_host(nodes,total): x = np.arange(len(nodes)) plt.figure(figsize=(9,5)) plt.xticks(x,nodes) ...
- WPF蒙板弹窗
由于界面设计需要,要给弹窗添加蒙板效果,在百度和google搜索了半天,竟然没有一个满意的方案,最后只能自己想办法实现了一个,原理还是比较简单的,现在分享给大家. 先看一下效果.. 原理其实 ...
- Thinkjs学习2—数据库的配置
以github登录认证为例,说明如何通过mvc三部分的配合,实现这个功能. 要实现的功能:首页判断用户是否登录,如果没有登录,显示登录界面,用户点击按钮进入github登录验证,并保存用户的信息,登录 ...
