构造器

简单认识Java反射

柔情痞子 提交于 2020-02-08 18:53:42
Java 反射定义 指在 Java 程序运行状态中,动态获取类的内容以及动态调用对象的方法和获取属性的机制.就叫做 JAVA 的反射机制 Java 反射的优缺点 优点: 1.增加程序的灵活性,避免将固有的逻辑程序写死到代码里 2.代码简洁,可读性强,可提高代码的复用率 缺点 1.在量大的情景下反射性能下降,就是慢 2.内部暴露和安全隐患 反射到底慢在哪些地方: 1.寻找类 Class 字节码的过程 2.安全管理机制的权限验证等等 3.调用 native 方法时,会使用JNI技术很消耗性能 反射技术的主要组成 学java的都知道万物皆对象,我们定义的类其实从面向对象的角度来分析,它其实也是一个具体的对象,它是一个描述类的实例.描述这个类中有哪些属性,行为等等内容。 比如,学生是不是都有姓名,年龄,发言权。这些学生共有的属性,行为我们可以抽取成一个公有的Student类来描述。 class Student{ String name; int age; void talk(){ System.out.println("学生可以发言"); } } Student类就相当于一个模板,我们可以基于这个模板创建具体不同的 Student 实例,而每一个实例都具有姓名,年龄,发言的行为。 那么,对于抽取这个思想,我们可以思考这样一个问题,在Java中是不是每一个类在定义的时候

Javascript函数调用的四种模式

匆匆过客 提交于 2020-02-08 03:22:22
  一  前言   Javascript一共有四种调用模式:方法调用模式、函数调用模式、构造器调用模式以及apply调用模式。调用模式不同,对应的隐藏参数this值也会不同。   二  方法调用模式   函数作为对象的属性时,称为方法。此时函数(即方法)中的this对应是该对象。 var myObject = {   value:3,  func:function(){    alert(this.value);  }   };// 方法调用模式,this对应的是myObject对象myObject.func();  //3   也可以写成如下格式: var myObject = { value:3 }; myObject.func = function() { alert(this.value); }// 方法调用模式myObject.func();  //3   上面,this对应的是myObject对象。   三  函数调用模式   函数调用模式即通常的函数调用,属于全局性调用,此时this对应的是全局对象,即Window对象。 var add = function(a, b) { return a + b; } // 函数调用模式 add(3,4); //7   上面也可以写成 window.add = function(a, b) { return a + b; }//

第2章 创建和销毁对象

