日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JAVA编程语言的基础知识(六)

發(fā)布時(shí)間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA编程语言的基础知识(六) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JAVA代碼查錯(cuò):

1.

  • abstract class Name {
  • private String name;
  • public abstract boolean isStupidName(String name) {}
  • }
  • ?

    大俠們,這有何錯(cuò)誤?

    答案: 錯(cuò)。abstract method必須以分號(hào)結(jié)尾,且不帶花括號(hào)。

    2.

  • public class Something {
  • void doSomething () {
  • private String s = "";
  • int l = s.length();
  • }
  • }
  • 有錯(cuò)嗎?

    答案: 錯(cuò)。局部變量前不能放置任何訪問(wèn)修飾符 (private,public,和protected)。final可以用來(lái)修飾局部變量
    (final如同abstract和strictfp,都是非訪問(wèn)修飾符,strictfp只能修飾class和method而非variable)。

    3.

  • abstract class Something {
  • private abstract String doSomething ();
  • }
  • ?

    這好像沒(méi)什么錯(cuò)吧?

    答案: 錯(cuò)。abstract的methods不能以private修飾。abstract的methods就是讓子類(lèi)implement(實(shí)現(xiàn))具體細(xì)節(jié)的,怎么可以用private把a(bǔ)bstract

    method封鎖起來(lái)呢? (同理,abstract method前不能加final)。

    4.

  • public class Something {
  • public int addOne(final int x) {
  • return ++x;
  • }
  • }
  • ?

    這個(gè)比較明顯。

    答案: 錯(cuò)。int x被修飾成final,意味著x不能在addOne method中被修改。

    5.

  • public class Something {
  • public static void main(String[] args) {
  • Other o = new Other();
  • new Something().addOne(o);
  • }
  • public void addOne(final Other o) {
  • o.i++;
  • }
  • }
  • class Other {
  • public int i;
  • }
  • ?

    和上面的很相似,都是關(guān)于final的問(wèn)題,這有錯(cuò)嗎?

    答案: 正確。在addOne method中,參數(shù)o被修飾成final。如果在addOne method里我們修改了o的reference (比如: o = new Other();),那么如同上例這題也是錯(cuò)的。但這里修改的是o的member vairable (成員變量),而o的reference并沒(méi)有改變。

    6.

  • class Something {
  • int i;
  • public void doSomething() {
  • System.out.println("i = " + i);
  • }
  • }
  • ?

    有什么錯(cuò)呢? 看不出來(lái)啊。

    答案: 正確。輸出的是"i = 0"。int i屬於instant variable (實(shí)例變量,或叫成員變量)。instant variable有default value。int的default value是0。

    7.

  • class Something {
  • final int i;
  • public void doSomething() {
  • System.out.println("i = " + i);
  • }
  • }
  • ?

    和上面一題只有一個(gè)地方不同,就是多了一個(gè)final。這難道就錯(cuò)了嗎?

    答案: 錯(cuò)。final int i是個(gè)final的instant variable (實(shí)例變量,或叫成員變量)。final的instant variable沒(méi)有default value,必須在constructor (構(gòu)造器)結(jié)束之前被賦予一個(gè)明確的值??梢孕薷臑?#34;final int i = 0;"。

    8.

  • public class Something {
  • public static void main(String[] args) {
  • Something s = new Something();
  • System.out.println("s.doSomething() returns " + doSomething());
  • }
  • public String doSomething() {
  • return "Do something ...";
  • }
  • }
  • ?

    看上去很完美。

    答案: 錯(cuò)??瓷先ピ趍ain里call doSomething沒(méi)有什么問(wèn)題,畢竟兩個(gè)methods都在同一個(gè)class里。但仔細(xì)看,main是static的。static method不能直接call non-static methods??筛某?#34;System.out.println("s.doSomething() returns " + s.doSomething());"。同理,static method不能訪問(wèn)non-static instant variable。

    9.

    此處,Something類(lèi)的文件名叫OtherThing.java

  • class Something {
  • private static void main(String[] something_to_do) {
  • System.out.println("Do something ...");
  • }
  • }
  • 這個(gè)好像很明顯。

    答案: 正確。從來(lái)沒(méi)有人說(shuō)過(guò)Java的Class名字必須和其文件名相同。但public class的名字必須和文件名相同。

    10.

  • interface A{
  • int x = 0;
  • }
  • class B{
  • int x =1;
  • }
  • class C extends B implements A {
  • public void pX(){
  • System.out.println(x);
  • }
  • public static void main(String[] args) {
  • new C().pX();
  • }
  • }
  • ?

    答案:錯(cuò)誤。在編譯時(shí)會(huì)發(fā)生錯(cuò)誤(錯(cuò)誤描述不同的JVM有不同的信息,意思就是未明確的x調(diào)用,兩個(gè)x都匹配(就象在同時(shí)import java.util和java.sql兩個(gè)包時(shí)直接聲明Date一樣)。對(duì)于父類(lèi)的變量,可以用super.x來(lái)明確,而接口的屬性默認(rèn)隱含為 public static final.所以可以通過(guò)A.x來(lái)明確。

    11.

  • interface Playable {
  • void play();
  • }
  • interface Bounceable {
  • void play();
  • }
  • interface Rollable extends Playable, Bounceable {
  • Ball ball = new Ball("PingPang");
  • }
  • class Ball implements Rollable {
  • private String name;
  • public String getName() {
  • return name;
  • }
  • public Ball(String name) {
  • this.name = name;
  • }
  • public void play() {
  • ball = new Ball("Football");
  • System.out.println(ball.getName());
  • }
  • }
  • ?

    這個(gè)錯(cuò)誤不容易發(fā)現(xiàn)。

    答案: 錯(cuò)。"interface Rollable extends Playable, Bounceable"沒(méi)有問(wèn)題。interface可繼承多個(gè)interfaces,所以這里沒(méi)錯(cuò)。問(wèn)題出在interface Rollable里的"Ball ball = new Ball("PingPang");"。任何在interface里聲明的interface variable (接口變量,也可稱(chēng)成員變量),默認(rèn)為public static final。也就是說(shuō)"Ball ball = new Ball("PingPang");"實(shí)際上是"public static final Ball ball = new Ball("PingPang");"。在Ball類(lèi)的Play()方法中,"ball = new Ball("Football");"改變了ball的reference,而這里的ball來(lái)自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改變r(jià)eference的。因此編譯器將在"ball = new Ball("Football");"這里顯示有錯(cuò)。

    12、內(nèi)部類(lèi)可以引用他包含類(lèi)的成員嗎?有沒(méi)有什么限制?

    一個(gè)內(nèi)部類(lèi)對(duì)象可以訪問(wèn)創(chuàng)建它的外部類(lèi)對(duì)象的內(nèi)容

    13、WEB SERVICE名詞解釋。JSWDL開(kāi)發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。

    Web ServiceWeb Service是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作。

    JAXP(Java API for XML Parsing) 定義了在Java中使用DOM, SAX, XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當(dāng)你需要改變具體的實(shí)現(xiàn)時(shí)候也不需要修改代碼。

    JAXM(Java API for XML Messaging) 是為SOAP通信提供訪問(wèn)方法和傳輸機(jī)制的API。

    WSDL是一種 XML 格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組端點(diǎn),這些端點(diǎn)對(duì)包含面向文檔信息或面向過(guò)程信息的消息進(jìn)行操作。這種格式首先對(duì)操作和消息進(jìn)行抽象描述,然后將其綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式上以定義端點(diǎn)。相關(guān)的具體端點(diǎn)即組合成為抽象端點(diǎn)(服務(wù))。

    SOAP即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol),它是用于交換XML編碼信息的輕量級(jí)協(xié)議。

    UDDI 的目的是為電子商務(wù)建立標(biāo)準(zhǔn);UDDI是一套基于Web的、分布式的、為Web Service提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的Web Service注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問(wèn)協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。

    轉(zhuǎn)自51CTO開(kāi)發(fā)頻道

    轉(zhuǎn)載于:https://blog.51cto.com/liangruijun/636261

    總結(jié)

    以上是生活随笔為你收集整理的JAVA编程语言的基础知识(六)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。