构造方法

好程序员大数据实用教程之面向对象进阶

随声附和 提交于 2019-12-11 15:07:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 好程序员大数据实用教程之面向对象进阶:包的创建与使用 是对一个程序中指定功能的部分代码进行包装 构造方法 是一个方法 特殊点: 构造方法没有返回值,不是指的返回值类型是void,而是根本就不写返回值类型 方法名字和类名相同 构造方法不能用static来修饰 构造方法调用的时机: 通俗来讲:是在实例化一个对象的时候调用的 一般情况下,我们在构造方法中做什么: 对对象的某一些属性进行初始化赋值操作 实例化对象的过程: Person xiaoming = new Person(); new : 表示在堆上开辟空间 执行非静态代码段 然后再执行构造方法: 在构造方法中调用其他的构造方法 可以使用this()的方式来调用其他的构造方法 注意事项: this() 必须写在构造方法的第一行 不能循环调用 无参构造方法需要注意的问题 如果一个类中没有写构造方法,此时这个类具有一个默认的public权限的无参构造方法 如果一个类中写构造方法了,此时这个默认的public权限的无参构造方法将不再提供 代码块 非静态代码段 静态代码段 static { } // 当这个类第一次被加载到内存中的时候执行 // 当你第一次使用这个类的时候执行(实例化对象、调用静态方法...) private关键字与属性封装 是一种编程思想:

查找3—散列表的查找

拜拜、爱过 提交于 2019-12-11 11:56:08
前言: 这是查找这个知识点的最后一个部分,个人感觉这部分真的很好理解,就简单的逻辑思维,不需要绕弯,基本上就可以解决大部分的题目。合理的应用查找的总体效率也是很高的 。主要说三个模块的事情: 构造方法 , 处理冲突方法 , 查找 。 那么引入一下,前面我们说了顺序表的查找、树表的查找,但是我们发现,就算再优化,它们的时间复杂度最小也是log 2 n级别的。那么我们肯定是希望能找到更优的算法,最好就是n(1)级别的,如果能利用公式直接的求解,那么不是直接就可以找到了,不需要依次比较了吗?所以就有了我们要说的散列表的查找(也叫哈希表)。 一、构造方法 来看看基本的概念: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。 构造方法有很多, 数字分析法 、 平方取中法 、 折叠法 、 除留余数法 (这个是 最常用 的)。只需要思考一下就知道我们构造其实就是制定一个规则,使我们的元素可以按照这个规则查找到,当然

学期总结

半城伤御伤魂 提交于 2019-12-11 11:15:47
这学期渐渐已经要接近尾声,对于JAVA的学习也慢慢有了很大的进步。 从最开始的创建类,写方法,再到从以前的C语言转换为Java,最深刻的便是以前输入的时候,还一直不能明白。 关于这学期所学到的java知识点,我也做了一个归纳: 1.了解了什么是类,类与对象的关系。类就是定义一个基本的模板,代表着一个共性,是表示一个客观世界某类群体的一些基本体征的抽象;而对象表示每一个具体的东西; 2.了解了Java面向对象的第一大特性封装性,private 3.this:表示当前对象 属性访问:访问本类中的属性,如果本类没有此属性则从父类中继续查找。 方法:访问本类中的方法,如果本类没有此方法则从父类中继续查找。 调用本类构造,必须放在构造方法的首行,不能放在main方法中。 4.static:声明的属性是所有对象共享的,在访问static属性时最好可以由类名称直接调用。 static既可以在声明属性的时候使用,也可以用其来声明方法。 非static声明的方法可以去调用static声明的属性或方法的。但是static声明的方法是不能调用非static类型声明的属性或方法的,当一个方法是static,另一个方法不是static型时,二个方法中的参数不可相加相乘等等。 5.对象数组 类 对象数组名称[]=new 类[数组长度] 数据类型 数组名称[]=null; 数组名称=new 数据类型[长度];

反射

泄露秘密 提交于 2019-12-11 10:41:00
一、反射 1.类型信息 Java让我们在运行时识别类和对象的信息,主要有两种方式:一种是传统的RTTI(Run-Time Type Identification),它假定我们在编译期已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息,使用的前提条件是:必须先得到类的字节码的Class,Class类用于表示.class文件,也就是字节码文件 2.反射概述 Java反射机制是指,在运行状态中,能够知道这个类所有的属性和方法。对于任意一个对象,都能够调用它的任意一个属性和方法, 这种动态获取的信息以及动态调用对象的方法的功能叫做Java的反射机制 反射就是把类中的各个成分映射成一个个的对象 3. .class文件的唯一性 拿Student类举例 当我们第一次创建Student类的对象时,JVM会将Student类的字节码文件(Student.class)加载进内存,然后在堆内存开辟空间。 当我们想再次创建Student对象时,JVM会先去内存中寻找是否有Student类的字节码文件(Student.class),如果有,就不会再去加载Student类的字节码文件(Student.class),直接使用。这说明,每个类的字节码文件(.class)再内存的存在都是唯一的。 在一个万物皆对象的Java世界中,我们同样也可以获得类的.class文件的对象

java——第三章(3)

