首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java核心知识点整理大全11-笔记

如果定义成abstract,那么每个模式也要去实现另一模 式下接口。不同自定义同步器争用共享资源方式不同。...JAVA 内部类 Java 中不仅可以定义变量和方法,还可以定义,这样定义在内部就被称为内部类。根 据定义方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。...泛型方法() 你可以写一个泛型方法,该方法调用时可以接收不同类型参数根据传递给泛型方法参数 类型,编译器适当地处理每一个方法调用。...因为他们接受一个或多个参数这些被称为参数参数类型。...类型擦除基本过程也比较简单,首先是找到用来替换类型参数具体。这个具体一般 是 Object。如果指定了类型参数上界的话,则使用这个上界。把代码中类型参数替换 成具体

9910

漫谈模式之享元模式

结构 享元模式基本结构如下: 这里涉及到参与者有如下几种: 抽象享元角色(Flyweight) 此角色是所有的具体享元,为这些规定出需要实现公共接口。...TeaOrder参数也可以简化成一个int类型tableNumber参数。 享元工厂 根据口味获取茶对象。...游戏客户端 Client端使用Factory来获取障碍物对象,然后使用障碍物对象方法来绘制游戏场景。由于相同类型障碍物共享相同对象,因此可以有效地减少内存占用和对象创建。...原型模式和享元模式区别 原型模式和享元模式都是为了提高系统性能和效率而设计模式,但它们应用场景和实现方式不同,需要根据具体情况进行选择。...内部状态是对象共享部分,外部状态是对象不同部分。通过将内部状态保存在共享池中,多个对象可以共享同一个内部状态,而将外部状态保存在对象属性中,每个对象可以拥有自己不同属性。

462140
您找到你想要的搜索结果了吗?
是的
没有找到

Spring系列之bean使用

class属性定义了这个 Bean 全限定名(包名+名)。Spring 能管理几乎所有的 Java 。一般情况,这个 Java 会有一个默认构造函数,用set方法设置依赖属性。...子类 Bean 会继承父 Bean 所有属性,子类 Bean 也可以覆盖父 Bean 属性。注意:子类 Bean 和父 Bean 是同一个 Java 。...二、实例化Bean三种方式 1.使用构造器实例化Bean 这是简单方式,Spring IOC容器即能使用默认空构造器也能使用有参数构造器两种方式创建Bean。...同一个HTTP session共享一个Bean,不同HTTP session使用不同Bean,该作用域仅适用于webApplicationContext环境。...request内有效,因此可以根据需要放心更改所建实例内部状态, 而其他请求中根据loginAction bean定义创建实例,将不会看到这些特定于某个请求状态变化。

55910

Java漫谈-数组

数组是Objcet,可以在数组上调用Object所有方法。 每个数组都有一个关联Class对象,与具有相同组成类型所有其他数组共享(§10.8)。...[] (3) java.io.Serializable >1 P[] 数组类型类型关系与关系不同: 根据上面(即§4.10.3),Integer[]直接类型是Number[]。...多维数组clone很浅,也就是说它只创建一个新数组。子阵列是共享。 所有成员继承自Object;唯一没有继承Object方法是它clone方法。...: 不必为需要应用每种不同类型都使用一个参数去实例化这个,并且可以将其自定义为静态。...一般而言,会发现泛型在方法边界处很有效,而在方法内部,擦除通常会使泛型变得不适用。如,不能创建泛型数组。

1.1K10

Java语言中面向对象特性总结

其中参数类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。    对于简单数据类型来说,java实现是值传递,方法接收参数值,但不能改变这些参数值。...5.方法重载   方法重载是指多个方法享有相同名字,但是这些方法参数必须不同,或者是参数个数不同,或者是参数类型不同。返回类型不能用来区分重载方法。    ...参数类型区分度一定要足够,例如不能是同一简单类型参数,如int与long。编译器会根据参数个数和类型来决定当前所使用方法。  6. 构造方法    ◇ 构造方法是一个特殊方法。...1) 编译时多态    在编译阶段,具体调用哪个被重载方法,编译器会根据参数不同来静态确定调用相应方法。    ...1) 实例变量和变量    每个对象实例变量分配内存,通过该对象来访问这些实例变量,不同实例变量是不同

38420

JVM内存模型

