201621123068 Week02-Java基本语法与类库

时间:2022-09-06 16:23:52

1. 本周学习总结

1.1

  • 当浮点数和整数放到一起运算时,java一般会将整数转化为浮点数然后进行浮点数计算,但是这样得出的结果通常与数学运算有一定误差,浮点数精确计算需要使用BigDecimal类

    1.2 基本数据类型和引用数据类型

  • 基本数据类型有一种简单数据组成,数据不可分割,存放数据本身的内容

    引用数据类型用于存放数据地址
  • 每种基本数据类型都有相对的引用数据类型对应,作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
  • 分清数据类型,明确自动装箱和自动拆箱操作

    1.3 ==与equals

  • ==用于比较引用和比较基本数据类型时具有不同的功能:

    比较基本数据类型,如果两个值相同,则结果为true

    而在比较引用时,如果引用指向内存中的同一对象,结果为true
  • equals用于比较两个应该类型变量的引用和内容

    1.4 数组

  • 一维数组使用new分配内存空间,按照数组类型为每个数组元素建立默认值
  • 多维数组中不规则的多维数组从高维开始分别为每一维分配空间
  • 一维数组与多维数组确定之后就无法改变,要动态改变需要使用动态数组ArrayList

    2. 书面作业

    String-使用Eclipse关联jdk源代码

    1.1 查看String对象的源代码(截图),分析String使用什么来存储字符串?

    201621123068 Week02-Java基本语法与类库

  • String使用字符数组来存储字符串

    1.2 分析其构造函数public String(char value[])的作用?

    用来传入char数组,生成String的字符串对象。

    例:<char[] v = new char[2];>//定义一个char数组

    <v[0] = 'a';>//赋值字符a

    <v[1] = 'b';>//赋值字符b

    <String str = new String(v);>//通过char数组,构造String对象str,

    最终结果是ab

    1.3 阅读public String replace(char oldChar, char newChar)方法的代码,回答String的不可变性在该函数中如何体现?(重点)

    oldChar和newchar改变时会产生和原来长度的字符串,当replace改变字符时,不会改变原来的字符串,而是产生新的字符串

    1.4 简述String与字符数组的关系,使用字符数组就可以处理字符串,为什么还需要String呢?

    String字符串不可以改变内容,字符数组可以改变内容,String本质上属于字符数组,但是String相较于字符数组更加方便。

    StringBuilder

    2.1 结合PTA -2(StringBuilder) ,说明为什么频繁修改字符串时,应该使用StringBuilder而不是String?

    区别在于String类的方法是单线程、安全的,而StringBuilder多线程不是线程安全的,相比而言,StringBuilder类会快一点。对于经常要改变值的字符串应该使用StringBuilder类。 就速度而言 StringBuilder > StringBuffer>String

    2.2 阅读jdk文档,查询<StringBuilder的append(char[] str)>方法功能是什么?试分析StringBuilder内部使用什么来存放字符?调用<StringBuilder的append(char[] str)>方法时,是如何实现添加字符的操作?

  • <StringBuilder的append(char[] str)>的方法功能是:将 char 数组参数的字符串表示形式追加到此序列
  • StringBuilder

    被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候

  • 调用<StringBuilder的append(char[] str)>实现添加字符

    201621123068 Week02-Java基本语法与类库

    201621123068 Week02-Java基本语法与类库

    字符串与字符串池

    3.1 尝试使用字符串池的概念解释如下程序段输出结果,并回答这段代码创建了几个字符串对象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

  • 首先字符串“str1”在字符串池中建立对象“hi”,然后在建立“str2”时进入字符串池判断已经存在“hi”这个对象,则直接把“hi”这个对象的地址引用给“str2”。此时“str1”和“str2”指向池中的同一个对象,所以判断(str1==str2)的结果为true。
  • 建立“str3”字符串时,在字符串池中查找有没有"hi"这个字符串对象,如果有,则不在池中再去创建"hi"这个对象了,直接在堆中创建一个"hi"字符串对象,然后将堆中的这个"hi"对象的地址返回赋给引用str3,这样,str3就指向了堆中创建的这个"hi"字符串对象。即此时str3与str1、str2指向的对象不同。
  • 进行str3与str1、str2的比较

    201621123068 Week02-Java基本语法与类库

    201621123068 Week02-Java基本语法与类库

    3.2 重点:对基本类型我们可以使用==比较两个值是否相等,对于引用类型(如String, Integer、数组等)为什么不能使用==比较?应该怎样比较他们的值是否相等呢?

  • 因为String, Integer、数组都是指向存放地址,并不直接指向对象内容,不同的String, Integer、数组即使内容相同,存放地址也不同,所以不能直接用“==”来比较。
  • String使用equals函数来比较内容<System.out.println(str1 equals (str2))>
  • Integer先将Integer转为int类型,再比较
  • 数组使用<Arrays.equals(arr1,arr2 )>命令

    Wrapper(包装类)

    4.1< Integer i = 100;>//100是基本类型,i是引用类型,为什么可以将100赋值给i?<Integer x = 100; int y = x+1;x++;>这一串命令中包含了些什么操作?

  • 该指令包含自动拆箱,将Integer类型的值取出来赋值给int基本类型。即题中的Integer i=100则可以理解成:<int i=100;>``<Integer i = new Integer(100);>所以可以将100赋值给i。
  • Integer是int的包装类,x为integer型,y为int型,<Integer x = 100; >自动装箱 <int y = x+1;>自动拆箱 <x++;>先拆箱再装箱

    4.2 Java为什么有了基本数据类型,还需要其包装类呢?包装类能给我们带来什么好处呢?

    1.作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

    2.包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

    实验总结

    5.1 结对编程实践

    队友:吴雅思、谢晗

    讨论题目:jmu-Java-02基本语法-02-StringBuilder

    过程:没有按照题目中的过程来,我们先是讨论了题目重点,百度了资料后有个初步的方向,然后两个人独立完成,写不出来的地方挑出来让对方看看。

    感受:我觉得这个方式还可以,在了解了解题结构后,独立去完善细节,共同学习资料,讨论问题,感觉解题时更快一点。

    201621123068 Week02-Java基本语法与类库

    5.2 PTA-1综合小测验

  • 主要是一些简单的函数以及使用字符串常用操作,运用了递归完成斐波那契数列,可更加便捷完成该函数
  • 在search中进行搜索,要提前在循环外定义好一个数组,用于存储sort的值
  • <Array.toString()>可以对数组内的数进行输出
  • 截取身份证的出生年月要使用了<str.substring()>截取。

    5.3 PTA-3身份证排序。并回答:使用sort2方法进行排序可以对出生年月日进行升序排序,如果现在有需要对其进行降序排序,或者按照其中的出生月份排序,怎么解决呢?

  • sort1用substring截取身份证年月日后,转换格式,使用Arrays.sort()函数进行排序输出
  • sort2中因为排序后要输出全部身份证码,因此用冒泡法进行排序。
  • 降序排序时提取出月份后,同样使用冒泡法,对截取的字符串排序,交换字符串的位置,循环输出

    5.4 PTA-4动态数组

    这题主要考察不规则二维数组。可用for循环嵌套,用<Arrays.deepToString>打印数组,输出格式要求高,弄了很久还是不行,准备明天求助大佬

    5.5 (重点:小测题目)PTA-8 ArrayList入门。并回答:为什么有了数组还要使用ArrayList?

    此题为一些比较基本的ArrayList 操作,ArrayList可以动态的增加或删除数组内的元素,添加<strList.add(ss);>,删除<strList.remove(0)>,查询是否有所求的元素<(strList.contains(a))>,替换元素<strList.set(1,b);>

    5.5 选做

  • 5-5(浮点数计算),

    本题主要运用BigDecimal类,导入<import java.math.BigDecimal;>,创建<BigDecimal d = new BigDecimal(b);> 及函数 <a.add(d)> 进行精确计算

    选做:公交卡里应该还有多少钱?请分析原因

    201621123068 Week02-Java基本语法与类库

    数据处理时没考虑到负数情况,应该是欠费了-0.2

    大概是这样:4294967276 转成 16进制 是[FFFFFFEC],所以是-0.20,处理数据用了unsigned int无符号整型,数据单位是分,可能是因为没有考虑到负数的情况,也或许是因为卡片初始化错误。

    3. 码云及PTA

    3.1. 码云代码提交记录

    git始终弄不行,打算没弄好之前都这样直接上传代码好了

    201621123068 Week02-Java基本语法与类库

    有一些在pta.上没运行成功的就还没上传,等成功了再传

    3.2 截图题集“Java基本语法”PTA提交列表

    201621123068 Week02-Java基本语法与类库

    201621123068 Week02-Java基本语法与类库

    3.3 使用老师发的jar程序统计每周的代码量

    201621123068 Week02-Java基本语法与类库

