當前位置:首頁 » 編程語言 » java定義函數

java定義函數

發布時間: 2022-07-14 22:31:58

A. java構造函數裡面可以定義函數嗎

可以,因為每個類都有一個無參數的默認構造函數
比如
class
c{}
則c
c=new
c();是可以執行的
因為其中有個默認的無參數構造函數
但是如果是下面的情況則不能這樣用
比如
class
c{
public
c(int
i){}
}
這樣c
c=new
c();是錯誤的,因為已經有了構造函數,則不能再使用默認構造函數了..所謂默認構造函數,就是在默認狀態下(無構造函數)可以被使用的.
當然你也可以如果在上面的情況下,你可以寫出無參構造函數.(當然這就不是默認構造函數了)
class
c{
public
c(){}
public
c(int
i){}
}

B. java中函數的聲明和定義

Java中,我們應該知道最基本的就是定義變數和聲明變數了,那麼定義與聲明這兩者有沒有區別呢?具體的區別又是哪些呢?下面學習啦小編來告訴你定義與聲明的區別。

定義和聲明的定義區別

1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。

2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變數a是在別的文件中定義的。

聲明是向編譯器介紹名字--標識符。它告訴編譯器「這個函數或變數在某處可找到,它的模樣象什麼」。

而定義是說:「在這里建立變數」或「在這里建立函數」。它為名字分配存儲空間。無論定義的是函數還是變數,編譯器都要為它們在定義點分配存儲空間。

對於變數,編譯器確定變數的大小,然後在內存中開辟空間來保存其數據,對於函數,編譯器會生成代碼,這些代碼最終也要佔用一定的內存。

總之就是:把建立空間的聲明成為「定義」,把不需要建立存儲空間的成為「聲明」。

基本類型變數的聲明和定義(初始化)是同時產生的;而對於對象來說,聲明和定義是分開的。

下面小編給大家舉個例子說明一下。

例如:類A

如果A a;就是一個聲明,告訴編譯器a是A類的一個對象變數,但是不進行初始化;

如果以後a=new A();這就是初始化,分配了空間。

需要注意的是我們聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變數是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。

用static來聲明一個變數的作用有二:

(1)對於局部變數用static聲明,則是為該變數分配的空間在整個程序的執行期內都始終存在。

(2)外部變數用static來聲明,則該變數的作用只限於本文件模塊。

定義和聲明的具體區別

所謂定義就是(編譯器)創建一個對象,為這個對象分配一塊內存,並給它取上一個名字,這個名字就是就是我們經常所說的變數名或對象名。

聲明有2重含義:

(1) 告訴編譯器,這個名字已經匹配到一塊內存上,下面的代碼用到變數或者對象是在別的地方定義的。聲明可以出現多次。

(2) 告訴編譯器,這個名字已經被預定了,別的地方再也不能用它來作為變數名或對象名。

定義和聲明最重要區別

定義創建對象並為這個對象分配了內存,聲明沒有分配內存。

C. Java中如何調用函數和自定義函數

調用函數

System.out.println("hello world");

println即為函數,out為是輸出對象,System為java系統類。

Java源程序(.java文件)——>java位元組碼文件(.class文件)——>由解釋執行器(java.exe)將位元組碼文件載入到java虛擬機(jvm)——>位元組碼文件(.class)就會在java虛擬機中執行。

Java的基本包
java.lang其中包含有:
介面:Comparable、Cloneable、Runable等
類:八個基本數據類型封裝類、Math、Runtime、Object、String、StringBuffer、Thread、Exception等

D. java可以在main中定義函數嗎

不能…… 但是可以在函數中來直接實現一個介面,這樣就可以自定義一些函數了。
像下面這樣:
public static void main(String[] args){
Map<Object,Object> map = new Map<Object, Object>() {
@Override
public int size() {
return 0;
}

@Override
public boolean isEmpty() {
return false;
}

@Override
public boolean containsKey(Object key) {
return false;
}

@Override
public boolean containsValue(Object value) {
return false;
}

@Override
public Object get(Object key) {
return null;
}

@Override
public Object put(Object key, Object value) {
return null;
}

@Override
public Object remove(Object key) {
return null;
}

@Override
public void putAll(Map<?, ?> m) {

}

@Override
public void clear() {

}

@Override
public Set<Object> keySet() {
return null;
}

@Override
public Collection<Object> values() {
return null;
}

@Override
public Set<Entry<Object, Object>> entrySet() {
return null;
}
};

}

熱點內容
家庭千兆搭建伺服器 發布:2024-05-18 00:11:39 瀏覽:608
信用社會代碼的原始密碼是多少 發布:2024-05-17 23:49:33 瀏覽:148
java的發展 發布:2024-05-17 23:34:36 瀏覽:3
高並發上傳 發布:2024-05-17 23:00:40 瀏覽:422
我的世界斗羅大陸伺服器網易手機 發布:2024-05-17 22:45:11 瀏覽:66
ideajar源碼 發布:2024-05-17 22:40:30 瀏覽:786
易語言取名源碼 發布:2024-05-17 22:40:12 瀏覽:646
存儲巴士x250 發布:2024-05-17 22:21:30 瀏覽:571
別墅中央空調地暖如何配置最好 發布:2024-05-17 22:20:09 瀏覽:930
php安裝mbstring 發布:2024-05-17 22:09:56 瀏覽:471