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程序》第二周总结的更多相关文章

  1. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  2. 2017-2018-1 JAVA实验站 第二周作业

    2017-2018-1 JAVA实验站 第二周作业 小组成员: 组长 20162318张泰毓 成员 20162303石亚鑫 20162304张浩林 20162307张韵琪 20162321王彪 201 ...

  3. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  4. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  5. Java学习第二周学习笔记

    20145307<Java程序设计>第二周学习总结 教材学习内容总结 Java语言中的很多基本语法都和C语言类似,以下Java中的基本语法 标识符 标识符是程序中自定义的一些名称. 由26 ...

  6. 201671010140. 2016-2017-2 《Java程序设计》java学习第二周

                                 学习第二周(Java基本程序设计结构)      这一周,着重学习了Java的简单程序设计实现及运行,通过自己操作,发现Java的程序语法大面 ...

  7. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  8. 2017-2018-1 Java演绎法 第二周 作业

    团队任务:讨论Android上的游戏软件 参考现代软件工程 第一章 [概论]练习与讨论: 软件有很多种,也有各种分类办法,本次团队任务是讨论选取Android上的一个游戏软件,考虑到每位组员接触的游戏 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. JAVA语言 第二周

    放假第二周了,时间真快! 上一周配置好了环境变量,这一周就可以做一些测试了.对不同的内容分类进行了测试,包括写入.输出.变量·······还有很多.对于开学的试卷,在第一部分做的还行,第二部分就没什么 ...

随机推荐

  1. Redis-入门笔记-15min带你一览redis

            如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!       少年入门笔记,整理出来一起入坑!入门的视屏 ...

  2. macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目

    一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...

  3. 局部加权回归LOWESS

    1. LOWESS 用kNN做平均回归: \[ \hat{f(x)} = Ave(y_i | x_i \in N_k(x)) \] 其中,\(N_k(x)\)为距离点x最近k个点组成的邻域集合(nei ...

  4. 使用VIEWER.JS进行简单的图片预览

    <script src="../res/js/viewer.min.js"></script><script type="text/java ...

  5. 关于Uncaught SyntaxError: Unexpected token o in JSON at position 1,chrome持续报错的相关解析

    今天跟大家分享我前两天遇见的一个BUG,说出来很难受,因为这个BUG花了我一个多小时去找原因,后来莫名其妙的故障消失了,强迫症犯了的我,居然花了2个多小时去故意再制造这个BUG,只想弄明白WHY??? ...

  6. 神器Vim之命令介绍

    前天晚上看casa直播项目的组件化,不仅了解了如何快速对现有项目进行组件化,以及进一步不断迭代,实现完全组件化的过程:同时,也被casa的vim技能的熟练程度所震撼.早就听说,vim是unix系统上文 ...

  7. Json-Server模拟数据接口开发

    前端开发过程中调用后台接口是常事,在前后台定义好接口规范和参数后,后台接口的进度有时会成为我们的掣肘,这里推荐使用一款简单的小工具json-server,小而轻便. 确保本地已有node环境. 一:安 ...

  8. 七牛云数据存储Demo

    利用七牛云的Python SDK实现文件上传.下载等操作. import os import requests import qiniu from qiniu import BucketManager ...

  9. PHPcms9.6.0任意文件上传漏洞直接getshell 利用教程

    对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下: 首先我们在本地搭建一个php环境,我这里是appserv或者使用phpnow (官网下载地址:http://servkit.org/) (只 ...

  10. LF模式是个坑,ZeroIce中间件让你体会这个痛

    LF模式是个坑,一个小小的失误就可能使你的网络处理瘫痪,Ice就很好地展现了出来,换句话说,Ice中间件或是LF模式就是一个坑,如果你一不小心. LF模式的官方论文中,论述了此模式用于高性能网络并发模 ...