构造方法

反射机制

自古美人都是妖i 提交于 2019-12-16 20:14:47
反射机制 下面我们一起来探讨一下java的反射机制吧!功能太强大了,哈哈! (一). 定义    Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 1.1 主要功能 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 生成动态代理 1.2 应用范围   在web应用中不是很多,但反射机制是如今很多流行框架的实现基础,包括Spring、Hibernate等。 1.3 注意    Java通过Reflection API来完成反射机制,在java.lang.reflect包中有Field、Method、Constructor三个类分别用于描述类的属性、方法、构造方法。 1.4 Constructor类    Constructor类用于 表示类的构造方法 ,通过调用Class对象的 getConstructor() 方法就能获取当前类的构造方法的集合。 1.4.1 Constructor类的方法   String getName()————返回构造方法的名称   Class[] getParameterTypes()————返回当前构造方法的参数类型   int

类加载器与反射

自作多情 提交于 2019-12-16 18:11:15
类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载 就是指将class文件读入内存,并为之创建一个Class对象。 任何类被使用时系统都会建立一个Class对象 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据中的符号引用替换为直接引用 初始化 就是我们以前讲过的初始化步骤 类初始化时机 1. 创建类的实例 2. 类的静态变量,或者为静态变量赋值 3. 类的静态方法 4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 5. 初始化某个类的子类 6. 直接使用java.exe命令来运行某个主类 类加载器 负责将.class文件加载到内存中,并为之生成对应的Class对象。 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行 类加载器的组成 Bootstrap ClassLoader 根类加载器 也被称为引导类加载器,负责Java核心类的加载 比如System,String等。在JDK中JRE的lib目录下rt.jar文件中 Extension ClassLoader 扩展类加载器 负责JRE的扩展目录中jar包的加载。 在JDK中JRE的lib目录下ext目录 System

深入理解 Java 方法

人走茶凉 提交于 2019-12-16 16:58:19
方法(有的人喜欢叫函数)是一段可重用的代码段。 📓 本文已归档到:「 javacore 」 🔁 本文中的示例代码已归档到:「 javacore 」 1. 方法的使用 1.1. 方法定义 方法定义语法格式: [修饰符] 返回值类型 方法名([参数类型 参数名]){ ... 方法体 ... return 返回值; } 示例: public static void main(String[] args) { System.out.println("Hello World"); } 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符 - 修饰符是可选的,它告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型 - 返回值类型表示方法执行结束后,返回结果的数据类型。如果没有返回值,应设为 void。 方法名 - 是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型 - 参数像是一个占位符。当方法被调用时,传递值给参数。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 方法体 - 方法体包含具体的语句,定义该方法的功能。 return - 必须返回声明方法时返回值类型相同的数据类型。在 void 方法中,return 语句可有可无,如果要写 return,则只能是 return; 这种形式。 1.2. 方法的调用

接口和抽象类