行数 新增行数 文件数 新增文件数
625 625 99 99

201621123068 Week02-Java基本语法与类库的更多相关文章

  1. 第2周作业-Java基本语法与类库&lpar;20170227-20170304&rpar;

    本周学习总结 (1)这周学习认识和熟悉了java的一些类型和变量: (2)学习了java的运算符基本使用方法: (3)了解了如何建立远程仓库和本地仓库,和如何让java代码在临时储存,本地仓库和远程仓 ...

  2. Java第2次实验提纲&lpar;Java基本语法与类库&rpar;

    1. 使用Git克隆(clone)项目到你的Eclipse项目中 见以下参考资料中的3 从码云将项目clone到你的电脑 重要提示: 使用Git来管理你的代码以后,当你在本机Eclipse项目中开始编 ...

  3. Java第02次实验提纲&lpar;Java基本语法与类库&rpar;

    1. 熟悉Git 1.1 学会使用网页版的操作代码仓库(gitee) 申请账号,然后根据老师提供的链接或者二维码加入团队,然后修改昵称. fork老师提供的代码库项目,新建自己学号命名的文件并上传一些 ...

  4. 第2周作业-Java基本语法与类库

    1. 本周学习总结 答:① 定义流程控制的各种条件式是同以前学习的一样,要善于运用快捷键.(例如`a/t` + `/` ) ② 熟悉输入输出的使用,注意输入的变量类型使用相应的输入类. ③ 数组对象: ...

  5. 201521123044 《Java程序设计》第2周作业-Java基本语法与类库

    1. 本章学习总结 ·1.浮点型的不精确,不能简单的像C语言一样用float或者double来定义.在java中有更精确的BigDecimal类. 举例:BigDecimal bd1= new Big ...

  6. 201521123053 &lt&semi;&lt&semi;Java基本语法与类库&gt&semi;&gt&semi;第二周

    1.本周学习总结 这是第二周学习了,还是感觉吃力,慢慢来吧 .知识总是一点一点进到脑子里,虽然头小,但总会进来不是! 知识储备:   A.整形变量按照长度分为byte.short.int.long. ...

  7. &lbrack;转&rsqb;深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)

    以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...

  8. Java 的 JSON 开源类库选择比较(zz)

    在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April  ...

  9. java正则表达式语法详解及其使用代码实例

    原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. ...

