JAVA學(xué)習(xí)問題匯總


問題30:


問題29:

aa

cc:
aasdf


問題28:


問題27:


問題26:


問題25:


問題24:


問題23:


問題22:


問題21:


問題20:


問題19:


問題18:


問題17:
多線程的同步:

  1. 同步鎖對(duì)象
package hello;

public class TicketThread  implements Runnable{
    
    int tickets = 50;
    Object mutex = new Object();
    

    @Override
    public void run() {
        while(true) {
            synchronized (mutex) {
                if(tickets > 0) {
                    try {
                        Thread.sleep(100);
                        
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + ":" + tickets--);
                }
            }

        }
        
    }


}

  1. 非靜態(tài)同步方法(非靜態(tài)同步方法的鎖對(duì)象是this)
package hello;

public class TicketThread  implements Runnable{
    
    int tickets = 50;
    Object mutex = new Object();
    

    @Override
    public void run() {
        while(true) {
            method();

        }
        
    }

    protected synchronized void method() {
        if(tickets > 0) {
            try {
                Thread.sleep(100);
                
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + ":" + tickets--);
        }
    }


}

  1. 靜態(tài)同步方法(靜態(tài)同步方法的鎖對(duì)象是當(dāng)前類的字節(jié)碼對(duì)象)

問題16:
多線程的兩種實(shí)現(xiàn)方式:

  1. extended Thread
  2. implements Runnable

問題15:
編碼表:

ASCII 基本碼表
GBK 中國(guó)字符碼表
Unicode 所有字符都占2個(gè)字節(jié)
UTF-8 長(zhǎng)度可變碼表
ANSI 本地編碼表腿倚,根據(jù)系統(tǒng)環(huán)境語言變化纯出。


問題14:
Properties和IO流結(jié)合功能:

Properties是Hashtable的子類,屬于持久屬性集敷燎。
void list(PrintWriter out)可以直接將集合輸出暂筝。
void load(Reader reader)


問題14:
輸入輸出流:

標(biāo)準(zhǔn)輸入輸出流:
    輸入 System.in
    輸出 System.out


字節(jié)流:
    輸入  InputStream  FileInputStream
    輸出  OutputStream FileOutputStream

字符流:(字符流= 字節(jié)流+編碼)
    輸入  Reader  FileReader
    輸出  Writer  FileWriter

字節(jié)流與字符流之間的橋梁:
    InputStreamReader  #是字節(jié)流通向字符流的橋梁
    OutputStreamWriter #是字符流通向字節(jié)流的橋梁
    
高效緩沖字節(jié)流:        
    BufferedInputStream 
    BufferedOutputStream
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    BufferedReader br =  new BufferedReader(new FileReader("a.txt"))
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))
    BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"))

    
高效緩沖字符流:    
    BufferedReader
    BufferedWriter
    

打印流:
PrintStream()
PrintWriter()  #自動(dòng)將字節(jié)輸出流轉(zhuǎn)換為字符輸入流浑吟。 類似:new BufferedWriter(new FileWriter("a.txt"))
特點(diǎn):自動(dòng)換行(print如绸,println淑仆,format)荸百、自動(dòng)刷新(print,println踪央,format)


對(duì)象操作流:
ObjectOutputStream(OutputStream out)
ObjectInputStream(InputStream in)
注意:對(duì)象操作流的對(duì)象一定要實(shí)現(xiàn)序列化接口Serializable抚恒。解決對(duì)實(shí)現(xiàn)序列化接口出現(xiàn)的黃色警告問題,需要手動(dòng)
給類添加序列號(hào)serialVersionUID温赔。

問題13:
Map對(duì)象的兩種遍歷方式

方式一: 先獲取keyset拄衰,然后遍歷它褪。

       Map<String, String> map =  new HashMap<String, String>();
       System.out.println(map.put("wy001", "czh"));
       System.out.println(map.put("wy002", "ouyy"));
       System.out.println(map.put("wy003", "xcz"));
       
       System.out.println(map);
       Set<String> keys = map.keySet();
       for (String key : keys) {
           
           String value = map.get(key);
           System.out.println(value);
       }
       

方式二:獲取map.entry,然后遍歷肾砂。

        Map<String, String> map =  new HashMap<String, String>();
        System.out.println(map.put("wy001", "czh"));
        System.out.println(map.put("wy002", "ouyy"));
        System.out.println(map.put("wy003", "xcz"));
        
        System.out.println(map);
        Set<Map.Entry<String, String>>  entrys = map.entrySet();
        for(Map.Entry<String, String> entry : entrys) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "+" + value);
            
            
        }
        

