软件构造这门课主要是用JAVA来完成实验的,但是由于之前并没有学过,所以一上来做实验就遇到了不小的挑战。所以在这里记录一下我学习java的笔记。但是这些笔记并不是系统地学习,所以可能有很多疏漏。希望不是就我一个看得懂。
类和对象
1.对象变量是对象的管理者。
类的创建里 this指的是当前对象,一些特殊用处 :this.price = price。
类中成员变量不初始化默认为0。
2.构造函数:如果有一个成员函数名字和类的名字完全相同,则在创建这个类的每一个对象的时候会自动调用这个函数——构造函数,这个函数不能有返回类型。
重载:一个类可以有多个构造函数(同名重载),他们的参数表不同。
对于构造函数:第一句话可以出现this()去调用另一个构造函数函数。
3.类中方法和成员变量的修饰符以及一些文件目录的常识:
private只能用于成员变量和函数,不能放在函数里,只有同一个类可以访问(不同对象可以访问其他对象的私有。
private的东西只可能在成员函数和成员变量初始化时使用。
public任何人都能访问。
一个.Java文件是一个编译单元,里面可以有很多类,但只能有一个public类。
不是同一个包的要引用 import 包名.类名。
类变量 static 可以通过类的名字.类变量名访问和修改,而且在所有对象里表现为同一个。
static函数是能由static函数去访问。
static变量与具体对象无关。
4.程序中一些常见的类:
1)容器类 ArrayList notes = new ArrayList。
自己有add(顺序插和中间插) size get remove toArray(数组名)——把Array里的东西填到数组里。
可以直接print(notes)。
对象数组是类的管理者
2)集合容器Set——数学上的集合,无重复元素,没顺序
3)hash表
HashMap<键类型,对应类型>
构造函数时赋值用.put() ,get得到键值对应 , containsKey(amount)判断有没有该键值,keySet()是hash表的键值集合。
hash表不可以直接遍历
遍历方法:for(Integer k:coinnames.keySet())
{
System.out.println(coinnames.get(k));
}
做实验到现在遇到的坑和小技巧
1.浮点数比较:Math.abs(a-b)< 0.000001
2.带标号的break和continue
3.for-each循环 for(int k:data)
4.比较两个字符串内容 input.equals(“xxxxx”)
5.字符串函数不能修改字符串本身
6.怎么读文件
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileName)));
7.怎么写文件
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(“XXX.txt”))));