1.假如某個(gè)JAVA進(jìn)程的JVM參數(shù)配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
請(qǐng)問(wèn)eden區(qū)最終分配的大小是多少?
Xmn=Eden+S0+S1 =500M,又因?yàn)镸mn初始化時(shí)Eden:S0:S1 = 3:1:1,故而Eden的大小為300M。
2.有關(guān)匿名內(nèi)部類
匿名內(nèi)部類不可以定義構(gòu)造器:由于構(gòu)造器的名字必須與類名相同,而匿名類沒(méi)有類名,所以匿名類不能有構(gòu)造器。
匿名內(nèi)部類的創(chuàng)建格式為: new 父類構(gòu)造器(參數(shù)列表)|實(shí)現(xiàn)接口(){
//匿名內(nèi)部類的類體實(shí)現(xiàn)
}
在使用匿名內(nèi)部類的過(guò)程中,我們需要注意如下幾點(diǎn):
1、使用匿名內(nèi)部類時(shí),我們必須是繼承一個(gè)類或者實(shí)現(xiàn)一個(gè)接口,但是兩者不可兼得,同時(shí)也只能繼承一個(gè)類或者實(shí)現(xiàn)一個(gè)接口。
2、匿名內(nèi)部類中是不能定義構(gòu)造函數(shù)的。
3、匿名內(nèi)部類中不能存在任何的靜態(tài)成員變量和靜態(tài)方法。
4、匿名內(nèi)部類為局部?jī)?nèi)部類,所以局部?jī)?nèi)部類的所有限制同樣對(duì)匿名內(nèi)部類生效。
5、匿名內(nèi)部類不能是抽象的,它必須要實(shí)現(xiàn)繼承的類或者實(shí)現(xiàn)的接口的所有抽象方法。
3.getDeclaredMethods()的作用
public Method[] getDeclaredMethods()返回類或接口聲明的所有方法,包括public, protected, default (package) 訪問(wèn)和private方法的Method對(duì)象,但不包括繼承的方法。當(dāng)然也包括它所實(shí)現(xiàn)接口的方法。
public Method[] getMethods()返回類的所有public方法,包括其繼承類的公用方法,當(dāng)然也包括它所實(shí)現(xiàn)接口的方法。
4.有關(guān)Statement和PreparedStatement
創(chuàng)建Statement是不傳參的,PreparedStatement是需要傳入sql語(yǔ)句。
Statement sta=con.createStatement();
ResultSet rst=sta.executeQuery(“select * from book”);
PreparedStatement pst=con.prepareStatement(“select * from book”);
ResultSet rst=pst.executeQuery();
5.Java.lang包中不能被繼承的類:
public final class Byte
public final class Character
public static final class Character.UnicodeBlock
public final class Class<T>
public final class Compile
public final class Double
public final class Float
public final class Integer
public final class Long
public final class Math
public final class ProcessBuilder
public final class RuntimePermission
public final class Short
public final class StackTraceElement
public final class StrictMath
public final class String
public final class StringBuffer
public final class StringBuilder
public final class System
public final class Void
6.在java7中,不能做switch()的參數(shù)類型是?
switch語(yǔ)句后的控制表達(dá)式只能是short、char、int、long整數(shù)類型和枚舉類型,不能是float,double和boolean類型。String類型是java7開(kāi)始支持。
7.java中,有關(guān)繼承的說(shuō)法
使用反射可以看出子類是繼承了父類的私有方法的(不管是否是final),只是直接調(diào)用父類的私有方法是不可以的,但是利用反射的方式可以調(diào)用。字段同理。
``
package work.litao;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
class Parent{
Parent() {
System.out.println("調(diào)用父類構(gòu)造方法!");
}
private static void staticParent() {
System.out.println("調(diào)用父類靜態(tài)方法");
}
private final void finalParent() {
System.out.println("調(diào)用父類final方法");
}
private void printParent(){
System.out.println("調(diào)用父類私有方法");
}
}
class Child extends Parent {
public void printChild(){
System.out.println("調(diào)用子類公有方法");
}
}
public class Test {
public static void main(String[] args) throws Exception {
//獲取子類
Class clazz = Class.forName("work.litao.Child");
//得到父類
Class superClass = clazz.getSuperclass();
//得到父類非繼承的所以方法
Method[] methods = superClass.getDeclaredMethods();
//設(shè)置私有方法可以被訪問(wèn)
AccessibleObject.setAccessible(methods,true);
for (Method m:methods) {
System.out.println();
System.out.println("子類調(diào)用方法"+m.getName()+"()的調(diào)用結(jié)果:" );
m.invoke(new Child());
}
}
}
運(yùn)行結(jié)果:

A subclass inherits all the members (fields, methods, and nested classes) from its superclass. Constructors are not members, so they are not inherited by subclasses, but the constructor of the superclass can be invoked from the subclass. [子類從其父類繼承所有成員(字段,方法和嵌套類)。 構(gòu)造函數(shù)不是成員,所以它們不被子類繼承,但是可以從子類調(diào)用超類的構(gòu)造函數(shù)。]
來(lái)自O(shè)racle官方文檔[https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html](https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html)
資料來(lái)自??途W(wǎng)——牛友:李滔
8.包裝類型如果沒(méi)有賦值的話,默認(rèn)為null
例如 Byte 的默認(rèn)初始值為null;而其對(duì)應(yīng)的基本數(shù)據(jù)類型的默認(rèn)初始值為0。
9.類的初始化過(guò)程:方法的執(zhí)行過(guò)程
父類靜態(tài)域——》子類靜態(tài)域——》父類成員初始化——》父類構(gòu)造塊——》1父類構(gòu)造方法——》2子類成員初始化——》子類構(gòu)造塊——》3子類構(gòu)造方法;
10.類初始化的相關(guān)知識(shí):主動(dòng)引用的情況
對(duì)于初始化階段,虛擬機(jī)規(guī)范則是嚴(yán)格規(guī)定了有且只有5種情況必須立即對(duì)類進(jìn)行“初始化”( 而加載、 驗(yàn)證、 準(zhǔn)備自然需要在此之前開(kāi)始):
- 遇到new、getstatic、putstatic或invokestatic這4條字節(jié)碼指令時(shí),如果類沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。
- 使用java.lang.reflect包的方法對(duì)類進(jìn)行反射調(diào)用的時(shí)候,如果類沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。
- 當(dāng)初始化一個(gè)類的時(shí)候,如果發(fā)現(xiàn)其父類還沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其父類的初始化。
- 當(dāng)虛擬機(jī)啟動(dòng)時(shí),用戶需要指定一個(gè)要執(zhí)行的主類( 包含main()方法的那個(gè)類),虛擬機(jī)會(huì)先初始化這個(gè)主類。
- 當(dāng)使用JDK 1.7的動(dòng)態(tài)語(yǔ)言支持時(shí),如果一個(gè)java.lang.invoke.MethodHandle實(shí)例最后的解析結(jié)果REF_getStatic、REF_putStatic、REF_invokeStatic的方法句柄, 并且這個(gè)方法句柄所對(duì)應(yīng)的類沒(méi)有進(jìn)行過(guò)初始化, 則需要先觸發(fā)其初始化。
作者:最后的輕語(yǔ)_dd43
鏈接:http://m.itdecent.cn/p/3afa5d24bf71
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。