池中数据项象数组项一样,是通过索引访问。 每个这些元数据,无论是在构建这个实例还是调用这个某个对象方法,都会访问方法这些元数据。...变量被所有实例共享,即使没有实例时你也可以访问它。这些变量只与相关,所以在方法区中,它们成为数据在逻辑上一部分。...例如,假如同时有两个线程企图访问方法区中同一个,而这个还没有被装入JVM,那么只允许一个线程去装载它,而其它线程必须等待 2、方法大小不必是固定,JVM可根据应用需要动态调整。...另外,在Java 堆中还必须包含能查找到此对象类型数据(如对象类型、父、实现接口、方法等)地址信息,这些类型数据则存储在方法区中。...由于reference 类型Java 虚拟机规范里面只规定了一个指向对象引用,并没有定义这个引用应该通过哪种方式去定位,以及访问到Java 堆中对象具体位置,因此不同虚拟机实现对象访问方式会有所不同

53140

《Effective Java》——读后总结

[1240] 1、静态工厂方法代替构造器 静态工厂方法有名称,能确切地描述正被返回对象。 不必每次调用创建一个新对象。 可以返回原返回类型任何子类对象。...对于所有对象通用方法 5、覆盖 equals 如果类具有自己特有的"逻辑相等",但还没有覆盖 equals 以实现期望行为。...保护性拷贝是在检查参数有效性之前进行,并且有效性检查是针对拷贝之后对象。 17、 慎用重载 重载方法选择是静态,选择工作时在编译时进行,完全基于参数编译时类型。...不要导出俩个具有相同参数数目的重载方法,如果参数数目相同,则至少有一个对应参数在俩个重载方法中具有根本不同类型,否则就应该保证,当传递同样参数时,所有的重载方法行为必须一致。...26、同步访问 同步可以阻止一个线程看到对象处于不一致状态之中,还能保证进入同步方法或者同步代码块每个线程,看到由同一个锁保护之前所有的修改效果。

1.4K10

Java基础教程(8)-Java面向对象和(二)

default : 表明该成员变量或者方法只有自己和其位于同一个内可见,其他包内不能访问,即便是它子类继承通过继承创建称为“子类”或“派生”,被继承称为“基”、“父”或“”...只有当子类真正是类型时,才适合用继承多态所谓多态就是指一个实例相同方法不同情形有不同表现形式。多态机制使具有不同内部结构对象可以共享相同外部接口。...这意味着,虽然针对不同对象具体操作不同,但通过一个公共,它们(那些操作)可以通过相同方式予以调用;最常见多态就是将子类传入父参数中,运行时调用方法时通过传入子类决定具体内部结构或行为...(Overriding)重写指的是在 Java 子类与父中有两个名称、参数列表相同方法情况。...2、重载遵循所谓“编译期绑定”,即在编译时根据参数变量类型判断应该调用哪个方法。3、重写遵循所谓“运行期绑定”,即在运行时候,根据引用变量所指向实际对象类型调用方法

7710

独特视角解读JVM内存模型

当被装载引用了另外一个时候,虚拟机就会使用装载第一个装载器装载被引用。 由于java虚拟机采取这种方式进行加载,所以被装载默认情况下只能看到同一个加载器装载。...在java虚拟机中,在同一个命名空间内可以直接进行交互,而不同命名空间中甚至不能察觉到彼此存在。...实例方法数据"指针,方法表指向实例方法数据包括以下信息: 此方法操作数栈和局部变量区大小 此方法字节码 异常表 这些信息足够虚拟机去调用一个方法方法表中包含有方法指针,该指针指向当前或者其什么方法数据...对于一个实例方法调用而言,参数this总是作为隐式参数传入,它用来表示调用方法对象本身。...对于面向对象语言来说,内嵌就变得复杂了,因为动态方法派发意味着一个函数调用可能有多个函数实现(方法),换句话说,虚拟机运行时根据方法调用对象,可能会有很多不同方法实现可供选择。

37720

Java学习笔记之十六】浅谈Java继承与多态

表示父和子类术语:父和子类、和子类、基和派生,他们表示同一个意思。 2、  为什么需要继承?什么时候应该继承? 使用继承可以有效实现代码复用,避免重复代码出现。...如果在子类中定义一个方法,其名称、返回类型参数列表正好与父中某个方法名称、返回类型参数列表相匹配,那么可以说,子类方法重写了父方法方法重写在不同类,是实现多态必要条件。...调用这个方法时,实例化不同子类对象(new 一个对象)。 更具体说: (1)、子类重写父方法。使子类具有不同方法实现。 (2)、把父类型作为参数类型,该父及其子类对象作为参数转入。...(3)、运行时,根据实际创建对象类型动态决定使用那个方法。 在运行时,java虚拟机会根据实际创建对象类型决定使用那个方法。一般将这称为动态绑定。   ...当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建对象类型调用子类中相应方法(存在方法重写时)。

79870

jdk和jvm区别_java中集合和数组区别