問題12:
集合的三種遍歷方式:

  1. toArray() ---- 轉(zhuǎn)換為數(shù)組遍歷
  2. Iterator ---- 采用迭代器對(duì)象
  3. for(obj st : c) ---- 增強(qiáng)for
    備注:對(duì)于List集合還可以用普通for循環(huán)來遍歷,因?yàn)橛衖ndex宏悦。

問題11:
迭代器并發(fā)修改錯(cuò)誤:
使用迭代器迭代集合的同時(shí)需要修改集合元素:

錯(cuò)誤方式:

package hello;

import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.ListIterator;

public class IteratorDemo {

    public static void main(String[] args) {
        Collection  c  = new ArrayList();
        
        c.add("hello");
        c.add("world");
        c.add("java");
        
        Iterator it = c.iterator();

        while(it.hasNext()) {
            String s = (String) it.next();
            if(s.equals("java")) {
                c.add("android");
            }
        }
        System.out.println(c);
    }

}

迭代器是原來集合的一個(gè)副本镐确,當(dāng)?shù)鞑僮鞯臅r(shí)候,發(fā)現(xiàn)和集合不一樣饼煞,會(huì)報(bào)并發(fā)修改異常源葫。

正確方式:

import java.awt.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.ListIterator;

public class IteratorDemo {

    public static void main(String[] args) {
        ArrayList  c  = new ArrayList();
        
        c.add("hello");
        c.add("world");
        c.add("java");
        
        ListIterator it = c.listIterator();

        while(it.hasNext()) {
            String s = (String) it.next();
            if(s.equals("java")) {
                it.add("android");
            }
        }
        System.out.println(c);
    }

}

用迭代器來修改集合,迭代完成后砖瞧,會(huì)同步到原集合息堂。


問題10:
基本數(shù)據(jù)類型和相對(duì)應(yīng)的包裝類

基本數(shù)據(jù)類型 相對(duì)應(yīng)的包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolen Boolen

問題9:
修飾符總結(jié):

修飾符 成員變量 成員方法 構(gòu)造方法
public Y Y Y Y
default Y Y Y Y
protected N Y Y Y
private N Y Y Y
abstract Y N Y N
static N Y Y N
final Y Y Y N

備注:Y代表可以修飾,N代表不能修飾。成員內(nèi)部類不在此次考慮范圍內(nèi)荣堰。static 可以修飾成員內(nèi)部類床未。


問題8:
權(quán)限修飾符的方法的作用域:

  • public : 當(dāng)前類、相同包下不同類振坚、不同包下的類
  • default : 當(dāng)前類薇搁、相同包下不同類
  • protected: 當(dāng)前類、相同包下不同類
  • private:當(dāng)前類
    另外:default是用于包內(nèi)渡八,protected可以用于子類啃洋。

問題7:
多態(tài)成員特點(diǎn):

  • 成員變量:成員變量是沒有重寫的,所以編譯時(shí)看左邊屎鳍,運(yùn)行時(shí)看左邊宏娄。
  • 成員方法:編譯時(shí)看左邊,運(yùn)行時(shí)看右邊逮壁。
  • 靜態(tài)方法:編譯時(shí)看左邊孵坚,運(yùn)行時(shí)看左邊。
package hello;

public class PoymorphicDemo {
    public static void main(String[] args) {
        
        Animal a = new Cat();
        System.out.println(a.num);//20
        a.eat();//cat eat fish...
        a.foo();//我是父類靜態(tài)方法
    }
}

class Animal{
    int num = 20;
    
    public void eat() {
        System.out.println("eating ...");
    }
    
    public static void foo() {
        System.out.println("我是父類靜態(tài)方法");
    }
}

class Cat extends Animal{
    
    int num = 10;
    public void eat() {
        System.out.println("cat eat fish");
    }
    
    public static void foo() {
        System.out.println("我是子類靜態(tài)方法");
    }
}

問題6:
final修飾類貌踏、成員方法十饥、成員變量

  • final修飾類:不能被繼承、不能有子類祖乳。
  • final修飾的成員方法:不能被重寫逗堵。
  • final修飾的成員變量:不可以被修改,一旦初始化就不可以改變眷昆。
    • 可以顯示初始化:final int a = 1蜒秤;
    • 可以構(gòu)造初始化: 在構(gòu)造函數(shù)中進(jìn)行初始化。