。_饼干妹妹 提交于 2020-02-07 23:48:03
第1条 用静态工厂方法代替构造器 优点 1.静态工厂方法与构造器不同的第一大优势在于,他们有名称 2.不必每次调用他们都创建一个新对象,如Boolean中的valueof,都是内部自己维护的两个单例,根据传入的参数不同,分别返回True或者False public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); 3.返回原返回类型的任何子类型的对象,API可以返回对象,同时又不会使对象的类变成公有(这里理解为Collections【Collections的构造器为private】中的东西,里面有很多静态内部类,通过暴露静态公有的方法创建无法new出来的对象) 4.所有返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值 5.方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在(理解为解耦,可以先没有具体的实现类,如JDBC返回Connection) 缺点 1.类如果不含有公有的或者受保护的构造器,就不能被子类化(可能意思是如果构造函数私有

再谈Java

被刻印的时光 ゝ 提交于 2020-02-07 05:11:59
对象构造 重载: 有些类有多个因为参数、返回值不同的构造器,这种情况叫做重载。他通过方法给出的参数类型与特定方法调用所使用的值类型来挑选相应的方法叫做重载解析。java允许重载任何方法。要想完整的指出一个方法。必须需要方法名和参数,这叫做方法签名。返回值不属于方法的签名。也就是说不能有相同的方法名和参数但是有不同返回类型值的方法。 默认域初始化 如果在构造器中没有显示初始化初始,那么就会自动的默认初始化值,一般不会这么做,影响可读性。域与局部变量的不同在于局部变量必须初始化。 无参数的构造器 很多类都包含没有参数的构造器。对象由无参数构造时,会将实例域都提供默认值。当一个类中没有构造函数时,将会有一个无参数类是类的默认构造函数,他会将实例域都初始化为默认值。但是当类中出现一个构造器,那么就不会在出现这个无参数默认构造器,如果这个构造器有参数,就不会构造没有提供参数的对象。仅当没有提供构造器时才会提供默认构造器 显示域初始化 通过重载构造器的方法,可以通过多种形式设置类的实例域的初始状态,可以在域中直接初始实例域。初始值不一定时常量值,也可以是方法对域进行初始化。 参数名 参数名最好是意义明显,可以将参数名设置为与实例域一样的标识符,但是下面的标识符代表了参数的引用,可以使用this的形式访问对象的实例域。 还可以使用this在一个构造器中调用另外一个构造器。 初始化块

再谈JAVA

允我心安 提交于 2020-02-07 02:29:54
对象构造 重载: 有些类有多个因为参数、返回值不同的构造器,这种情况叫做重载。他通过方法给出的参数类型与特定方法调用所使用的值类型来挑选相应的方法叫做重载解析。java允许重载任何方法。要想完整的指出一个方法。必须需要方法名和参数,这叫做方法签名。返回值不属于方法的签名。也就是说不能有相同的方法名和参数但是有不同返回类型值的方法。 默认域初始化 如果在构造器中没有显示初始化初始,那么就会自动的默认初始化值,一般不会这么做,影响可读性。域与局部变量的不同在于局部变量必须初始化。 无参数的构造器 很多类都包含没有参数的构造器。对象由无参数构造时,会将实例域都提供默认值。当一个类中没有构造函数时,将会有一个无参数类是类的默认构造函数,他会将实例域都初始化为默认值。但是当类中出现一个构造器,那么就不会在出现这个无参数默认构造器,如果这个构造器有参数,就不会构造没有提供参数的对象。仅当没有提供构造器时才会提供默认构造器 显示域初始化 通过重载构造器的方法,可以通过多种形式设置类的实例域的初始状态,可以在域中直接初始实例域。初始值不一定时常量值,也可以是方法对域进行初始化。 参数名 参数名最好是意义明显,可以将参数名设置为与实例域一样的标识符,但是下面的标识符代表了参数的引用,可以使用this的形式访问对象的实例域。 还可以使用this在一个构造器中调用另外一个构造器。 初始化块

JAVA构造器、this、super

喜夏-厌秋 提交于 2020-02-07 01:05:53
构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到: Platypus p1 = new Platypus(); 相反,方法的作用是为了执行java代码。 修饰符,返回值和命名的不同 构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样, 构造器可以有任何访问的修饰: public, protected, private 或者没有修饰(通常被package 和friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。 返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。 最后,谈谈两者的命名。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。 "this"的用法 构造器和方法使用关键字this有很大的区别。 方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器 ,我们看看下面的代码: public

Java SE学习总结 Day (10)

佐手、 提交于 2020-02-07 00:02:37
Day 10开篇: " 今天java基础主要学习了面向对象的构造方法的概念,特征,作用,分类,注意事项,JavaBean;代码块,继承的概念,特点,好处,缺点,this和super的区别,继承的注意的问题,构造方法的关系,extends关键字等。 " 知识点反馈: 今天的知识点总结思维导图 一. 构造方法 1. 构造方法的特征: (1)他的名字和类名必须完全一致 (2)构造方法没有返回值,连void也不存在 (3)不能被任何的修饰符进行修饰(权限修饰符除外) (4)不能有return语句返回值 2. 构造方法的作用: 创建对象;给对象进行初始化 例:String name = null; 这个等于null,也有赋值的过程,这个过程是谁完成呢? 构造器完成的,这个过程被称之为隐式赋值 3. 构造器的分类: (1)隐式无参构造器(系统默认提供) (2)显式定义一个或多个构造器(无参、有参,自己提供) 4. 构造器的注意事项: (1) Java语言中,每个类都至少有一个构造器 (2) 默认构造器的修饰符与所属类的修饰符一致 (3) 一旦显式定义了构造器,则系统不再提供默认构造器(一般我们即使提供了带参,一般也会自己手动的写上一个无参) (4) 一个类可以创建多个重载的构造器(构造器的名字既然和类名一致,那么是不是意味着,同一个类当中只能出现一个名字的构造;这种情况其实就会造成构造重载

QT中的qDebug()

大憨熊 提交于 2020-02-06 12:59:58
原文链接 https://www.cnblogs.com/lomper/p/3960462.html 首先在头文件中包含 #include<QDebug> 当开发者需要为一个装置、文件、字符串或者控制台,写出调试和跟踪信息时,该类被使用。 在需要使用的地方插入: qDebug("intensity:%d",intensity[0][2]); // (%d表示整数) 输出结果: intensity:195 // 注: %a,%A //读入一个浮点值(仅C99有效)    %c //读入一个字符    %d //读入十进制整数    %i //读入十进制,八进制,十六进制整数    %o //读入八进制整数    %x,%X //读入十六进制整数    %s //读入一个字符串,遇空格、制表符或换行符结束。    %f,%F,%e,%E,%g,%G //用来输入实数,可以用小数形式或指数形式输入。    %p // 读入一个指针    %u //读入一个无符号十进制整数    %n //至此已读入值的等价字符数    %[] //扫描字符集合    %% //读%符号 qDebug():输出调试信息 Example: qDebug( "my window handle = %x", myWidget->id() ); 一般情况下,使用qDebug()就可以获得一个缺省的QDebug对象

再谈JAVA

一曲冷凌霜 提交于 2020-02-06 07:15:21
静态域与静态方法 静态域 如果将域定义为static,一个类中只有一个这种域。当创建一个对象时,这个对象会拷贝实例域。但是static这种域不会改变,也就是说不会因为对象的改变而改变,即使没有对象也存在,通常称为类域. 静态变量 静态变量用final修饰成为静态常量,声明静态常量是因为防止其他对象有自己一份拷贝,而用final修饰是因为防止再次将域改变 静态方法 静态方法是一种不能向对象实施操作的一种方法。所以不能访问类的实例域,但是可以访问静态域。可以使用对象调用静态方法,但是不适用。 在以下两种情况下使用静态方法 一个方法不需要访问对象状态,只需要提供显示参数 一个方法只需要访问静态域 工厂方法 静态方法还有一种常见的用途,构造对象。 使用工厂方法构造对象的原因 无法命名构造器,构造器必须与类名相同 使用构造器无法改变构造对象的类型 main方法 因为静态方法不需要使用对象就可以调用,不需要构造对象就可以使用。main方法还没有创建对象就开始运行,所以声明成静态方法 方法参数 方法参数传递分为两种类型 基本数据类型 对象的引用 第一种属于拷贝参数,而第二种是传递的地址可以改变原来的数值 但是对Java对象的采用的不是引用传递,而是拷贝了地址。 来源: CSDN 作者: hello妈耶儿 链接: https://blog.csdn.net/V2636011127/article

【Java基础08】内部类、枚举类、日期和时间、Math、Random

妖精的绣舞 提交于 2020-02-06 02:01:26
1 内部类 1.1 概念 大部分时候,类被定义成一个独立的程序单元,在某些情况下,也会把一个类放到另一个类的内部定义,这个定义在其他类内部的类就被称为内部类,包含内部类的类被称为外部类。 1.2 作用 1.提供更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。 2.内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但外部类不能访问内部类的实现细节,例如内部类的成员变量。 3.匿名内部类适合用于创建那些仅需要一次使用的类。 注意: 1.内部类比外部类可以多使用三个修饰符:private、protected、static,外部类不可以使用这三个修饰符。 2.非静态内部类不能拥有静态成员。 1.3 非静态内部类 成员内部类分为两种,静态内部类和非静态内部类,使用static修饰的成员内部类是静态内部类,没有使用static修饰的成员内部类是非静态内部类。(在方法中定义的内部类被称为局部内部类) 不允许在外部类的静态成员中直接使用非静态内部类,不允许在非静态内部类中定义静态成员。非静态内部类里不能有静态方法、静态成员变量、静态初始化块。 1.4 静态内部类 如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此使用static 修饰的内部类被称为类内部类