最近在做Hit的软件构造实验,没有JAVA基础的我学起来异常吃力,好在熬了一周把四个部分做完了,本系列博客不定期连载,旨在记录一个普通计算机专业学生学习的碎碎念和应付此门课的检查。
容器
下标引用
JAVA容器与C++的很大区别是不支持直接下标引用,例如List<Integer> list=new ArrayList<Integer>
,直接使用list[i]会导致异常,必须使用list.get(i)获得第i个元素;
内部实现
JAVA没有显式的指针,但所有的对象都是通过类似指针的引用实现的,若把一个对象存入容器,存入的只是对象的引用,因此在向容器中加入对象时,一定要确保加入对象的引用不同。我在实验中有如下一段代码
for(int i=0;i<n;i++) {
Set<String> addSet=new HashSet<String>();
tempset=Extract.parseText(tweets.get(i).getText());
addSet.clear();
for(String s:tempset) {
s=s.substring(1);
addSet.add(s);
}
ret.put(tweets.get(i).getAuthor(), addSet);
}
大概意思是使用addSet向Map中添加键值对,原来的版本我的addSet在循环外面,因此导致Map中所有的value都指向addSet,后面再修改value的时候,所有的value都跟着一起改变,debug的我看得一头雾水。
时间戳
JAVA中表示时间的一种类叫做时间戳(Instant),实验中时间戳这样初始化private static final Instant d1 = Instant.parse("2016-02-17T10:00:00Z");
,但后来我修改时改成了这样private static final Instant d1 = Instant.parse("2016-03-7T10:00:00Z");
请注意日期的十位,因为我表示的天数只有一位所以我省去了十位,却导致了严重的类初始化错误,且eclipse定位不到bug,害得我上网查资料debug一个下午加上一个晚上,由此得出的教训是,使用JAVA帮你定义好的东西时一定要守规矩,它怎么写你就怎么写
Git
Git是个好东西,有了它我们再也不怕删库跑路了(滑稽),但是Git还是有一些操作要点的,下面列举一些我遇到的问题
分支冲突
当为master分支创建了一个子分支,并且子分支与master分支修改了同一文件的同一内容时,再进行merge就会发生冲突,解决冲突可以用如下面所示的命令 : cat <filename>
打开文件,然后会看到两分支分别所做的修改,此时你在此文件做的修改会同时应用到两个分支上,再进行合并就解决了冲突。
提交到远程库
提交文件时,我想先提交一个带有P1文件夹的src文件夹,然后把其他的项目P1P3P4都提交到src文件夹中,但尝试了好多方法都做不到啊,原因就在于,Git的提交方式为分支式的提交,每次提交都是一个分支,第一次提交后远程库已经存在了master分支,再提交只能创建一个子分支,所以正确的做法是,在工作空间内初始化git,追踪写的项目,完成时直接把整个项目提交,OK!