問題5:
抽象類與接口的區(qū)別:

抽象類 接口
單繼承 多實(shí)現(xiàn)
有抽象方法也有非抽象方法 只能有抽象方法
有成員變量也可以有成員常量 只能有成員常量
有構(gòu)造方法 無構(gòu)造方法

問題4:
List接口和Set接口的區(qū)別:

List 接口實(shí)現(xiàn)的類中元素是有序可重復(fù)的亚斋。
Set 接口實(shí)現(xiàn)的類中元素是無序不重復(fù)的作媚。


問題3:
接口與類之間的關(guān)系

  1. 類與類之間的關(guān)系:繼承 extends, 單一繼承,多層繼承
  2. 類與接口之間的關(guān)系:實(shí)現(xiàn) implements帅刊, 多繼承纸泡,多實(shí)現(xiàn)
  3. 接口與接口之間的關(guān)系:繼承 extends

問題2
String類型的比較,看如下代碼和相應(yīng)的結(jié)果:

String s1 = new String("hello");
String s2 = "hello";
String s3 = "hello";

System.out.println(s1==s2);//false
System.out.println(s1==s3);//false
System.out.println(s2==s3);//true

為什么最后一個(gè)比較的結(jié)果為true赖瞒?

為了字符串的重復(fù)使用女揭,字符串常量的內(nèi)容是存儲(chǔ)在方法區(qū)的常量池里面的。如下圖所示:


字符串常量存儲(chǔ)結(jié)構(gòu)

問題1:
String為引用類型栏饮,當(dāng)String變量作為函數(shù)參數(shù)傳遞時(shí)吧兔,即使函數(shù)內(nèi)部修改了String的值,為什么不影響原來的值(函數(shù)外面的該參數(shù))袍嬉,為什么和傳遞數(shù)組名不一樣境蔼?

JAVA數(shù)據(jù)類型有兩種:基本類型引用類型

  1. 基本類型:byte short int long float double char boolen
  2. 引用類型:類灶平、接口、數(shù)組

原因:String是一個(gè)final修飾的類箍土,JAVA虛擬機(jī)在每次修改String的值時(shí)都是重新申請(qǐng)內(nèi)存逢享。因此不會(huì)影響方法外該變量的值。如果用StringBuilder就不一樣了涮帘,用append拼接字符串后拼苍,是在原有地址上擴(kuò)充。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末调缨,一起剝皮案震驚了整個(gè)濱河市疮鲫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弦叶,老刑警劉巖俊犯,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伤哺,居然都是意外死亡燕侠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門立莉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绢彤,“玉大人,你說我怎么就攤上這事蜓耻∶2埃” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵刹淌,是天一觀的道長(zhǎng)饶氏。 經(jīng)常有香客問我,道長(zhǎng)有勾,這世上最難降的妖魔是什么疹启? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蔼卡,結(jié)果婚禮上喊崖,老公的妹妹穿的比我還像新娘。我一直安慰自己雇逞,他們只是感情好荤懂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喝峦,像睡著了一般势誊。 火紅的嫁衣襯著肌膚如雪呜达。 梳的紋絲不亂的頭發(fā)上谣蠢,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼眉踱。 笑死挤忙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谈喳。 我是一名探鬼主播册烈,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼婿禽!你這毒婦竟也來了赏僧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤扭倾,失蹤者是張志新(化名)和其女友劉穎淀零,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膛壹,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驾中,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了模聋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肩民。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖链方,靈堂內(nèi)的尸體忽然破棺而出持痰,到底是詐尸還是另有隱情,我是刑警寧澤侄柔,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布共啃,位于F島的核電站,受9級(jí)特大地震影響暂题,放射性物質(zhì)發(fā)生泄漏移剪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一薪者、第九天 我趴在偏房一處隱蔽的房頂上張望纵苛。 院中可真熱鬧,春花似錦言津、人聲如沸攻人。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怀吻。三九已至,卻和暖如春初婆,著一層夾襖步出監(jiān)牢的瞬間蓬坡,已是汗流浹背猿棉。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屑咳,地道東北人萨赁。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像兆龙,于是被迫代替她去往敵國(guó)和親杖爽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容