『壹』 java有沒有goto
goto是Java中的保留字,在目前版本的Java中沒有使用。
『貳』 Java 中有沒有直接可以判斷兩個類是否相同的方法
java沒有直接判斷兩個雷是否相同,但提供了如下方法:
1、如果說兩個對象的判斷可以使用 equals,或者 ==。
2、如果判斷對象是否某個類 可以使用 instanceof ,isInstance
3、如果兩個類的比較 可以使用 isAssignableFrom,但只能得到是否是自身或者子類的結果,不能完
如下代碼:
importjava.util.ArrayList;
publicclassceshi{
publicstaticvoidmain(String[]args){
Strings1=newString("javaisland");//測試兩個對象是否相同
System.out.println(s1instanceofString);//true
Strings2=newString("javaisland");//測試是否對象屬於某個類
System.out.println(String.class.isInstance(s2));//true
System.out.println(ArrayList.class.isAssignableFrom(Object.class));//false
System.out.println(Object.class.isAssignableFrom(ArrayList.class));//true
}
}
運行結果如下:
『叄』 java中有沒有goto語句
java確實提供了goto語句,並且它是保留的關鍵字,但是JVM並沒有給它提供任何的實現。或許是java並沒打算放開使用這種機制。
不過,我則會採用特殊手段實現類似goto的功用:
importstaticjava.lang.System.out;
classTest{
publicstaticvoidmain(String[]args)throwsException{
intstep=1;
intsum=0;
loop:
for(;true;){
if(step<=100){
sum+=step;
step++;
continueloop;
}elsebreak;
}
out.println("sum="+sum);
}
}
『肆』 JAVA中有沒有goto關鍵字
goto是關鍵字,不過在java中沒有用到,只是保留關鍵字,在定義變數或類命之類的時候不要用這個
『伍』 JAVA中有沒有類似C語言中sizeof那樣的功能
Java沒有提供任何類似於C語言的sizeof()的操作器。但是java中可以模擬C語言中對sizeof的實現。
實現的想法是這樣的:java.lang.Runtime類中有一些簡單的能涉及到內存管理的函數:
使用這些簡單的內存訪問,可以得到內存的一些情況,通過建立一個大的某個類的數組,來查看內存用了多少,進而可以求得類的大小。
程序代碼示例:
public class Sizeof {
public static void main(String[] args) throws Exception {
// Warm up all classes/methods we will use
runGC();
usedMemory();
// Array to keep strong references to allocated objects
final int count = 100000;
Object[] objects = new Object[count];
long heap1 = 0;
// Allocate count+1 objects, discard the first one
for (int i = -1; i < count; ++i) {
Object object = null;
/* Instantiate your data here and assign it to object*/
//object = new Object ();
//object = new Integer (i);
//object = new Long (i);
//object = new String ();
//object = new Byte( (byte) 0);
//object = new Float( 0.2f);
//object = new Double( 0);
//object = new HelloWorld();
if (i >= 0)
objects[i] = object;
else {
object = null; // Discard the warm up object
runGC();
heap1 = usedMemory(); // Take a before heap snapshot
}
}
runGC();
long heap2 = usedMemory(); // Take an after heap snapshot:
final int size = (int) Math.round(((double) (heap2 - heap1)) / count);
System.out.println("'before' heap: " + heap1
+ ", 'after' heap: " + heap2);
System.out
.println("heap delta: " + (heap2 - heap1) + ", {"
+ objects[0].getClass() + "} size = " + size
+ " bytes");
for (int i = 0; i < count; ++i)
objects[i] = null;
objects = null;
}
private static void runGC() throws Exception {
// It helps to call Runtime.gc()
// using several method calls:
for (int r = 0; r < 4; ++r)
_runGC();
}
private static void _runGC() throws Exception {
long usedMem1 = usedMemory(), usedMem2 = Long.MAX_VALUE;
for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++i) {
s_runtime.runFinalization();
s_runtime.gc();
Thread.yield();
usedMem2 = usedMem1;
usedMem1 = usedMemory();
}
}
private static long usedMemory() {
return s_runtime.totalMemory() - s_runtime.freeMemory();
}
private static final Runtime s_runtime = Runtime.getRuntime();
} // End of class
需要注意的是上面的一句:Object[] objects = new Object[count];
只是分配了數組空間,沒有分配對象的空間。數組中只有引用而已。
結論:下代碼測試基本對象時,得出的結果象下面:
Object類對象 : 8位元組
Integer類對象 : 16位元組
Long類對象 : 16位元組
Byte類對象 : 16位元組
此示例說明了java中基本類型封裝對象所佔內存的大小。
1.簡單的Object對象要佔用8個位元組的內存空間,因為每個實例都至少必須包含一些最基本操作,比如:wait()/notify(),equals(), hashCode()等。
2.使用Integer對象佔用了16個位元組,而int佔用4個位元組,說了封裝了之後內存消耗大了4倍。
3.Long看起來比Integer對象應該使用更多空間,結果Long所佔的空間也是16個位元組。
那麼就正好說明了JVM的對於基本類型封裝對象的內存分配的規則是如下:
a、Object所佔內存(8個位元組)+最大基本類型(long)所佔內存(8個位元組) = 16位元組。
b、JVM強制使用8個位元組作為邊界。
c、所以所有基本類型封裝對象所佔內存的大小都是16位元組。但是還是有區別,比如:Integer對象雖然佔用了16個位元組的內存,但是只是利用了Object所佔內存(8個位元組)+int所佔內存(4個位元組) = 12位元組。還有4個位元組根本沒有被使用。
『陸』 java中有沒有全局變數
能把你的代碼貼出來嗎?
java里沒有全局變數,但是有成員變數,不過它跟c++里的全局變數很類似
『柒』 java中到底有沒有指針
學過c/c++,然後學Java的人往往心中有此糾結,java中到底有沒有指針?
如果一定要在是或否里選擇一個,OK,java中沒有指針。
那麼,java中的引用(reference)和c/c++中的指針(如無特別說明,後文指針均指c/c++中的指針)究竟有著什麼樣糾葛不清的關系呢?
在開始之前先說一下c/c++的引用,它跟java的引用完全不是一個東西,c/c++的引用是同一塊內存的不同名字。而java的引用是指向一個對象,引用本身也佔用了內存。
首先,列舉一下能對指針進行的一些常見操作:
1、指向一個對象,如 Person *p = new Person….;int *iv = new int….
2、對指針所指的對象進行操作:P->getAge(); (*p).getAge();
3、獲取存儲在指針中的地址值。
4、將指針指向另外一個對象:Person *p1 = new Person…; p = p1; 但,不可以*p = p1這樣來賦值。
5、刪除new的空間,delete p1;
6、其它諸多操作
這么多已經足夠了,接下來看看java引用能做什麼操作。
a、指向一個對象,如Person p = new Person…
b、調用對象的方法,p.getAge();
c、指向另外一個對象,Person p1 = new Person…; p = p1;
OK,就這么多了。
對於a和1,他們的功能是類似的,但java引用無法指向一個基本變數。。
對於b,java引用和指針就不同了,在這點上,Java reference更像是解引用(dereference)了的指針;或者說java中的.操作符某種程度上等價於指針的->操作符,如果是這樣種解釋的話,我們無法再對java的reference解引用了。
對c和4,是類同的。
除此,我們無法獲取java引用存的地址,我們不能delete,還有很多……
綜上,竊以為java的引用可以看成是一個功能受限的指針(或者說被閹割的指針)。另一方面,功能如此受限,它還能叫指針嗎?了解了指針和java引用的區別與聯系,還需要糾結「java中有沒有指針」這個問題嗎!
『捌』 Java中有沒有Http類
問題的關鍵是你要的Http類做什麼?
如果你不管Http類職責是什麼,只是要一個名字就叫Http的類,Java標准類庫是沒有的。
如果你想要
用Java實現基於
Http協議
的功能,簡單的HttpURLConnection類就能夠實現。