类的构造器也可以实现重载
类的继承体系结构
自动的拆装箱
写程序要考虑向后的兼容性(新特性不能滥用)
链表的实现
(用链表实现堆栈或队列都很方便)
查看jdk LinkedList源码(该实现为双向循环链表)万老师讲的是单向非循环链表:
该类内部使用了一个静态内部类Entry
,相当与今晚上课时讲的Node类
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
Entry(E element, Entry<E> next, Entry<E> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
也使用了头结点:
private transient Entry<E> header = new Entry<E>(null, null, null);
private transient int size = 0;
/**
* Constructs an empty list.
*/
public LinkedList() {
header.next = header.previous = header;
}
该实现是循环链表
,从以下代码可知:
public E getLast() {
if (size==0)
throw new NoSuchElementException();
return header.previous.element;//返回头结点前面的元素即尾节点
}
问题一:如何判断一个链表上存在环?
方法1:
用两个临时变量,步伐不一致,进行遍历列表,如果存在环,则则两个变量总会在某一时刻指向同一节点。
问题二:如何找到环的起点。
有点烦,用数学可以推出来,满足一定的关系。也是相差n圈的问题。
快速排序法很重要啊。
static关键字
static关键字用来修饰变量,方法和内部类,称这些变量,方法和内部类为静态变量,静态方法和静态内部类
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”
如果访问控制权限允许,可不必创建该类对象而直接使用类名加“.”调用
static不可用于修饰构造器
设计模式:
单例设计模式
1,将构造器设为私有,向外提供一个获取单一实例的借口。
运用double check
技术,在多线程环境下保证生成唯一的实例
private Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
2,静态初始化实例,同时将构造器设为私有,提供返回该实例的借口。
public static Singleton instance = new Singleton();
看到以下写法,不知静态内部类的用意何在?
public class Singleton {
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}
分享到:
相关推荐
这份【Java面试资料】-Java面试准备指南包含了丰富的Java知识,旨在帮助你全面、系统地复习和准备Java面试。以下是一些关键的知识点: 1. **Java基础** - 数据类型:理解基本数据类型(如int、double)和引用数据...
《剑指Offer——Java版1-10源码及解析总结》是一份针对《剑指Offer》这本书中前10个编程题目的Java实现及解析的资料合集。《剑指Offer》是许多程序员面试必备的参考书,它涵盖了大量经典的算法和数据结构问题,旨在...
6. **设计模式**:23种经典设计模式是解决问题的通用解决方案,例如单例模式、工厂模式、观察者模式、装饰器模式等。设计模式的理解和应用能体现开发者的思维层次。 7. **JVM**:Java虚拟机的内存模型、垃圾回收...
- **设计模式**:熟悉常见的设计模式,如单例、工厂、装饰器、代理、观察者等,并能在实际项目中应用。 3. **Java面试常问问题** - **JVM相关**:了解JVM内存模型,理解堆、栈、方法区等区域的划分,以及垃圾回收...
"达内javaPPT课件+java面试基础复习" 提供了一个全面学习和准备Java面试的资源包。这个资料集主要关注Java的基础知识,对于求职者或者希望提升Java技能的人来说,是一个非常宝贵的学习工具。 首先,我们来探讨Java...
17. **设计模式**:设计模式是解决常见软件设计问题的模板,如单例模式、工厂模式、观察者模式等,它们是经验的总结,有助于提高代码的可读性和可维护性。 18. **数据结构和算法**:数据结构如数组、链表、树、图等...
8. **设计模式**:面试常问到的设计模式有单例、工厂、观察者、装饰器、适配器、代理等。理解设计模式并能灵活运用,可以展现出良好的编程思维。 9. **JVM内存模型**:理解堆、栈、方法区、本地方法栈等内存区域,...
同时,可能会涵盖工厂模式、单例模式、观察者模式等常见设计模式的应用。 3. **集合框架**:包括ArrayList、LinkedList、HashSet、HashMap等容器的特性和使用场景,以及List、Set、Map接口的理解。还会涉及集合的...
对于复杂问题,可能涉及设计模式,如工厂模式、单例模式等。 4. **程序题**:编程题要求学生根据题目描述编写Java代码,这不仅测试语法知识,更注重解决问题的能力。常见的编程题目可能包括排序算法(冒泡、选择、...
14. **算法与数据结构**:虽然Java面试更侧重于实际应用,但基础的算法知识(排序、搜索、图论等)和数据结构(链表、栈、队列、树等)仍然是评估开发者能力的重要方面。 15. **最新技术趋势**:随着技术的发展,...
这份资料旨在帮助面试者系统性地复习和提升Java技能,涵盖了从基础到高级的全面内容。对于想要在Java领域深耕或准备面试的开发者来说,这些都是不容忽视的知识点。通过深入学习和实践,可以提高个人竞争力,更好地...
7. **设计模式**:熟悉常见的设计模式,如单例、工厂、装饰器、观察者、代理、适配器、建造者等,并能在实际开发中应用。 8. **JVM内存模型**:理解堆内存、栈内存、方法区、本地方法栈的划分,以及垃圾回收机制...
- 设计模式:常见的设计模式,如单例、工厂、装饰器、观察者等模式的应用。 - 枚举与接口:枚举类如何实现接口,以及枚举的特殊用法。 - Java反射:Class类的使用,动态调用方法,修改属性值等。 3. **JAVA.doc*...
Java学习笔记之大鹏JAVA终级总结,是针对Java编程语言深入学习和面试准备的一份综合资料...通过这份大鹏JAVA终级总结,初学者可以系统地学习和复习Java知识,提高面试技巧,为成为一名合格的Java开发者打下坚实的基础。
总的来说,"程序员面试之葵花宝典之JAVA编程题.doc"这份文档会是一个全面复习和提升Java编程技能的宝贵资源,涵盖了从基础到高级的各个层面,对于准备面试或自我提升的程序员来说非常有价值。通过深入理解和实践这些...
13. **算法与数据结构**:虽然不是Java语言本身的特性,但面试中常考察排序算法(冒泡、选择、插入、快速、归并等)、查找算法(二分查找、哈希查找等)以及链表、树、图等数据结构的理解和实现。 14. **Java 8及...
12. **算法和数据结构**:虽然Java面试中算法题相对较少,但基础的数据结构(如链表、队列、栈、树等)和排序、查找算法的了解是必不可少的。 13. **微服务**:随着云计算的发展,微服务架构成为热门话题,理解其...
这份资料集涵盖了广泛的Java编程和相关技术的知识点,旨在帮助求职者准备Java开发岗位的面试,同时也适用于自我提升和复习巩固。下面,我们将深入探讨其中可能涉及的重要Java知识点。 1. **Java基础** - 数据类型...
- **数据结构与算法**:了解常见数据结构(如链表、树、图)及其在Java中的实现,熟悉排序和搜索算法。 - **设计模式**:学习常见的设计模式,如单例、工厂、观察者等,提升代码质量和可维护性。 通过深入学习...