构造方法

集合系列 Queue(十一):ArrayDeque

让人想犯罪 __ 提交于 2020-03-18 17:40:37
目录 1 概述 2 源码分析 1 概述 从名字我们可以看出,其实一个双向队列实现,而且底层采用数组实现。 public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable 从定义可以看出,其实现了 Deque 接口。 2 源码分析 为了深入理解 ArrayDeque 的原理,我们将从类成员变量、构造方法、核心方法两个方面逐一介绍。 2.1 类成员变量 // 数据数组 transient Object[] elements; // 头结点 transient int head; // 尾节点 transient int tail; 从类成员变量我们就可以知道,其底层确实使用数组存储。 2.2 构造方法 ArrayDeque 一共有 3 个构造方法: public ArrayDeque() { elements = new Object[16]; } public ArrayDeque(int numElements) { allocateElements(numElements); } public ArrayDeque(Collection<? extends E> c) { allocateElements(c.size()); addAll

String的那些事

青春壹個敷衍的年華 提交于 2020-03-17 20:21:19
目录 String的特点? String的构造方法? String的常用方法? String的特点? 通过查看String类的源码我们得知:String类被final关键字修饰,这即是说明String类的特点就是: 字符串对象一旦被初始化就不会被改变。 注意:此处是字符串对象而不是字符串引用。也即是说: String s = "abc"; // s引用变量指向了值为"abc"的对象 s = "cba"; // s引用变量又指向了值为"cba"的对象,但是上面值为"abc"的对象的值并未改变 那么 String类被final修饰有什么好处 呢?第一个好处是 安全 ,因为final保证不管怎样操作,它的值都是不变的;第二个好处就是 高效 ,因为只有String类是不可变类时,我们才能实现字符串常量池。试想如果String类是可变类,当多个字符串引用变量指向同一个字符串对象时,字符串对象改变后就会引起多个字符串引用变量内容的改变,这显然不符合我们的预期。我们可以通过下面的代码来验证字符串常量池的存在: class Demo { public static void main(String[] args) { String s1 = "abc"; String s2 = "abc"; Demo d1 = new Demo(); Demo d2 = new Demo(); System

基础知识点(一)

瘦欲@ 提交于 2020-03-16 11:13:45
基础知识点(一) 一、 面向对象思想的好处 1 、面向对象也是基于面向过程的编程思想,但是面向对象相比于面向过程更符合我们的思维方式,万物皆对象。 2 、可以将复杂的问题简单化,大大提高了程序的可读性和可维护性 3 、面向过程思想中,我们是程序的执行者,面向对象当中,我们是程序的调用者,这样的话也可以方便程序给其他人调用,提高了程序的扩展性 面向对象的三大基本特征以及五大基本原则: 基本特征: 1 、封装 2 、继承 3 、多态 基本原则: 1、 单一职责原则 2、 里氏替换原则 3、 依赖倒置原则 4、 接口隔离原则 5、 开放封闭原则 二、 类:类是抽象的,是一组相关的属性和行为的集合,一个模板。 对象:对象是具体的,是客观存在的实例,是该类事物的具体体现 属性 —— 对象具有的各种特征 每个对象的每个属性都拥有特定值 方法 —— 对象执行的操作 三、对象和类的关系:特殊到一般,具体到抽象。 类:我们叫做 class 。 对象:我们叫做 Object, instance( 实例 ) 。以后我们说某个类的对象,某个类的实例。是一样的意思。 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。 对象是 Java 程序的核心,在 Java 程序中“万事万物皆对象”。 JDK

反射

≯℡__Kan透↙ 提交于 2020-03-16 11:10:08
java反射(特别通俗易懂) 2018年05月02日 11:08:15 java知识社 阅读数:18739 反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. 以上的总结就是什么是反射 反射就是把java类中的各种成分映射成一个个的Java对象 例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。 (其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述) 如图是类的正常加载过程:反射的原理在与class对象。 熟悉一下加载的时候:Class对象的由来是将class文件读入内存,并为之创建一个Class对象。 其中这个Class对象很特殊。我们先了解一下这个Class类 二、查看Class类在java中的api详解(1.7的API)

java中反射的基本使用