随机推荐

  1. web前端学习部落22群分享给需要前端练手项目

    前端学习还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,就整理了一些前端项目教程, ...

  2. 如何获得DataGrid中某行某列的对象

    假如某行是 Xm_struct x = this.Brow.SelectedItem as Xm_struct;则下面分别是第5和第七列的对象 TextBlock Ddjs = this.Brow.C ...

  3. July 2nd&comma; Week 27th Saturday&comma; 2016

    The beauty of the journey is found in the scenery along the way. 旅行之美在于沿途所见的风景. I remember that ther ...

  4. poj 1470 Closest Common Ancestors LCA

    题目链接:http://poj.org/problem?id=1470 Write a program that takes as input a rooted tree and a list of ...

  5. &lbrack;置顶&rsqb; 程序员必知&lpar;二&rpar;:位图&lpar;bitmap&rpar;

    位图是什么? 位图就是数组,一般来说是bit型的数组,具有快速定位某个值的功能,这种思想有很广泛的应用,比如下边两题: 1 找出一个不在5TB个整数中存在的数 假设整数是32位的,总共有4GB个数,我 ...

  6. 《Java I&sol;O 从0到1》 - 第Ⅱ滴血 &OpenCurlyDoubleQuote;流”

    前言 <Java I/O 从0到1>系列上一章节,介绍了File 类,这一章节介绍的是IO的核心 输入输出.I/O类库常使用流这个抽象概念.代表任何有能力产出数据的数据源对象或者是有能力接 ...

  7. 搭建基于Docker社区版的Kubernetes本地集群

    Kubernetes的本地集群搭建是一件颇费苦心的活,网上有各种参考资源,由于版本和容器的不断发展,搭建的方式也是各不相同,这里基于Docker CE的18.09.0版本,在Mac OS.Win10下 ...

  8. Linux基础知识梳理

    Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和*传播的类Unix操作系统,是 ...

  9. mac &sol;linux vi&sol;vim永久显示行号开启高亮模式

    临时显示:进入vi编辑器,输入命令 :set number     //下次在进入vi 无法显示行号 :set nonumber  //本次vi关闭行号显示 vi 每次修改后推荐使用命令: sourc ...

  10. IPC&dollar;概念及入侵方式研究

    catalogue . 什么是IPC$ . IPC$攻击方式 . 漏洞检测与防御措施 1. 什么是IPC$ IPC$(空会话连接)是windows系统内置的一个功能模块,它的作用有很多(包括域帐号枚举 ...