2020-03-9

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)部類(lèi)
匿名內(nèi)部類(lèi)不可以定義構(gòu)造器:由于構(gòu)造器的名字必須與類(lèi)名相同,而匿名類(lèi)沒(méi)有類(lèi)名,所以匿名類(lèi)不能有構(gòu)造器。
匿名內(nèi)部類(lèi)的創(chuàng)建格式為: new 父類(lèi)構(gòu)造器(參數(shù)列表)|實(shí)現(xiàn)接口(){
//匿名內(nèi)部類(lèi)的類(lèi)體實(shí)現(xiàn)
}
在使用匿名內(nèi)部類(lèi)的過(guò)程中,我們需要注意如下幾點(diǎn):
1、使用匿名內(nèi)部類(lèi)時(shí),我們必須是繼承一個(gè)類(lèi)或者實(shí)現(xiàn)一個(gè)接口,但是兩者不可兼得,同時(shí)也只能繼承一個(gè)類(lèi)或者實(shí)現(xiàn)一個(gè)接口。
2、匿名內(nèi)部類(lèi)中是不能定義構(gòu)造函數(shù)的。
3、匿名內(nèi)部類(lèi)中不能存在任何的靜態(tài)成員變量和靜態(tài)方法。
4、匿名內(nèi)部類(lèi)為局部?jī)?nèi)部類(lèi),所以局部?jī)?nèi)部類(lèi)的所有限制同樣對(duì)匿名內(nèi)部類(lèi)生效。
5、匿名內(nèi)部類(lèi)不能是抽象的,它必須要實(shí)現(xiàn)繼承的類(lèi)或者實(shí)現(xiàn)的接口的所有抽象方法。

3.getDeclaredMethods()的作用
public Method[] getDeclaredMethods()返回類(lèi)或接口聲明的所有方法,包括public, protected, default (package) 訪(fǎng)問(wèn)和private方法的Method對(duì)象,但不包括繼承的方法。當(dāng)然也包括它所實(shí)現(xiàn)接口的方法。
public Method[] getMethods()返回類(lèi)的所有public方法,包括其繼承類(lèi)的公用方法,當(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包中不能被繼承的類(lèi):
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ù)類(lèi)型是?
switch語(yǔ)句后的控制表達(dá)式只能是short、char、int、long整數(shù)類(lèi)型和枚舉類(lèi)型,不能是float,double和boolean類(lèi)型。String類(lèi)型是java7開(kāi)始支持。

7.java中,有關(guān)繼承的說(shuō)法
使用反射可以看出子類(lèi)是繼承了父類(lèi)的私有方法的(不管是否是final),只是直接調(diào)用父類(lèi)的私有方法是不可以的,但是利用反射的方式可以調(diào)用。字段同理。

``
package work.litao;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
class Parent{
Parent() {
System.out.println("調(diào)用父類(lèi)構(gòu)造方法!");
}
private static void staticParent() {
System.out.println("調(diào)用父類(lèi)靜態(tài)方法");
}
private final void finalParent() {
System.out.println("調(diào)用父類(lèi)final方法");
}
private void printParent(){
System.out.println("調(diào)用父類(lèi)私有方法");
}
}
class Child extends Parent {
public void printChild(){
System.out.println("調(diào)用子類(lèi)公有方法");
}
}
public class Test {
public static void main(String[] args) throws Exception {
//獲取子類(lèi)
Class clazz = Class.forName("work.litao.Child");
//得到父類(lèi)
Class superClass = clazz.getSuperclass();
//得到父類(lèi)非繼承的所以方法
Method[] methods = superClass.getDeclaredMethods();
//設(shè)置私有方法可以被訪(fǎng)問(wèn)
AccessibleObject.setAccessible(methods,true);
for (Method m:methods) {
System.out.println();
System.out.println("子類(lèi)調(diào)用方法"+m.getName()+"()的調(diào)用結(jié)果:" );
m.invoke(new Child());
}

}

}

運(yùn)行結(jié)果:

![image](https://upload-images.jianshu.io/upload_images/16658008-abc61b795edf9e10?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



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.   [子類(lèi)從其父類(lèi)繼承所有成員(字段,方法和嵌套類(lèi))。 構(gòu)造函數(shù)不是成員,所以它們不被子類(lèi)繼承,但是可以從子類(lèi)調(diào)用超類(lèi)的構(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.包裝類(lèi)型如果沒(méi)有賦值的話(huà),默認(rèn)為null
例如 Byte 的默認(rèn)初始值為null;而其對(duì)應(yīng)的基本數(shù)據(jù)類(lèi)型的默認(rèn)初始值為0。

9.類(lèi)的初始化過(guò)程:方法的執(zhí)行過(guò)程
父類(lèi)靜態(tài)域——》子類(lèi)靜態(tài)域——》父類(lèi)成員初始化——》父類(lèi)構(gòu)造塊——》1父類(lèi)構(gòu)造方法——》2子類(lèi)成員初始化——》子類(lèi)構(gòu)造塊——》3子類(lèi)構(gòu)造方法;

10.類(lèi)初始化的相關(guān)知識(shí):主動(dòng)引用的情況
對(duì)于初始化階段,虛擬機(jī)規(guī)范則是嚴(yán)格規(guī)定了有且只有5種情況必須立即對(duì)類(lèi)進(jìn)行“初始化”( 而加載、 驗(yàn)證、 準(zhǔn)備自然需要在此之前開(kāi)始):

- 遇到new、getstatic、putstatic或invokestatic這4條字節(jié)碼指令時(shí),如果類(lèi)沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。
- 使用java.lang.reflect包的方法對(duì)類(lèi)進(jìn)行反射調(diào)用的時(shí)候,如果類(lèi)沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其初始化。
- 當(dāng)初始化一個(gè)類(lèi)的時(shí)候,如果發(fā)現(xiàn)其父類(lèi)還沒(méi)有進(jìn)行過(guò)初始化,則需要先觸發(fā)其父類(lèi)的初始化。
- 當(dāng)虛擬機(jī)啟動(dòng)時(shí),用戶(hù)需要指定一個(gè)要執(zhí)行的主類(lèi)( 包含main()方法的那個(gè)類(lèi)),虛擬機(jī)會(huì)先初始化這個(gè)主類(lèi)。
- 當(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)的類(lèi)沒(méi)有進(jìn)行過(guò)初始化, 則需要先觸發(fā)其初始化。

作者:最后的輕語(yǔ)_dd43
鏈接:http://www.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)注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容