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

Java基础八股文(背诵版)

private: 在同一类内可见,不能修饰类 protected : 对同一包内的类和所有子类可见,不能修饰类 public: 对所有类可见 构造方法、成员变量初始化以及静态成员变量三者的初始化顺序?...重载方法可以改变返回值的类型,覆盖方法不能改变返回值的类型。 接口和抽象类的相同点和不同点? 相同点: 都不能被实例化。 接口的实现类或抽象类的子类需实现接口或抽象类中相应的方法才能被实例化。...JVM 在加载类的时候会执行 static 代码块。static 代码块常用于初始化静态变量。static 代码块只会被执行一次。 修饰内部类。static 内部类可以不依赖外部类实例对象而被实例化。...finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的 finalize()方法。...虽然 JDK1.8 采用了尾插法解决了这个问题,但是并发下的 put 操作也会使前一个 key 被后一个 key 覆盖。

45K2738

php学习之类与对象的构造方法使用技巧

num成员方法,计算变量的2倍的值 4.添加getMax成员方法,计算最大值 ?...构造方法的细节和注意事项: 构造方法没有返回值,就算写了没有任何意义 在创建一个类的新对象时,系统会自动的调用该类的构造方法对新的对象进行初始化 构造方法的作用就是对成员属性进行初始化,而不是创建对象本身...__construct 构造方法没有返回值 作用是对新对象进行初始化 一个类有且只有一个构造方法 如果没有给类自定义构造方法,该类使用系统默认的构造方法 如果给类定义了构造方法,该类的默认构造方法被覆盖...,销毁对象 php垃圾回收机制是php5之后才有的,php5.3之前使用的垃圾回收机制是单纯的引用计数,也就是每个内存对象都分配一个计数器,,当内存对象被变量引用时,计数器+1 ,当变量引用撤掉时,计数器...-1,当计数器=0时,表明内存对象没有被使用,该内存对象则进行销毁,垃圾回收完成 php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一个复杂的算法,来检测内存对象中引用环的存在,以避免内存泄漏

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

    C++重要知识点小结---1

    (a++ , b)的值为2,同时a的值为3; MAX(a++ , b + 10)的值为10,同时a的值为2 9.类定义是不分配空间和初始化的。...,而不是按构造函数说明中冒号后面的顺序,所以num成员被赋的是一个随机值,并不是想赋的16,因为这个时候,成员age还没有被赋值,age的内存空间中是一个随机值。...此时,基类的函数被隐藏(注意别与覆盖混淆) 17....多态性可可以简单的概括为“一个借口,多种方法”,在程序运行的过程中才决定调用的函数。 虚函数就是允许被其子类重新定义的成员函数。而子类重新定义父类虚函数的做法,称为“覆盖”或“重写”。...如果虚函数在基类与子类中出现的仅仅是名字的相同,而参数类型不同,或返回类型不同,即使写上了virtual关键字,则也不进行迟后联编。 19.一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。

    79291

    05 Java 类和对象

    返回值类型 方法名(形参表) [ throws 异常列表 ] { } 其中返回值是方法在操作完成后返还调用它的环境的数据,形式有2种: return 表达式; // 方法返回结果为表达式的值; return...; // 用于无返回值的方法退出,无返回值末尾可不写; 参数传递 基本数据类型的参数传递是以传值的方式进行,即将实际参数的值传递给形参; 在方法内对形参的修改只影响形参单元,不影响实参...对象的初始化和构造方法 在创建对象时,要给对象的属性成员分配内存空间,同时进行初始化。...// 注意首先是按照属性定义的初值,然后是初始化块, 最后是构造方法:构造方法是给对相关设置初值的规范方法,构造方法是根据方法参数给对象属性赋不同的值 成员变量 声明类体中成员变量语法格式如下: [public...被 static 修饰的类成员特点:是共享数据, 随着类的加载而加载, 优先于对象存在, 被所有对象所共享, 可以直接被类名调用. 静态方法 用 static 修饰的方法称为静态方法,也叫类方法.

    63810

    面试题11(谈谈final、finally、finalize的区别)

    在Java核心APⅠ中,有许多应用final的例子,例如 java.lang.String。为String类指定final,防止了人们覆盖length()方法。...final类似于C/C++中的常量,可作类、成员方法、数据成员以及局部变量的修饰符。在修饰类及成员方法时,能够控制类及成员方法是否被继承或重写等功能。 ●修饰类:类不能被继承。...●修饰成员方法:方法不能被重写。 ●修饰数据成员:定义数据成员为常量,可在定义时或者在构造方法中初始化,当 与 static合用时,只能在定义时初始化。...参考答案: final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。...finalize是 Object类的一个方法,在垃圾收集器执行的时候,会调用被回收对象的此方法,可以覆盖此方法,提供垃圾收集时的其他资源回收,例如关闭文件等。

    60390

    面试题11(谈谈final、finally、finalize的区别)

    在Java核心APⅠ中,有许多应用final的例子,例如 java.lang.String。为String类指定final,防止了人们覆盖length()方法。...final类似于C/C++中的常量,可作类、成员方法、数据成员以及局部变量的修饰符。在修饰类及成员方法时,能够控制类及成员方法是否被继承或重写等功能。 ●修饰类:类不能被继承。...●修饰成员方法:方法不能被重写。 ●修饰数据成员:定义数据成员为常量,可在定义时或者在构造方法中初始化,当 与 static合用时,只能在定义时初始化。...参考答案: final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。...finalize是 Object类的一个方法,在垃圾收集器执行的时候,会调用被回收对象的此方法,可以覆盖此方法,提供垃圾收集时的其他资源回收,例如关闭文件等。

    1.5K100

    Java面试之关键字

    final final关键字有哪些用法 修饰数据:只能进行一次赋值操作,并在生命周期内不可改变他的值 修饰方法参数:表示在整个方法中我们不修改参数的值 修饰方法:表示方法不能被覆盖 修饰类:无法被继承...能否在运行时想static final类型的赋值 不可以,被static final修饰的变量只能在被定义的时候或者类的静态代码块中初始化,一旦赋值后就不能再改变了。...Java中是否可以覆盖(override)一个private或者是static的方法 “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。...当程序运行的时候这个变量就会创建直到程序结束后才会被销毁。类变量的作用域和实例变量是一样的。它的初始值和成员变量也是一样的,当变量没被初始化的时候根据它的数据类型,会有一个默认值。...为什么静态方法不能访问成员变量(建议自己用代码尝试一下) 成员方法可以访问静态变量,静态方法不能访问成员变量的原因是因为:被static修饰的属性和方法会随着类的加载而存在,而非静态成员变量则是在该类被创建对象之后才会初始化

    646100

    # 自动内存管理机制

    另一种解决办法时,jvm提供线程缓存空间来创建这个实例,由于线程内的局部变量是不会被共享的,所以可以保证安全,等对象被创建成功后,再使用同步技术,将对象复制到指定的位置。...长期存活的对象将进入老年代 ​ 每个对象上都有一个年龄计数器,一个在eden产生的对象,经历过一次MinorGC后还存活,则被移入Survivor区中,年龄设置为1,以后每熬过一次MinorGC就加1岁...加载、验证、准备、初始化、卸载这5个阶段顺序是确定,类的加载过程必须经历该过程。 而类的解析可以在初始化前,也可以在初始化后(如:动态绑定)。...元数据验证:主要指该类是否符合java语法规范,比如:该类是否有父类,这个类的父类是否被final修饰过,该类非抽象类时是否继承了父类或接口并是否实现了对应的方法,是否覆盖了父类final标记的同名成员等...准备 该阶段将为类的成员分配对应的内存空间并设置默认值,需要注意的是final标记的变量将在该阶段就被赋值为最终值,除此之外的将在初始化时才进行设置对应的实际默认值。

    58110

    ES6-标准入门·数据类型与数据结构

    Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。...先介绍 4 个操作方法: add(value):添加某个值,返回 Set 结构本身。 delete(value):删除某个值,返回一个布尔值,表示删除是否成功。...另外,WeakSet 内部有多少个成员取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的,因此 ES6 规定WeakSet 不可遍历。...同 Set 一样,WeakSet 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。需要注意:成为 WeakSet 的成员的是数组的成员,而不是数组本身。...WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在 WeakSet 实例中。 WeakSet 没有 size 属性,没有办法遍历其成员。

    67530

    ES6入门之Set 和 Map

    Set 1.1 基本用法 Set 类似于数组,但是成员的 值都是唯一的,没用重复的值。Set本身是一个构造函数,用来生成Set数据结构。...删除某个值,返回一个布尔值,表示是否删除成功 Set.prototype.has(value) // 返回一个布尔值,表示该值是否为Set的成员 Set.prototype.clear() // 清除所有成员...WeakSet WeakSet 结构与Set类似,也不是重复的值的集合,但是和Set有两个区别,第一个它的成员只能为对象,另一个它的对象都是弱印象,即垃圾回收机制不考虑 WeakSet对该对象的引用,通俗的讲就是...依赖于垃圾回收进制依赖引用计数,如果一个值的引用次数不为0,那么就不会被回收,但是有的时候,结束使用该值后,会忘记取消引用,就会导致内存无法释放从而导致内存泄漏。...基于以上的特点,WeakSet 成员不适合被引用,所以 WeakSet无法被遍历。

    41210

    Java的面试基础题(一)

    当类被Java虚拟机载入的时候,会对static变量进行初始化。 因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。...) 为2n,在初始化Hashmap时可以对着两个值进行修改,负载因子0.75被证明为是性能比较好的取值,通常不会修改,那么只有初始容量capacity会导致频繁的扩容行为,这是非常耗费资源的操作,所以,...如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存? 不会,在下一个垃圾回收周期中,这个对象将是可被回收的。 Java堆的结构是什么样子的?...垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。...当stub的方法被调用的时候,会经历以下几个步骤: 初始化到包含了远程对象的JVM的连接; 序列化参数到远程的JVM; 等待方法调用和执行的结果; 反序列化返回的值或者是方法没有执行成功情况下的异常

    1.6K20

    Java学习笔记-全栈-Java基础-06-面向对象中的重点

    静态初始化块 在类中使用static修饰一个代码块,会在创建类的时候执行。...1.内部类只是编译概念,编译成功后便会成为两个不同的类,Outer外部类和Inner内部类编译结束后生成Outer.class和Outer$Inner.class 2.兼具成员和类的性质 3.服务于外部类...4.内可调用外(作为成员,显然可以),外不能直接调用内(作为类,对外部类来说内部类没有new出来) 5.静态和非静态在内部类中不能同时出现(作为成员,要么在栈,要么在method area) 6.静态内部类只具有成员的性质...Java技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没被引用时对这个对象调用的。...它是在Object类中定义的,因此所的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

    41720

    万字长文【C++】高质量编程指南

    8.高质量编程 8.1.基础知识 1,应用 ifndef/define/endif结构产生预处理块的目的是:防止头文件被重复引用。...(s1+s2); return temp; 上述代码将发生三件事: 1,首先temp对象被创建,同时完成初始化 2,然后拷贝构造函数把temp拷贝到保存返回值的外部存储单元中 3,最后,temp在函数结束时被销毁...,成为野指针的原因有: 1,指针变量没有被初始化 指针变量在创建的同时应当被初始化,要么将指针设置为 NULL,要么让它指向合法的内存。...辨识重载:靠参数而不是返回值的不同来区分重载函数,编译器根据参数为每个重载函数产生不同的内部标识符号。 extern "C"的用处 如果C++程序要调用已经被编译后的C函数,我?...例如 void Print(⋯); // 全局函数 class A {⋯ void Print(⋯); // 成员函数 } //全局函数的调用 ::Print(i) 8.3.2.覆盖 成员函数被重载

    1.6K20

    Java课程主要内容回顾

    for 循环的三段分号分别是初始化语句、循环条件、循环后操作,它们分别在进入循环前、每次循环前和每次循环后执行。 while 循环在循环开始前先判断条件是否成立,如果不成立,则一次都不执行。...在Java中,一旦数组被创建,其长度就是固定的,无法直接改变。 如何访问数组中的元素?数组的初始化方式有哪些? 可以通过索引(下标)访问数组中的元素,索引从0开始计数。...在方法中,为什么成员变量可以使用默认值而方法变量(局部变量)不能? 成员变量可以使用默认值是因为它们在对象创建时已经分配了内存并赋予了默认值。...对象成员变量初始化 除了在构造函数中,对象的成员变量还能在哪些地方进行初始化?语句块和构造方法的执行顺序是怎样的? 对象的成员变量可以在构造方法中初始化,同时也可以在实例化代码块中进行初始化。...不存在类似于C++中析构函数的概念,Java的垃圾收集器自动管理对象的销毁。 内部类 什么是内部类和匿名类?它与外部类的成员的访问有何特点?(可以看一下) 内部类是定义在另一个类内部的类。

    10710

    1、Java从入门到精通

    局部变量的生命周期取决于方法,当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,当该方法调用结束后,则会释放方法中的局部变量所占用的空间。...(2)数组存储在Java堆的连续内存空间。 (3)数组是一个固定长度的数据结构,一旦声明,不能改变数组的长度。 (4)如果没有明确的初始化元素,那么数组就会用默认的类型值初始化。...如果希望成员变量不被其中任何一个对象改变,可以使用static关键字(一个被声明为static的成员变量的值可以被本类或其他类的对象共享) (2)匿名对象 没有被其他对象所引用,使用一次就变成了垃圾 (...static final 用来修饰成员变量和成员方法。可以理解为“全局常量”。 对于变量,表示一旦给值就不可修改,并且通过类名可以访问; 对于方法,表示不可覆盖,并且可以通过类名直接访问。...public static final类型的,必须被显示初始化,即接口中的成员变量为常量。

    80210

    对PHP变量的实现方式以及内存管理的梳理

    如果当变量的refcount减少后大于0,PHP并不会立即进行对这个变量进行垃圾鉴定,而是放入一个缓冲buffer中,等这个buffer满了以后(10000个值)再统一进行处理,加入buffer的是...PHP脚本运行的时候,那些变量被放到了栈内存,那些被保存到了堆内存? 在PHP5的Zend Engine的实现中,所有的值都是在堆上分配空间,并且通过引用计数和垃圾收集来管理....PHP5的Zend Engine主要使用指向zval结构的指针来操作值,在很多地方甚至通过zval的二级指针来操作....而在PHP7的Zend Engine实现中,值是通过zval结构本身来操作(非指针). 新的zval结构直接被存放在VM[虚拟机?]的栈上,HashTable的桶里,以及属性槽里....这样大大减少了在堆上分配和释放内存的操作,还避免了对简单值的引用计数和垃圾收集. 引用: PHP对象在内存堆栈中的分配 - web21 - 博客园 《PHP7内核剖析》

    87720

    Java入门(6)-- 类和对象

    在局部变量或方法参数覆盖了成员变量时,就要添加this关键字明确引用的是类成员还是局部变量或方法的参数。 this除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。...//构造方法体 } 在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初始化。 如果类中没有明确定义构造方法,编译器会自动创建一个不带参数的默认构造方法。...被声明为static的变量、常量和方法被称为静态成员,静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”调用静态成员。...如果i被定义为静态成员变量,即使使用两个对象对同一个静态成员变量进行操作,依然可以改变静态成员变量的值,因为在内存中两个对象同时指向同一块内存区域: 6.6.3 对象的引用 引用语法:类名 对象引用名称...用户可以在自己的类中定义这个方法,在垃圾回收时会首先调用该方法,在下一次回收动作发生时,才真正回收被对象占用的内存。

    44220

    .NET 面试题汇总(带答案)

    ,而stringstr=null初始化对象 21.详述.NET里class和struct的异同 答:结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项...所有结构都直接继承自 System.ValueType,后者继承自 System.Object。   结构可以实现接口。   在结构中初始化实例字段是错误的。 22.什么叫应用程序域?...装箱和拆箱:装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。   ...在进行垃圾回收时,垃圾回收器会首先搜索内存中的托管对象,然后从托管代码中搜索被引用的对象并标记为有效,接着释放没有被标记为有效的对象并收回内存,最后整理内存将有效对象挪动到一起 33.GC是什么?...Java 技术允许使用finalize() 方法在垃圾收集器将对像从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。

    1.2K30

    腾讯 Java 高频面试题详解总结(转)

    二、典型的垃圾收集算法 在确定了哪些垃圾可以被回收后,垃圾收集器要做的事情就是开始进行垃圾回收,但是这里面涉及到一个问题是:如何高效地进行垃圾回收。...2、final成员变量表示常量,只能被赋值一次,赋值后值不再改变。   final不能用于修饰构造方法。...3、当final关键字修饰变量(包括成员变量和局部变量)时 当final关键字修饰变量时,表示该变量是常量,在初始化时便要赋值并且只能被赋值一次,初始化之后不能更改。。...当用final作用于类的成员变量时,成员变量必须在声明时或者构造器中进行初始化赋值,否则会报错,而局部变量只需要在使用之前被初始化赋值即可: 在这里插入图片描述 对于final修饰的变量初始化之后不能更改...在静态的方法中只能够引用外部类的中的静态成员方法或者成员变量。 *类级内部类相当于其外部类的成员,只有在第一次被使用的时候才会被装载。 再来看看多线程缺省同步锁的知识。

    35520

    3分钟带你了解对象的创建过程

    2.1、类加载检查 当需要创建一个类的实例对象时,比如通过new xxx()方式,虚拟机首先会去检查这个类是否在常量池中能定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化...2.2、分配内存 类加载成功后,虚拟机就能够确定对象的大小了,此时虚拟机会在堆内存中划分一块对象大小的内存空间出来,分配给新生对象。 虚拟机如何在堆中分配内存的呢?...2.3、初始化零值 初始化零值,顾名思义,就是对分配的这一块内存初始化零值,也就是给实例对象的成员变量赋于零值,比如 int 类型赋值为 0,引用类型为null等操作。...这样对象就可以在没有赋值情况下使用了,只不过访问对象的成员变量都是零值。...当一个对象在方法里面被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中,这种称为方法逃逸;甚至还有可能被外部线程访问到,譬如赋值给可以在其他线程中访问的实例变量,这种称为线程逃逸。

    26410
    领券