1.本周学习总结

  • ①学会简单地管理原始码与位码文档(包的概念)

  • ②了解了一些新的名词,如:完全限定(吻合)名

  • ③String类相关

  • ④in.nextInt(),in.next(),in.nextLine()使用注意事项

    在做PTA第一题的过程中,因为这三者问题,导致bug出现(如,多输出一个exit,错误地输入)参考jdk文档并做了测试之后,理清这三者的用法。

    我们先来看一段代码:



    输入输出结果:

    本想输入三次,将第一个整数存在变量m,下一个字符串存在str1,下一行字符串存在str2;

    然而从结果来看,似乎跳过了in.nextLine();无法达到预期效果。

    再来看看下一个I/O例子:



    容易看出,str2储存了“ rty”,原因便是in.next()只读取了空格之前的数据,之后的in.nextLine()读取了包括空格在内的之后一整行数据。





    在in.next()之后添加一个in.nextLine()把'\n'也读取就可以达到预期输入效果了。

三者同时使用的时候in.next()与in.nextInt()只会读取空格之前的数据,之后的会由in.nextLine()读取,根据需求,有时候可以都用in.nextLine(),之后再进行类型转换。或者搞清楚程序运行步骤,理清这几个输入之间的先后关系,在合适的位置添加一个in.nextLine()也可以解决问题。

2.书面作业

  • 1.使用Eclipse关联jdk源代码(截图),并查看String对象的源代码?简单分析String对象的设计思路。





    从上图可以看出,String本质是一个final修饰的字符型数组,所以它是不可变的,推测hash就是用来保证其唯一性。

  • 2.为什么要尽量频繁的对字符串的修改操作应该是用StringBuilder而不是String?


使用String对字符串进行修改操作时,会生成新的对象(String的不可变性),如果进行大量修改的话,会生成很多无用的对象,浪费空间 ,很大程度降低了效率。而使用StringBuilder类则是对其对象本身进行操作,不会生成多余的对象,因此频繁修改字符串的情况应使用StringBuilder。
  • 3.比较两个字符串的值是否相等?为什么不能用==直接进行比较?

String str1 = "abcd";
String str2 = "abcd";
String str3 = new String("abcd");
System.out.println(str1 == str2);
System.out.println(str1 == str3);
运行结果:
true
false
使用第一条语句创建出的"abcd"会被存入String pool(字符串常量池),令str指向它。当执行第二条语句,使用String创建str2时,会先在常量池中寻找是否有"abcd",如果有,则将str2指向它;所以str1和str2的地址实际上是一样的,故用str1==str2 结果为True。但是使用new出来的String对象则是一个新的对象,不会再去常量池里面去寻找是否有一样的值。所以str1==str3结果为false。故比较两个字符串不能直接用==,它只只能比较是否是同一个对象,而是使用equal()方法。【以上共创建了2个字符串对象】
  • 5.Integer i = 100;//100是基本类型,i是引用类型,为什么可以将100赋值给i?
  Integer,Long,Byte,Float...这些都是基本类型的包裹器,Integer i = 100;相当于Integer i = new Integer(100);  

  • 6.尝试分析下面代码输出结果

Integer i1 = 127;Integer i2 = 127; ①
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128; ②
i1 == i2;//true of false
Integer的范围是-128~127故①中i1,i2均在其类型范围内,执行i1 == i2结果为true。而②中i1,i2都超过了其类型范围,会分别为他们new一个对象来储存他们,所以地址就不同,结果为false。
  • 7.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文件中。
--我们在写每个程序的时候,都会在开头package相应的包名,这就让其他程序在调用此程序中类的时候有了一个路径,而在调用其他类时import或者用完全限定名。所以我们运行程序的时候能够让其找到我们所调用的各种存在的包中的类。
  • (8)自己在这门课的目标与计划

    请描述一下你的技术基础(会什么语言,都写了多少行代码)

    一周准备花多少时间在这门课上?一周准备写多少行代码?采用怎样的学习方式?遇到困难打算怎样解决?

    关于这门课的smart目标

C,几千行吧, Python,几百行吧,VBScrpit,一百行左右吧(现在学的人少,有问题很难找到答案,所以就没再花更多时间去学)

40%左右时间/周,pta全部完成的代码量。遇到问题,问同学,问百度,问老师。开发一个安卓小游戏。

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

应该是个负数吧,采用双符号位进位导致第33位变成1?,2^32 = 4294967296...估计是机器故障,具体怎么计算得到这个值算不出来。

3. 使用码云管理Java代码

4. PTA实验及其总结


* 掌握了ArraryList的一些基本应用
* 字符串的拼接,截取等使用方法
* 动态数组的使用

5. 小任务(加分)[在规定时间内若未完成后面补上]

    现有choice.txt文件,里面包含上千行,上百题选择题。先在老师要将其中的题目转化为PTA网站的选择题。然而PTA网站上的选择题对输入格式有要求。要求如下:
题面第1行及选项行前不能有空格,题面其他行无此要求。
题面第1行结尾要包含答案字符串,内容形式@[C](2),代表该题答案为C,分值为2
PTA出题格式需符合Markdown要求,才能有良好的效果。先在要求每一行结尾一定要有2个或以上的空格。
统计:题目数量
输出:最后生成outChoice.txt,包含经过处理过的所有问题。文件第1行,代表题目数量。
提示1:使用Scanner处理输入文件, 使用PrintWriter输出文件。
提示2:题目很简单,大概50行左右,不要畏难。
进阶:可以为将来的自动出题、组卷系统做准备。

201521123076《Java程序设计》第2周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. 搭建ElasticSearch+MongoDB检索系统

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  2. bootstrap 切换页签失效的解决方法

    概述 bootstrap开发标签页时,标签页显示正常,但点击时候对应内容区域没有变化. 具体症状与解决方案 1.标签页UI出现,但点击无反应,标签页UI并未随点击进行切换 先检查bootstrap.c ...

  3. 【leetcode】260. Single Number III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  4. 运维之linux基础知识(一)

    运维之linux基础知识(一) 1.GUI:Graphic User Interface 图形用户界面 2.CLI:Command line Interface 命令行界面 3 dll:Dynamic ...

  5. 腾讯织云:DevOps 流水线应用平台践行之路

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:梁定安,腾讯织云负责人,目前就职于腾讯社交网络运营部,任运维技术总监,开放运维联盟委员,腾讯云布道师,腾讯课堂运维讲师,EXIN D ...

  6. asp.net mvc 动态编译生成Controller

    做网站后台管理系统的时候,有时我们需要根据用户的录入配置动态生成一些频道,这些频道需要用到独立的Controller,这时就需要用到运行时动态编译了.代码如下: using System.Web.Mv ...

  7. 记一次Spring aop的所遇到的问题

    由来 项目中需要实现某个订单的状态改变后然后推送给第三方的功能,由于更改状态的项目和推送的项目不是同一个项目,所以为了不改变原项目的代码,我们考虑用spring的aop来实现. 项目用的是spring ...

  8. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  9. hdu3720 Arranging Your Team

    Arranging Your Team Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  10. 迈向angularjs2系列(1):typescript指南

    typescript指南 前言 typescript是angularjs2推荐使用的脚本语言.它由微软2012年首次发布. 一.    typescript和javascript的区别 1.从遵循的规 ...