依然范特西╮ 提交于 2019-12-11 08:59:50
6.类的继承 6.1 类的继承是指一个现有类的基础上去构建一个新的类,构建出来的新类被称作父类或基类 1、子类继承父类中非private的成员变量和成员方法,同时,注意构造方法不能被子类继承。 2、定义类时若缺省extends关键字,则所定义的类为java.lang.Object类的直接子类。 在Java语言中,一切类都是Object类的直接或间接子类。 3、Java仅支持单重继承,即一个类至多只有一个直接父类。在Java中通过接口来实现多重继承。 4、父类中定义的private成员变量和方法不能被子类继承,因此在子类中不能直接使用。我们可以在父类中定义公共的访问方法和修改方法,子类可以通过这些方法来实现访问和修改。 举例: public class Person { private String name; private int age; public String getName() { return name; } public int getAge() { return age; } public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public void say(){ System.out.println("My name is "

面向对象程序设计

我只是一个虾纸丫 提交于 2019-12-11 00:45:51
1、交通工具类(vehicle) 成员变量: 类型(vType) String类型 如: 小型车、大型车 载客人数(vNum) int类型 如: 20 构造方法: 构造方法(1),输出“创建了一个交通工具”; 构造方法(2),调用构造方法(1),并通过形参初始化类型(vType)和载客人数(vNum); 普通方法: 设置get和set方法用于获取和设置类中各个变量的值; 重写Equals方法,当且仅当类型(vType)和载客人数(vNum) 均相等时,即为同一交通工具。 重写toString方法,返回类型(vType)和载客人数(vNum)的信息 样式如下:类型:小型车,载客人数:20 2、计费接口(Charge) 成员方法: billingMethods( ),用于输出不同类型交通工具的不同计费方式,如: 公交车计费方式: 一元 / 张(不计公里数) 3、公交车类(Bus) 继承vehicle类 实现Charge接口 成员变量: 线路号(bNo) String类型 如:5路、4路 线路(line) String类型 如:科技学院—火车站 构造方法: 先调用父类构造方法(2)初始化类型(vType)和载客人数(vNum),再初始化线路号(bNo)和线路(line)。 普通方法: 重写billingMethods( )方法。 定义showBus()方法,用于输出Bus对象的所有信息

单例模式

ぐ巨炮叔叔 提交于 2019-12-10 22:45:43
定义: 单例模式 (Singleton Pattern)属于创建型模式,提供了一种创建对象的最佳方式。 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点 实现方式 :“饿汉式” and “懒汉式”    “饿汉式” :在类加载的时候就实例化对象,通俗来说就是:不管这个对象你要不要用,我都先实例化出来,要用的时候直接取就行 “懒汉式” :也就是我们常说的 延迟加载 。通俗来说就是:只要你要用这个对象,我才去实例化这个对象,然后在取来用 通过定义我们就知道这两种方式的差异了,“饿汉式”在不采取同步的方式的时候就是线程安全的,而“懒汉汉”则需要采取同步的措施来保证线程安全,当然也可以不采取同步的措施,例如采用枚举类来实现单例模式,这个接下来细说。 优点:    1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。 2、避免对资源的多重占用(比如写文件操作)。 缺点: 没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 具体实现 : 也就是上代码啦!!! 1、“饿汉式” 1 // 饿汉式 demo1 2 public class Singleton1 { 3 4 // 必须私有化构造函数 5 private Singleton1(){} 6 7 // 先初始化对象 8 private static

super关键字

非 Y 不嫁゛ 提交于 2019-12-10 20:07:25
1、Java 中 super 是什么 java中的super关键字是一个引用变量,用于引用直接父类对象。 每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用。 2、为什么要用 super 关键字 由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。 3、Java 中 super 的用法 java super关键字的用法如下: 调用父类的构造方法 访问父类中实例变量 访问父类的方法 来源: CSDN 作者: xiaoxuan2020 链接: https://blog.csdn.net/xiaoxuan2020/article/details/103481369

JavaSE——面向对象(二)(构造方法、对象的创建步骤、static关键字、JDK帮助文档、Math类)

牧云@^-^@ 提交于 2019-12-10 18:53:12
1.构造方法 概述 创建对象,给对象中的成员进行初始化,与set()方法的作用差不多 特点 (1)方法名必须与类名相同 (2)没有返回值类型,更没有具体的返回值 注意事项 (1)在一个类中,如果我们没有给出构造方法,系统将自动提供一个无参构造方法。 (2)如果我们自己给出了有参的构造方法,那么系统就不再提供的无参的构造方法,如果想要使用无参的构造方法,就必须自己给出,建议永远自己给出无参的构造方法。 案例演示 //建一个电脑类,使用set和构造方法两种方式给变量赋值,并分别用get和一个方法两种方法输出。 package org.westos.demo5; public class Computer { private String name; private double price; public Computer() { } public Computer(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; }

关于super关键字

时光毁灭记忆、已成空白 提交于 2019-12-10 16:59:02
说到super关键字我们就不得不说到this关键字,我们都知道this总是指向当前函数所在的的对象,而super关键字则是指向当前对象的原型。 在java中super关键字通常有两种用法:一是用在子类的构造方法里面;二是用在子类里调用隐藏或重写的属性或行为; 1.super关键字可以在子类的构造方法中显式地调用父类的构造方法,super()必须为子类构造函数的第一行; 2.super可以用来访问父类的成员变量或者方法,当子类成员变量或方法与父类有相同的名字时也会覆盖父类的成员变量或方法,这个时候想要访问父类的成员变量或方法只能通过super关键字来访问,子类方法中的super.方法名()不需要位于第一行。 class FatherClass { public int value; public void f() { value=100; System.out.println("父类的value属性值="+value); } //父类构造方法 public FatherClass(){ System.out.println("FatherClass constructor"); } } class ChildClass extends FatherClass { /** * 子类除了继承父类所具有的value属性外,自己又另外声明了一个value属性, * 也就是说