cs61b-java

coreSoul / 2024-08-28 / 原文

java

类和函数

下面两端代码定义在dog类中,所不同的是一个是静态方法,一个是非静态方法。

public static void makenoise()
{
	System.out.println("bark!");
}
public  void makethenoise()
{
	if(weight<10)
	{
	System.out.println("wuwuwu!");
	}
	eles if(weight<30)
	{
	System.out.println("bark!");
	}
	else
	{
	System.out.println("aroooo!");
	}
}

java中的静态方法,含义是所有的对象都可以使用,即可以使用类直接调用dog.makenoise(),就如同C++中的静态方法。DOG::makenoise()。静态方法不属于一个具体的对象,也不属于一个具体的类,而是属于所有能够看见静态方法的地方,因此可以在任意一个地方调用。而非静态方法,往往和类绑定,需要通过类实例化一个对象才能使用非静态方法。

cs61b上将静态方法比喻成类的蓝图,即使用抽象的方法来描述,不使用具体的狗来描述

总结一下,静态的本质在于通用和抽象。

数据类型

cs61b的homework做了很好的介绍
java的数据类型分为基本类型,包括 boolen int double char 另一种则是引用类型,一般用大驼峰命名法标注。
包括String List Sets Maps 等等。
基本类型也有对应的引用类型Boolen Integer Character Double

//List
List<String> lst = new ArrayList<>();
lst.add("zero");
lst.add("one");
lst.set(0, "zed");
System.out.println(lst.get(0));
System.out.println(lst.size());
if (lst.contains("one")) {
    System.out.println("one in lst");
}
for (String elem : lst) {
    System.out.println(elem);
}
//Set
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(1);
set.add(2);
set.remove(2);
System.out.println(set.size());
if (set.contains(1)) {
    System.out.println("1 in set");
}
for (int elem : set) {
    System.out.println(elem);
}
//map
Map<String, String> map = new HashMap<>();
map.put("hello", "hi");
map.put("hello", "goodbye");
System.out.println(map.get("hello"));
System.out.println(map.size());
if (map.containsKey("hello")) {
    System.out.println("\"hello\" in map");
}
for (String key : map.keySet()) {
    System.out.println(key);
}

java中的map和 set提供了Tree和Hash两种实现方式。