Java核心技术Ⅰ笔记

  • 不要编写返回可变对象的访问器方法(P113)

class Employee{
     private Date date;
     public Date getDate(){
          ...
          return date;
     }
}

我们获取Date对象之后就可以修改date域的内容:
Date getDate = employeeObject.getDate(); //引用了同一个对象
getDate.setTime(xxx);

应用场景:private私有域,可变对象
解决方法:clone出一个对象副本(完全独立),返回副本。

  • final实例域(P115)
final修饰符大都修饰基本类型,或者不可变的类(类中的每个方法都不会改变其对象,如String)。
例如:private final Date hiredate;
意味着存储在hiredate变量中的对象引用在 对象构造之后(即可以在构造函数中指向一个对象,然后不改变引用(事实上也不能))就不能被改变,而不意味着hiredate对象是个常量。任何方法都可以对 hiredate引用的对象调用 setTime方法。

  • Java方法参数使用(P123)
一个方法不能够修改基本数据类型的参数(数值型和布尔型)
一个方法可以改变对象参数的状态
一个方法不能让对象参数引用一个新的对象
注: 知乎-java到底是值传递还是引用传递(印象笔记也有保存)

  • 重载
overloading 多个方法有相同的名字,不同的参数便产生了重载。

  • 初始化
P131
(1) 所有数据域被初始化为默认值(0,false,null)
(2) 按照在类声明中出现的次序,依次执行域初始化语句和初始化块
(3) 如果构造器第一行调用了第二个构造器,则执行第二个构造主体
(4) 执行这个构造器的主体


P149
父类的静态代码块,静态变量(java虚拟机加载时执行,只执行一次)
子类的静态代码块,静态变量(java虚拟机加载时执行,只执行一次)
父类的属性对象(成员变量),父类的普通代码块(按写的顺序执行 new一次,执行一次)
父类的构造函数(new一次,执行一次 )
子类的属性对象 (成员变量) ,子类的普通代码块 (按写的顺序执行 new一次,执行一次 )
子类的构造函数(new一次,执行一次 )

  • 修饰符
  当前类 同一个包 子类 其他包
public
protected  
默认(无修饰符)    
private      


  • 多态和动态绑定
多态:一个对象变量可以只是多种实际的数据类型的现象(父类的引用指向子类的对象,调用方法会调用子类的实现,而不是父类的实现;多态与方法覆盖有关,与方法重载无关)
允许不同的类对象对同一个消息做出相应。
三个必要条件:有继承;有重写;父类引用指向子类对象
动态绑定:运行时能够自动地选择调用哪个方法的现象


  • 继承
P153
如果子类的构造器没有显式地调用超类的构造器,则将自动调用超类默认(没有参数)的构造器。如果超类没有不带参数的构造器,并且在子类的构造器中有没有显式地调用超类的其他构造器,则Java编译器将报错。
调用构造器的语句只能作为另一个构造器的第一条语句出现。(无论是super还是this调用)

  • 集合
public interface Collection<E>{
     boolean add(E e);
     Iterator<E> iterator();
}

经典写法:
Collection<String> c =...;
Iterator<String> iter = c.iterator();
while(iter.hasNext()){
     String element = iter.next();
     //do sth with element
}

for each 写法
for(String element : c){
     //do sth with element
}


Map结尾的实现Map接口,其他结尾的实现Collection接口

ArrayList      动态增长和缩减的索引序列
LinkedList      插入删除高效的有序序列
ArrayDeque  
HashSet      没有重复元素无序集
TreeSet      有序集 继承自SortedTree
EnumSet  
LinkedHashSet  
priorityQueue  
HashMap      存储键值关联的映射表
TreeMap      键值有序排列的映射表
LinkedHashMap  
WeakHashMap  
IdentityHashMap  



  • Comparator 和 Comparable 比较
Comparable 是排序接口
若一个类实现了Comparable接口,就意味着“ 该类支持排序”。  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。
此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。

Comparator 是比较器接口。
我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个“该类的比较器”来进行排序。这个“比较器”只需要实现Comparator接口即可。
也就是说,我们可以通过“ 实现Comparator类来新建一个比较器”,然后通过该比较器对类进行排序。
Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”。
而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
不难发现:Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园短期闲置资源置换平台是一种创新的在线服务系统,旨在促进校园内学生、教职工以及其他成员之间的资源共享和有效利用。通过这个平台,用户可以发布、查找并交换他们暂时不使用的资源,从而实现资源的最大化利用,减少浪费,并促进校园内的可持续生活方式。以下是该平台可能包含的一些关键特性: 1. **用户注册和认证**:用户需要通过校园身份验证进行注册,确保平台的使用者都是校园社区的成员。 2. **资源发布**:用户可以发布他们愿意短期出借或交换的资源,如书籍、运动器材、电子产品、家具等。 3. **资源搜索和筛选**:用户可以根据资源类型、状态、可用时间等条件搜索和筛选所需的资源。 4. **在线预订系统**:用户可以通过平台预订所需的资源,并约定取用和归还的时间和地点。 5. **评价和信誉系统**:用户可以对交易的对方进行评价,建立信誉体系,增加用户间的信任。 6. **即时通讯功能**:平台内置即时通讯工具,方便用户就资源交换的细节进行沟通。 7. **安全和隐私保护**:确保用户的个人信息和交易记录的安全,保护用户的隐私。 8. **移动应用支持**:开发移动应用程序,使用户能够随时随地访问平台,进行资源的发布和搜索。 9. **教育资源置换**:特别为教师和研究人员提供教育资源的置换服务,如实验材料、研究工具等。 10. **活动和研讨会空间**:平台还可以用于发布和预订校园内临时活动或研讨会所需的空间。 11. **环保意识提升**:通过平台的推广和使用,增强校园社区成员的环保意识和资源节约意识。 12. **数据分析和报告**:平台可以收集和分析资源使用数据,为校园管理层提供资源利用和需求的洞察,以优化资源配置。 校园短期闲置资源置换平台通过提供一个便捷、高效和安全的在线环境,鼓励校园成员参与资源共享,不仅能够促进资源的合理分配和循环利用,还能增强社区的凝聚力和互助精神。随着共享经济理念的普及,这样的平台在校园中的推广和应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值