痞子三分冷 提交于 2020-03-16 11:00:30
fanShe.java package example5; class fanShe{ /*1.应用在一些通用性比较高的代码中。 *2.后面学的框架,大多数都是应用框架来实现的。 *3.在框架开发中,都是基于配置文件来开发。在配置文件中配置了类,可以通过反射得到类中的所有内容,可以让类中的某个方法来执行。 *类中的所有内容:属性,没有参数的构造方法,有参数的构造方法,普通方法。 *反射的原理: *代码保存在.java文件中保存至本地硬盘-->编译得到.class文件-->把class类使用jvm中的类加载器加载至内存-->Class类(字节码文件在内存中的表示) *我如果得到了这个Class类,便可以得到类里所有的内容 *使用反射首先需要得到Class类(三种方法) *(1)类名.class *(2)对象名.getClass() *(3)使用Class.forName("类的路径") *属性通过一个类Field获得。 *构造方法通过一个类constructor获得。 *普通方法通过一个类method获得。 */ private String name; int age; //无参数的构造方法 public fanShe() {} //有参数的构造方法 public fanShe(String name, int age) { super(); this.name = name;

java构造方法

放肆的年华 提交于 2020-03-15 22:22:17
当我们不定义构造方法的时候,如果直接赋值会出现报错: package com.imooc.constructionmethod; class ExamplePerson { public String name; public int age; } public class example { public static void main(String[] args) { ExamplePerson mi = new ExamplePerson("mi",12); //不能这样直接传参 System.out.println(mi.name); } } 执行结果: 之前我们是这样: public class example2 { public static void main(String[] args) { ExamplePerson mi = new ExamplePerson(); mi.name = "mi"; //直接给字段赋值 System.out.println(mi.name); } } 当然,还可以配置一个方法: public void setName(String name) { this.name = name; } public String getName() { return name; } 这样就可以获取值了: mi.setName("mi");

构造方法

喜欢而已 提交于 2020-03-14 20:13:05
  构造方法必须满足以下语法规则:   (1)方法名必须与类名相同。   (2)不要声明返回类型。   (3)不能被static、final、synchronized、abstract和native修饰。 一、重载构造方法   Java语言允许在一个构造方法中,用this语句来调用另一个构造方法。用this语句来调用其他构造方法时,必须遵守以下语法规则:   (1)假如在一个构造方法中使用了this语句,那么它必须作为构造方法的第一条语句。   (2)只能在一个构造方法中用this语句来调用类的其他构造方法,而不能在实例方法中用this语句来调用类的其他构造方法。   (3)只能用this语句来调用其他构造方法,而不能通过方法名来直接调用构造方法。以下对构造方法的调用方法是非法的: 1 public Employee(){ 2 String name = "无名氏"; 3 Employee(name); //编译错误,不能通过方法名来直接调用构造方法 4 } 二、默认构造方法   默认构造方法是没有参数的构造方法,可分为两种:   (1)隐含的默认构造方法,   (2)程序显式定义的默认构造方法   Java语言自动提供一个隐含的默认构造方法,该构造方法没有参数,用public修饰,而且方法体为空。           public Classnema(){} /

JAVA中this用法小结

你说的曾经没有我的故事 提交于 2020-03-14 11:07:32
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。 1 package test; 2 3 public class ThisTest { 4 5 private int i=0; 6 7 //第一个构造器:有一个int型形参 8 9 ThisTest(int i){ 10 11 this.i=i+1;//此时this表示引用成员变量i,而非函数参数i 12 13 System.out.println("Int constructor i——this.i: "+i+"——"+this.i); 14 15 System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); 16 17 //从两个输出结果充分证明了i和this.i是不一样的! 18 19 } 20 21 // 第二个构造器:有一个String型形参 22 23 ThisTest(String s){ 24 25 System

Java中的类和对象怎么理解?

橙三吉。 提交于 2020-03-14 02:30:17
一:类和对象的概念 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类:类是一个模板,它描述一类对象的行为和状态。 Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。 软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } } 一个类可以包含以下类型变量: 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法

java中this和super关键字

百般思念 提交于 2020-03-14 01:24:42
this表示当前对象,也就是当前类对象。 super表示当前类的父类。 this()语句和super()语句,只能在构造方法中使用,且都只能在构造方法中的第一行,所以他们不能同时出现。 如果一个类有父类,则这个类中所有构造方法中默认存在super()语句,这个语句用来调用父类的构造方法,所以说父类优先创建于子类。 如果这个之类的构造方法中有this()语句,则就不能存在super()语句,this()表示调用当前类的构造方法。 this和this(),this是关键字,代表当前类的对象,可以用了调用当前类的属性和方法,而this()代表当前类的构造方法,只能在构造方法中使用。 来源: https://www.cnblogs.com/yamiya/p/12490048.html