方法区存放信息包括:A 基本信息: 1.每个全限定名 2.每个直接全限定名(可约束类型转换) 3.该类是还是接口 4.该类型访问修饰符 5.直接接口全限定名有序列表...3.方法信息:中声明每一个方法信息,包括方法名、返回值类型参数类型、修饰符、异常、方法字节码。...4.静态变量:就是变量,所有实例共享,我们只需知道,在方法区有个静态区,静态区专门存放静态变量和静态块。 5.到classloader引用:到该类装载器引用。...而jvm必须以某种方式把Class这个实例和存储在方法区中类型数据联系起来。...根据JMM设计,系统存在一个主内存(Main Memory),Java中所有变量储存在主存中,对于所有线程都是共享

29320

Java知识面试题复习(三)Java面向对象

运行时多态是面向对象精髓东西,要实现多态需要做两件事: 方法重写(子类继承父并重写父中已有的或抽象方法); 对象造型(用父类型引用子类型对象,这样同样引用调用同样方法就会根据子类对象不同而表现出不同行为...对于Java而言,它多态实现机制遵循一个原则:当对象引用变量引用子类对象时,被引用对象类型而不是引用变量类型决定了调用成员方法,但是这个被调用方法必须是在中定义过,也就是说被子类覆盖方法...相同点 接口和抽象都不能实例化 位于继承顶端,用于被其他实现或继承 包含抽象方法,其子类都必须覆写这些抽象方法 不同点 现在,我们可以为接口提供默认实现方法了,并且不用强制子类来实现它...重载:发生在同一个中,方法名相同参数列表不同参数类型不同、个数不同、顺序不同),与方法返回值和访问修饰符无关,即重载方法不能根据返回类型进行区分 重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父...引用传递:指的是在方法调用时,传递参数是按引用进行传递,其实传递引用地址,也就是变量所对应内存空间地址。传递是值引用,也就是说传递前和传递后指向同一个引用(也就是同一个内存空间)。

35930

Java虚拟机体系结构

JAVA虚拟机体系结构 下图是JAVA虚拟机结构图,每个Java虚拟机都有一个装载子系统,它根据给定全限定名来装入类型或接口)。...对于每个装载类型,虚拟机都会在方法区中存储以下类型信息:   ● 这个类型全限定名   ● 这个类型直接全限定名(除非这个类型java.lang.Object,它没有)   ● 这个类型类型还是接口类型...另一条指令将用这个引用调用Lava对象引用flow()方法。 堆 Java程序在运行时创建所有实例或数组放在同一个堆中。而一个JAVA虚拟机实例中只存在一个堆空间,因此所有线程都将共享这个堆。...但是同一个Java程序多个线程却共享同一个堆空间,在这种情况下,就得考虑多线程访问对象(堆数据)同步问题了。...传递给该函数参数以某个确定顺序压入栈,它返回值也以确定方式传回调用者。同样,这就是虚拟机实现中本地方法行为。

1.7K10

JavaScript面向对象程序设计之继承(一)

name, 又共享了 公有的方法 sayName(),这样就实现了类似于强类型语言中概念。...这也很好理解,因为两个实例继承自SuperType同一个实例构成原型,所以他们共享类型构造函数中element属性,因此,理所应当,前一个实例对element元素所作更改会体现在后一个实例上...这是一个令人头疼问题。 原型链式继承另一个问题是,子类型构造函数中,无法给类型传递参数。这也局限了这种方式在实际开发中应用。 2....虽然实现了相同功能,但两个方法并不是同一个方法。还是上面说,借用构造函数仅仅只是复制了一份类型属性和方法,这并不是复用,借用构造函数无法实现公共方法复用。...,根据打印结果可以看到,组合模式既可以复用类型公用方法,子类型实例中又可以保有各自私有属性。

33510

Java核心技术 卷I:基础知识》读书笔记

一定要对数据初始化 不要在中使用过多基本类型(便于理解) 不是所有的域需要独立域访问器和域更改器。 将职责过多进行分解 名和方法名要能体现它们职责。...与之对应,调用方法依赖于隐式参数(this)实际类型,这种方式称为动态绑定。 5.1.4 阻止继承 不允许扩展称为final 中特定方法也可以声明为final,这样子类就不能覆盖这个方法。...关键就是java.lang.reflect.Array.newInstance静态方法,它能够构造新数组,调用它时必须提供数组元素类型和数组长度。...一些值得注意调用时可以省略泛型,编译器可以根据参数自动推断。...13.2.8 映射表 map映射表,根据某些键信息来查找与之对应元素。HashMap是非常常用工具。 与散列表不同,映射表中键是唯一同一个键中后赋值会直接覆盖先赋值。

55920

JAVA面试题全集(上)

