習題22
習題32
習題43
習題54
習題66
習題77
習題89
習題99
習題1011
習題1112
習題1213
習題1315
習題1415
習題1
1.Java語言的主要貢獻者是誰?
2.編寫、運行Java程序需要經過哪些主要步驟?
4.如果JDK的安裝目錄為D:\jdk,應當怎樣設置path的值?
5.下列哪個是JDK提供的編譯器?
A)java.exe
B)javac.exe
C)javap.exe
D)javaw.exe
6.Java源文件的擴展名是什么?Java字節碼的擴展名是什么?
7.下列哪個是Java應用程序主類中正確的main方法聲明?
A)publicvoidmain(Stringargs)
B)staticvoidmain(Stringargs)
C)publicstaticvoidMain(Stringargs)
D)publicstaticvoidmain(Stringargs)
習題2
1.模仿圖2.4簡單繪制出例子2中rectangle和lader對象的內存示意圖。
2.模仿例子2編寫含有3個類的Java應用程序,要求三個類分別在三個源文件中,其中一個源文件包含有名字為
Teacher的類,該類創建的對象調用add(doublea,doubleb)的方法可以得到2個數的和、調用sub(double
a,doubleb)的方法可以得到2個數的差;一個源文件包含有名字為Student的類,該類創建的對象調用speak()
的方法可以可以在命令行窗口輸出“老師好”;一個源文件包含名字為MainClass的主類。要求在主類的main方
法中分別用Teacher和Student類創建對象,使得程序能輸出12與236的和以及234與120的差,并輸出“老師好
”。
3.當源文件中有多個類時,請簡述源文件的命名規則。
4.當代碼量較大時應當使用哪種編程風格?
習題3
1.什么叫標識符?標識符的規則是什么?true是否可以作為標識符。
2.什么叫關鍵字?true和false是否是關鍵字?請說出6個關鍵字。
3.Java的基本數據類型都是什么?
4.上機運行下列程序,注意觀察輸出的結果。
publicclassE{
publicstaticvoidmain(Stringargs){
for(inti=20302;i<=20322;i++){
System.out.println((char)i);
}
5.上機調試下列程序,注意System.out.print()和System.out.println()的區別。
publicclassOutputData{
以太坊JavaScript庫Ethers.js提出EIP-3540:EOF v1:4月7日消息,以太坊 JavaScript 庫 Ethers.js 提出 EIP-3540:EVM Object Format (EOF) v1,目前正在審查中。EIP-3540 為 EVM 字節碼引入了一種容器格式,使分離代碼和數據更加干凈;允許根據平臺規則在部署時驗證字節碼;支持更輕松引入新的突破性更改功能。[2022/4/7 14:09:51]
intx=234,y=432;
System.out.println(x+"<"+(2*x));
System.out.print("我輸出結果后不回車");
System.out.println("我輸出結果后自動回車到下一行");
System.out.println("x+y="+(x+y));
6.編寫一個Java應用程序,輸出全部的大寫英文字母。
7.是否可以將例子4中的
zhangSan.weight=reader.nextFloat();
更改為:
zhangSan.weight=reader.nexDouble();
習題4
1.下列程序的輸出結果是什么?if-else語句的書寫是否規范?
intx=10,y=5,z=100,result=0;
if(x>y)
x=z;
else
y=x;
z=y;
result=x+y+z;
System.out.println(result);
2.下列程序的輸出結果是什么?
charc='\0';
for(inti=1;i<=4;i++){
switch(i){
case1:c='新';
System.out.print(c);
case2:c='親';
break;
case3:c='斤';
default:System.out.print("!");
3.參考例子2,在應用程序中使用if-elseif-else多條件分支語句代替switch語句來判斷整數的中獎情況。
4.為了節約用電,將用戶的用電量分成3個區間,針對不同的區間給出不同的收費標準。對于1至90千瓦
的電量,每千瓦0.6元;對于91至150千瓦的電量,每千瓦1.1元;對于用大于151千瓦的電量,每千瓦1.7元。編
寫一個Java應用程序程序。在主類的main方法中,輸入用戶的用電量,程序輸出電費。
5.編寫一個應用程序,用兩個for循環語句分別輸出大寫和小寫的“字母表”。
6.一個數如果恰好等于它的因子之和,這個數就稱為“完數”。編寫一個應用程序求1000之內的所有完數。
7.編寫一個應用程序求滿足1+2!+3!…+n!<=9876的最大整數n。
習題5
1.類中的實例變量在什么時候會被分配內存空間?
2.什么叫方法的重載?構造方法可以重載嗎?
3.類中的實例方法可以操作類變量(static變量)嗎?類方法(static方法)可以操作實例變量嗎?
4.類中的實例方法可以用類名直接調用嗎?
以太坊JavaScript庫Web3.js發布v1.5.0-rc.0,添加支持倫敦升級和EIP-1559支持:以太坊JavaScript庫Web3.js發布v1.5.0-rc.0,添加支持倫敦升級和EIP-1559支持。
據悉,以太坊兩個最常用JavaScript庫是Ethers.js和Web3.js。
此前消息,以太坊JavaScript庫Ethers.js發布v5.4.0,添加EIP-1559支持。[2021/7/22 1:09:41]
5.簡述類變量和實例變量的區別。
6.下列哪些類聲明是錯誤的?
A)classA
B)publicclassA
C)protectedclassA
D)privateclassA
7.下列A類的類體中~哪些是錯誤的?
classTom{
privateintx=120;
protectedinty=20;
intz=11;
privatevoidf(){
x=200;
System.out.println(x);
voidg(){
publicclassA{
Tomtom=newTom();
tom.x=22;//
tom.y=33;//
tom.z=55;//
tom.f();//
tom.g();//
8.請說出A類中System.out.println的輸出結果。
classB
{intx=100,y=200;
publicvoidsetX(intx)
{x=x;
publicvoidsetY(inty)
{this.y=y;
publicintgetXYSum()
{returnx+y;
publicclassA
{publicstaticvoidmain(Stringargs)
{Bb=newB();
b.setX(-100);
b.setY(-200);
System.out.println("sum="+b.getXYSum());
9.請說出A類中System.out.println的輸出結果。
classB{
intn;
staticintsum=0;
voidsetN(intn){
this.n=n;
intgetSum(){
for(inti=1;i<=n;i++)
sum=sum+i;
returnsum;
Bb1=newB(),b2=newB();
b1.setN(3);
b2.setN(5);
ints1=b1.getSum();
ints2=b2.getSum();
System.out.println(s1+s2);
10.請說出E類中System.out.println的輸出結果。
以太坊基金會JavaScript團隊將發布EIP-1559 / 倫敦就緒版本:5月20日消息,以太坊基金會JavaScript團隊今日凌晨發推表示,如果沒有最新的錯誤或規范更改,將在下周內發布EIP-1559 / 倫敦就緒版本的EthereumJS Block,Tx,VM和Common庫。[2021/5/20 22:23:56]
classA{
doublef(intx,doubley){
returnx+y;
intf(intx,inty){
returnx*y;
Aa=newA();
System.out.println(a.f(10,10));
System.out.println(a.f(10,10.0));
習題6
1.子類將繼承父類的那些成員變量和方法?子類在什么情況下隱藏父類的成員變量和方法?
2.父類的final方法可以被子類重寫嗎?
3.什么類中可以有abstract方法?
4.什么叫對象的上轉型對象?
5.下列敘述哪些是正確的?
final類不可以有子類。
abstract類中只可以有abstract方法。
abstract類中可以有非abstract方法,但該方法不可以用final修飾。
不可以同時用final和abstract修飾一個方法。
6.請說出E類中System.out.println的輸出結果。
doublef(doublex,doubley){
classBextendsA{
doublef(intx,inty){
Bb=newB();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
7.請說出E類中System.out.println的輸出結果。
staticintg(intn){
returnn*n;
doublem=super.f(x,y);
returnm+x*y;
intm=A.g(n);
returnm+n;
System.out.println(b.f(10.0,8.0));
System.out.println(b.g(3));
習題7
1.接口中能聲明變量嗎?
2.接口中能定義非抽象方法嗎?
3.什么叫接口的回調?
4.請說出E類中System.out.println的輸出結果。
interfaceA{
doublef(doublex,doubley);
classBimplementsA{
publicdoublef(doublex,doubley){
intg(inta,intb){
returna+b;
Aa=newB();
System.out.println(a.f(3,5));
Bb=(B)a;
System.out.println(b.g(3,5));
動態 | 供應鏈攻擊再起 黑客入侵JavaScript庫竊取錢包比特幣:供應鏈攻擊是一種高級且非常隱蔽的攻擊模式,通常通過在軟件的依賴庫中嵌入惡意代碼實現,近日降維安全實驗室(johnwick.io)觀察到有黑客獲取了熱門JavaScript庫Event-Stream的控制權,并注入了惡意代碼來竊取Copay錢包內的比特幣等數字貨幣。該惡意代碼默認休眠狀態,當BitPay的Copay錢包啟動后,就會自動激活。它將會竊取用戶錢包內的私鑰并發送至copayapi.host:8080。該惡意代碼9月至11月期間感染了所有版本的Copay錢包。降維安全建議使用Copay錢包的用戶升級到最新版Copay v5.2.2, 使用Event-Stream庫的開發者請更新到v4.0.1。[2018/11/27]
5.請說出E類中System.out.println的輸出結果。
interfaceCom{
intadd(inta,intb);
abstractclassA{
abstractintadd(inta,intb);
classBextendsAimplementsCom{
publicintadd(inta,intb){
Comcom=b;
System.out.println(com.add(12,6));
Aa=b;
System.out.println(a.add(10,5));
習題8
1.內部類的外嵌類的成員變量在內部類中仍然有效嗎?
2.內部類中的方法也可以調用外嵌類中的方法嗎?
3.內部類的類體中可以聲明類變量和類方法嗎?
4.請說出下列程序的輸出結果。
classCry{
publicvoidcry(){
System.out.println("大家好");
Cryhello=newCry(){
publicvoidcry(){
System.out.println("大家好,祝工作順利!");
};
hello.cry();
習題9
1.下列敘述哪些是正確的?
String類是final類,不可以有子類。
String類在java.lang包中。
"abc"=="abc"的值是false.
"abc".equals("abc")的值是true
2.請說出E類中System.out.println的輸出結果。
importjava.util.*;
classGetToken{
Strings;
publicStringgetToken(intindex,Stringstr){
StringTokenizerfenxi=newStringTokenizer(str);
intnumber=fenxi.countTokens();
s=newString;
intk=1;
while(fenxi.hasMoreTokens()){
Stringtemp=fenxi.nextToken();
s=temp;
k++;
超3萬個網站運行Coinhive 占JavaScript挖礦代碼感染網站的92%:Concordia大學發布一份學術報告,拷問基于網頁數字貨幣挖礦是攻擊和商機。該報告發現,目前有超過30000個網站使用Coinhive腳本,占JavaScript挖礦代碼感染網站的92%。報告認為由網站管理員發起的數字貨幣挖礦并不要求用戶同意,是“ 無形的濫用”。Showtime在去年9月舉報Coinhive在旗下兩個網站上秘密運行挖礦代碼。被發現后,Coinhive承諾在利用用戶算力挖礦前將要求用戶同意。上個月,Coinhive被曝出感染了包括政府機構在內的上千家正規網站,英國信息專員辦公室、英國國家醫療服務體系(NHS)和美國法院系統。[2018/3/11]
if(index<=number)
returns;
returnnull;
classE{
Stringstr="WeLoveThisGame";
GetTokentoken=newGetToken();
Strings1=token.getToken(2,str),
s2=token.getToken(4,str);
System.out.println(s1+":"+s2);
3.請說出E類中System.out.println的輸出結果。
byted="abc我們喜歡籃球".getBytes();
System.out.println(d.length);
Strings=newString(d,0,7);
System.out.println(s);
classMyString{
publicStringgetString(Strings){
StringBufferstr=newStringBuffer();
for(inti=0;i<s.length();i++){
if(i%2==0){
charc=s.charAt(i);
str.append(c);
returnnewString(str);
Strings="1234567890";
MyStringms=newMyString();
System.out.println(ms.getString(s));
Stringregex="\\djava\\w{1,}";
Stringstr1="88javaookk";
Stringstr2="9javaHello";
if(str1.matches(regex)){
System.out.println(str1);
if(str2.matches(regex)){
System.out.println(str2);
6.字符串調用publicStringtoUpperCase()方法返回一個字符串,該字符串把當前字符串中的小寫字母變成大寫字母;.字符串調用publicStringtoLowerCase()方法返回一個字符串,該字符串把當前字符串中的大寫字母變成小寫字母。String類的publicStringconcat(Stringstr)方法返回一個字符串,該字符串是把調用該方法的字符串與參數指定的字符串連接。編寫一個程序,練習使用這3個方法。
7.String類的publiccharcharAt(intindex)方法可以得到當前字符串index位置上的一個字符。編寫程序使用該方法得到一個字符串中的第一個和最后一個字符。
8.通過鍵盤輸入年份和月份。程序輸出相應的日歷牌。
9.計算某年、某月、某日和某年、某月、某日之間的天數間隔。要求年、月、日通過通過鍵盤輸入到程序中。
10.編程練習Math類的常用方法。
11.參看例子19,編寫程序剔除一個字符串中的全部非數字字符,例如,將形如“ab123you”的非數字字符全部剔除,得到字符串“123”。
12.參看例子21,使用Scanner類的實例解析“數學87分,物理76分,英語96分”中的考試成績,并計算出總成績以及平均分數。
習題10
1.如果準備按字節讀取一個文件的內容,應當使用FileInputStream流還是FileReader流?
2.FileInputStream流的read方法和FileReader流的read方法有何不同?
3.BufferedReader流能直接指向一個文件嗎?
4.使用ObjectInputStream和ObjectOutputStream類有哪些注意事項?
5.怎樣使用輸入、輸出流克隆對象?
6.使用RandomAccessFile流將一個文本文件倒置讀出。
7.使用Java的輸入、輸出流將一個文本文件的內容按行讀出,每讀出一行就順序添加行號,并寫入到另
一個文件中。
8.了解打印流。我們已經學習了數據流,其特點是用Java的數據類型讀寫文件,但使用數據流寫成的文
件用其它文件閱讀器無法進行閱讀(看上去是亂碼)。PrintStream類提供了一個過濾輸出流,該輸出流能以文本
格式顯示Java的數據類型。上機實習下列程序:
importjava.awt.*;
importjava.io.*;
try{
Filefile=newFile("p.txt");
FileOutputStreamout=newFileOutputStream(file);
PrintStreamps=newPrintStream(out);
ps.print(12345.6789);
ps.println("howareyou");
ps.println(true);
ps.close();
catch(IOExceptione){}
9.參考例子14,解析一個文件中的價格數據,并計算平均價格,比如該文件的內容如下:
商品列表:
電視機,2567元/臺
洗衣機,3562元/臺
冰箱,6573元/臺
習題11
1.JFrame類的對象的默認布局是什么布局?
2.一個容器對象是否可以使用add方法添加一個JFrame窗口?
3.編寫應用程序,有一個標題為“計算”的窗口,窗口的布局為FlowLayout布局。窗口中添加兩個文本區,當
我們在一個文本區中輸入若干個數時,另一個文本區同時對你輸入的數進行求和運算并求出平均值,也就是說
隨著你輸入的變化,另一個文本區不斷地更新求和及平均值。
4.編寫一個應用程序,有一個標題為“計算”的窗口,窗口的布局為FlowLayout布局。設計四個按鈕,分別命
名為“加”、“差”、“積、”、“除”,另外,窗口中還有三個文本框。單擊相應的按鈕,將兩個文本框的
數字做運算,在第三個文本框中顯示結果。要求處理NumberFormatException異常。
5.參照例子13編寫一個體現MVC結構的GUI程序。首先編寫一個封裝梯形類,然后再編寫一個窗口。要求窗口使
用三文本框和一個文本區為梯形對象中的數據提供視圖,其中三個文本框用來顯示和更新梯形對象的上底、下
底和高;文本區對象用來顯示梯形的面積。窗口中有一個按鈕,用戶單擊該按鈕后,程序用3個文本框中的數據
分別作為梯形對象的上底、下底和高,并將計算出的梯形的面積顯示在文本區中。
習題12
1.線程有幾種狀態?
2.引起線程中斷的常見原因是什么?
3.一個線程執行完run方法后,進入了什么狀態?該線程還能再調用start方法嗎?
4.線程在什么狀態時,調用isAlive()方法返回的值是false。
5.建立線程有幾種方法?
6.怎樣設置線程的優先級?
7.在多線程中,為什么要引入同步機制?
8.在什么方法中wait()方法、notify()及notifyAll()方法可以被使用?
9.將例子11中SellTicket類中的循環條件:
while(fiveAmount<3)
該寫成:
if(fiveAmount<3)
是否合理。
10.線程調用interrupt()的作用是什么?
11.參照例子14,模擬三個人排隊買票,張某、李某和趙某買電影票,售票員只有三張五元的錢,電影票5元錢
一張。張某拿二十元一張的新人民幣排在李的前面買票,李某排在趙的前面拿一張10元的人民幣買票,趙某拿
一張5元的人民幣買票。
12.參照例子9,要求有3個線程:student1、student2和teacher,其中student1準備睡10分鐘后再開始上課
,其中student2準備睡一小時后再開始上課。teacher在輸出3句“上課”后,吵醒休眠的線程student1;
student1被吵醒后,負責再吵醒休眠的線程student2。
12.參照例子19,編寫一個Java應用程序,在主線程中再創建3個線程:“運貨司機”、“裝運工”和“倉庫管
理員”。要求線程“運貨司機”占有CPU資源后立刻聯合線程“裝運工”,也就是讓“運貨司機”一直等到“裝
運工”完成工作才能開車,而“裝運工”占有CPU資源后立刻聯合線程“倉庫管理員”,也就是讓“裝運工”
一直等到“倉庫管理員”打開倉庫才能開始搬運貨物。
14.在下列E類中,System.out.println的輸出結果是什么?
importjava.awt.event.*;
publicclassEimplementsRunnable{
StringBufferbuffer=newStringBuffer();
Threadt1,t2;
E(){
t1=newThread(this);
t2=newThread(this);
publicsynchronizedvoidaddChar(charc){
if(Thread.currentThread()==t1){
while(buffer.length()==0){
try{wait();
catch(Exceptione){}
buffer.append(c);
if(Thread.currentThread()==t2){
notifyAll();
publicstaticvoidmain(Strings){
Ehello=newE();
hello.t1.start();
hello.t2.start();
while(hello.t1.isAlive()||hello.t2.isAlive()){}
System.out.println(hello.buffer);
publicvoidrun(){
if(Thread.currentThread()==t1)
addChar('A');
if(Thread.currentThread()==t2)
addChar('B');
習題13
1.URL對象調用哪個方法可以返回一個指向該URL對象所包含的資源的輸入流。
2.什么叫socket?怎樣建立socket連接?
3.ServerSocket對象調用accept方法返回一個什么類型的對象?
4.InetAddress對象使用怎樣的格式來表示自己封裝的地址信息?
5.參照例子6,使用套接字連接編寫網絡程序,客戶輸入三角形的三邊并發送給服務器,服務器把計算出的三
角形的面積返回給客戶。
6.參照13.6.2節中的示例代碼,使用RMI技術讓客戶調用遠程對象讀取服務器上的一個文本文件。
習題14
1.為了操作Derby數據庫,需要把Java安裝目錄目錄db/lib下的那些jar文件復制到Java運行環境的擴展
中?
2.參照例子2,編寫一個應用程序來查詢Derby數據庫,用戶可以從鍵盤輸入數據庫名、表名。
3.使用預處理語句的好處是什么?
比特幣和山寨幣在美聯儲加息決定之前上漲,表明交易員將0.75%的加息視為“定價”事件。 美聯儲于9月21日加息75個基點,美聯儲主席杰羅姆·鮑威爾預計年底前將再加息125個基點.
1900/1/1 0:00:00一枚描繪一個名叫Sponsian的人的硬幣,目前在亨特博物館。長期以來一直被視為贗品,三個多世紀前在特蘭西瓦尼亞發現的少數古羅馬硬幣已被一項新的分析所證實.
1900/1/1 0:00:00自從上周作為世界第二大加密貨幣交易所FTX申請破產后,整個幣圈風聲鶴唳,草木皆兵。緊接著又傳出灰度基金兄弟公司Genesis加密貨幣投資銀行限制提幣的消息,一時間又一個黑天鵝飛了出來.
1900/1/1 0:00:00中國現代貴金屬紀念幣始于1979年,至今已有40余年的發展歷史,這其中,造幣工藝革新取得了日新月異的變化和成果.
1900/1/1 0:00:00各位好啊,我是董佳寧。我在東方小孟買——上海,給大家帶來報道。在外網上,印度人特別喜歡拿中國跟自己比較,每一個中國有關的議題,總有他們的身影:“我們印度很快也將擁有這些成就,lovefromIn.
1900/1/1 0:00:00在近日揭幕的2023年泰晤士高等教育世界大學排名中,奧克蘭理工大學憑借其在國際展望、研究和引文等方面的亮眼表現再獲佳績,首次躍居新西蘭第二位,并連續第三年穩居世界排名前300.
1900/1/1 0:00:00