1.面向对象程序设计(简称OOP) (p87)
2.在类之间,最常见的关系有 (1)依赖:uses-a (2)聚合:has-a (3)继承:is-a (p90)
3.类库设计者决定将保存时间与给时间点命名分开。所以标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示大家熟悉的日历表示法的GregorianCalendar类。(p94)
public class TestDate {
@Test
public void test(){
Date date = new Date();
System.out.println(date.getYear()+1900);//这个已经过时 这里需要加上1900才能获得当前正确值
Calendar calendar = Calendar.getInstance();//新方法是Calendar类中
System.out.println(calendar.get(Calendar.YEAR));
}
}
4.构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。例如,
Person p = new Person("张三",25);
p.person("李四",30);
将产生编译错误。(p105)
5.总结一下在Java程序设计语言中,方法参数的使用情况: (p118)
(1)一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)。
(2)一个方法可以改变一个对象参数的状态。
(3)一个方法不能实现让对象参数引用一个新的对象。
第一个就不举例了,和第三个差不多,都是改变的局部变量
例二:
/**
* 一个方法可以改变一个对象参数的状态
*/
public class TestExchangeObjectProperty {
public void exchangeName(Person temp){
/**
* 1.temp被初始化为p1值的拷贝,这里是一个对象的引用。
* 2.exchangeName方法应用于这个对象引用。temp和p1同时引用的那个Person对象的name改变为exchangeName。
* 3.方法结束后,参数变量temp不再使用。当然,对象变量temp继续引用那个name改变为exchangeName的Person对象。
*/
temp.setName("exchangeName");
}
@Test
public void test(){
Person p1 = new Person();
p1.setName("xxc");
exchangeName(p1);
System.out.println(p1.getName());
}
}
例三:
/**
* 一个方法不能实现让对象参数引用一个新的对象
*/
public class TestExchangeObject {
public void exchangeObject(Person temp1,Person temp2){
/**
* temp1和temp2虽然拷贝了p1和p2的引用,使得temp1和p1的引用,temp2和p2的引用是一样的
* 但是temp1和temp2局部变量之间引用的交换是不会影响到p1和p2的
*/
Person temp;
temp = temp1;
temp1 = temp2;
temp2 = temp;
//虽然下面交换成功了,但是只是p1和p2的局部变量进行了交换
System.out.println(temp1.getName());//xx2
System.out.println(temp2.getName());//xx1
}
@Test
public void test(){
Person person1 = new Person();
person1.setName("xxc1");
Person person2 = new Person();
person2.setName("xxc2");
exchangeObject(person1,person2);
//上面这个方法,对p1 p2实际的值没有任何有影响
System.out.println(person1.getName());//xxc1
System.out.println(person2.getName());//xxc2
}
}
6.如果多个方法有相同的名字、不同的参数,便产生了重载。(p121)
7.要完整地描述一个方法,需要指出方法名以及参数类型。这叫方法的签名。例如,String类有4个称为indexOf的公有方法。它们的签名是 (p121)
indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)
返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。
8.需要注意的是,只能使用星号(*)导入一个包,而不能使用import. java.*或import java.*.*导入以java为前缀的所有包。(p129)