抽象只关注对象有哪些属性和行为,并不关注这些行为细节是什么。 - 继承:继承是从已有得到继承信息创建新过程。提供继承信息被称为父、基);得到继承信息被称为子类(派生)。...- 多态性:多态性是指允许不同类型对象对同一消息作出不同响应。简单说就是用同样对象引用调用同样方法但是做了不同事情。多态性分为编译时多态性和运行时多态性。...对象造型(用父类型引用引用子类型对象,这样同样引用调用同样方法就会根据子类对象不同而表现出不同行为)。...答:Java是一个近乎纯洁面向对象编程语言,但是为了编程方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型引入了对应包装类型(wrapper class...重载发生在一个中,同名方法如果有不同参数列表(参数类型不同参数个数不同或者二者都不同)则视为重载;重写发生在子类与父之间,重写要求子类被重写方法与父被重写方法有相同返回类型,比父被重写方法更好访问

48810

31道Java核心面试题,一次性打包送给你

堆(Heap),在 JVM 中,堆是可供各条线程共享运行时内存区域,也是供所有实例和数据对象分配内存区域。 方法区(Method area),在 JVM 中,被加载类型信息保存在方法区中。...,但方法参数个数不同,另外也不涉及到继承,两个方法同一个中。...在编译期间,编译器就知道这两个 read() 方法不同,因为它们方法签名(=方法名称+方法参数不同。...简单来总结一下: 1)编译器无法决定调用哪个重写方法,因为只从变量类型上是无法做出判断,要在运行时才能决定;但编译器可以明确地知道该调用哪个重载方法,因为引用类型是确定参数个数决定了该调用哪个方法...static 关键字可以用来修饰变量,使其具有全局性,即所有对象将共享同一个变量。 static 关键字可以用来修饰方法,该方法称为静态方法,只可以访问静态变量,并且只能调用静态方法

71510

Java-值传递和值引用

1.形参和实参区别? 形参:方法调用时需要传递进来参数,只有在被调用时才分配内存单元,在调用结束时,就会释放出所分配内存单元。形参只能在函数内部才有效....所以,数据在内存中存储,是根据数据类型来划定存储形式和存储位置. 我们知道数据类型分为基本数据类型和引用数据类型: 基本类型:编程语言中内置最小粒度数据类型。...3.方法方法区是一块所有线程共享内存逻辑区域,在JVM中只有一个方法区,用来存储一些线程可共享内容,它是线程安全,多个线程同时访问方法区中同一个内容时,只能有一个线程装载该数据,其它线程只能等待...方法区可存储内容有:全路径名、直接权全限定名、访问修饰符、类型或接口)、直接接口全限定名有序列表、常量池(字段,方法信息,静态变量,类型引用(class))等。...因此可知:基本数据类型成员变量名和值存储于堆中,其生命周期和对象是一致,在JVM中只有一个堆,因此,堆是被所有线程共享

1.6K30

知识点总结:Java核心技术(卷1)

“==”运算符能够用来确定两个字符串是否放在同一个位置。如果两个字符串放在同一个位置,它们必然相等。完全有可能将相同内容字符串放在不同位置上。 使用equals 方法比较两个字符串是否相等。...this用途 1、引用隐式参数; 2、调用该类其他构造器; super用途 1、调用方法; 2、调用构造器; 子类和 子类 子类构造器 使用super...调用构造器语句必须是子类构造器第一条语句; 如果子类构造器没有显式调用构造器,将自动地调用默认构造器(没有参数构造器) 如果子类构造器没有显式调用构造器,又没有不带参数构造器...,同名而且有相同参数类型默认方法会被忽略; 子主题 3 2)接口冲突; 如果一个接口提供了一个默认方法,另一个接口提供了一个同名而且参数类型(不论是否为默认方法)相同方法,必须覆盖这个方法来解决冲突...无论何时定义一个泛型类型自动提供了一个响应原始类型。原始类型名字就是删去类型参数泛型类型名。

32630

Java虚拟机

分为启动装载器和用户自定义装载器 由不同装载器装载将放在虚拟机内部不同命名空间中。 用户自定义装载器以及Class实例放在内存堆区,而装载类型信息则位于方法区。...所有线程共享方法区。...如果方法不是抽象和本地还须有 方法字节码 操作数栈和该方法栈帧中局部变量大小 异常表 3.4 堆 Java程序在运行时所创建所有实例或数组放在同一个堆中。...方法表指向实例方法数据包括以下信息: 此方法操作数栈和局部变量区大小 此方法字节码 异常表 这些信息足够虚拟机去调用一个方法了,方法表包含有方法指针——指向活或声明方法数据 ?...编译器首先按声明顺序把这些参数放入局部变量数组。 在java中,所有的对象按引用传递,并且存储在堆中,永远都不会在局部变量区或操作数栈中发现对象拷贝,只会有对象引用。

1.2K100
领券