巧了我就是萌 提交于 2019-12-16 12:16:08
抽象类(abstract class): Java语法规定,包含抽象方法 的类就是抽象类。 注意事项: 1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。   理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。 2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。   理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。 3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。   理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设 计。 4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。 接口(interface): 接口是Java语言中的一种引用数据类型,是方法的集合。如果说类的内部封装了成员变量,构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法、默认方法和静态方法(JDK8)、私有方法(JDK9)。 接口在编译时也会编译成.class文件 接口中的几种方法 1 public Interface MyInterface{ 2 //抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体 3 public abstract void

类加载器&反射&模块化

删除回忆录丶 提交于 2019-12-16 02:12:44
1.类加载器 1.1类加载【理解】 类加载的描述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化 类的加载 就是指将class文件读入内存,并为之创建一个 java.lang.Class 对象 任何类被使用时,系统都会为之建立一个 java.lang.Class 对象 类的连接 验证阶段:用于检验被加载的类是否有正确的内部结构,并和其他类协调一致 准备阶段:负责为类的类变量分配内存,并设置默认初始化值 解析阶段:将类的二进制数据中的符号引用替换为直接引用 类的初始化 在该阶段,主要就是对类变量进行初始化 类的初始化步骤 假如类还未被加载和连接,则程序先加载并连接该类 假如该类的直接父类还未被初始化,则先初始化其直接父类 假如类中有初始化语句,则系统依次执行这些初始化语句 注意:在执行第2个步骤的时候,系统对直接父类的初始化步骤也遵循初始化步骤1-3 类的初始化时机 创建类的实例 调用类的类方法 访问类或者接口的类变量,或者为该类变量赋值 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 初始化某个类的子类 直接使用java.exe命令来运行某个主类 1.2类加载器【理解】 1.2

netty之NioEventLoopGroup和NioEventLoop

早过忘川 提交于 2019-12-15 22:40:52
Netty实战抠的图,说明了Channel、EventLoop、Thread以及EventLoopGroup之间的关系。 一个EventLoopGroup包含一个或多个EventLoop 一个EventLoop在他的生命周期内之和一个Thread绑定 所以由EventLoop处理的I/O事件都将在他专有的Thread上被处理 一个Channel在他的生命周期内只注册于一个EventLoop 一个EventLoop可能会被分配给一个或多个Channel EventLoop只定义了一个parent()方法,用于返回到当前EventLoop实现的实例所属的EventLoopGroup的引用 public interface EventLoop extends OrderedEventExecutor , EventLoopGroup { EventLoopGroup parent ( ) ; } parent()方法重写了EventExecutor的EventExecutorGroup .parent()方法 public interface EventExecutor extends EventExecutorGroup { EventExecutor next ( ) ; EventExecutorGroup parent ( ) ; . . . . . }

构造方法

让人想犯罪 __ 提交于 2019-12-15 22:37:10
package com.review;//构造方法使用 创建对象 new//一旦定义了至少一个构造方法,编译器不在赠送//全参构造方法方便数据输入如果改变需要setpublic class Student { public Student() { System.out.println("构造方法执行了"); } public Student(String name){ System.out.println("全参构造方法执行了"); }} 来源: https://www.cnblogs.com/xzwx668/p/12046240.html

类及其他

天涯浪子 提交于 2019-12-15 06:38:41
内部类:静态内部类(参照静态方法使用,外部类以外:Wai.nei wn=new Wai.nei())和非静态内部类。 成员内部类:是外部类成员,可以调用外部类成员,外部类如何使用内部类成员:创建类对象:Wai.Nei wn=new Wai().new Nei(); 局部内部类:内部类可以访问外部类成员。 字符串类 Java提供了String、StringBuffer和StringBuilder三个类来封装字符串,并提供了一系列方法来操作字符串对象,三者区别如下: String创建的字符串是不可变的如果改变字符串变量的值,是在内存中创建一个新的字符串,字符串变量将引用新创建的字符串地址,而原来的字符串在内存中依然存在且内容不变,直至Java的垃圾回收系统对其进行销毁。 String 类 String字符串常用的方法如下: 方法及功能描述: String():默认构造方法,创建一个包含0个字符的String对象(不返回null)。 String(char[] value):使用一个字符数组构造一个String对象。 String(String s)使用一个字符串值构造一个String对象。 String(StringBuffer bs)根据StringBuffer对象来创建对应的String对象。 String(StringBuilder sb)根据StringBuilder

Java面向对象-2.构造方法、static

坚强是说给别人听的谎言 提交于 2019-12-15 04:28:36
构造方法:给对象的属性进行初始化,给其赋值,不用调用,一创建对象就执行。 Student s = new Student(); //Student后面的括号就是指调用的构造方法,括号没有写参数就是默认调用空参的构造方法 构造方法方法名与类名相同(大小写也要与类名一致) 没有返回值类型,连void都没有 没有具体的返回值,没有return 构造方法的重载(加参数),创建对象就把参数写进去,与参数的顺序,个数,类型无关。 如果在一个类中没有定义构造方法,系统会默认给一个空参的构造方法,格式:public 类名(){} 如果定义有参构造方法,没有定义空参构造方法,系统不会默认再给空参构造方法。 有参的构造方法就是为了给对象的属性初始化。 空参在不需要给属性初始化,但是需要创建对象时使用。 定义了有参构造方法,还要再定义空参构造方法(为了创建对象,调用成员使用),建议永远自己给出无参构造方法。 构造方法与setXxx()区别: 构造方法用来给对象的属性进行初始化(一创建对象就赋值),若是修改已赋值的属性值,则是构建新对象将原来对象的地址值覆盖,原对象变成垃圾。 setXxx()用来修改属性值的,在原对象的基础上,不会创建新对象。 class Method { public static void main ( String [ ] args ) { Person p = new

第三周总结

自作多情 提交于 2019-12-14 11:04:51
目录 面向对象 this关键字的用法 初识面向对象在编程时容易遇到的问题 内存 Overload重载 面向对象特征之继承 super关键字 重写Override 面向对象特征之多态 引用数据类型的类型转换(向上转型,向下转型) instanceof 访问修饰符 Object 对象 面向对象 this关键字的用法 this关键字,表示当前类的引用 引用:引用指向哪个类 那么当前的引用指向的就是哪个类的对象 用法如下: 1.初始化时,调用构造方法,可以使用this关键字去访问属性 this . length = length ; this . width = width ; 2.可以在构造方法中调用构造方法 public Rect ( ) { System . out . println ( "无参的构造方法被调用" ) ; } public Rect ( int length , int width ) { this ( ) ; this . length = length ; this . width = width ; } 3.可以作为返回值使用 public Rect getRect ( ) { return this ; } 初识面向对象在编程时容易遇到的问题 1.NullpointException 指的是空指针异常,指代对象为null 2.对象创建递归问题 3