java反射

Class.forName用法有問題,應該是:Class.forName("Reflect.Person");

Ⅱ java取反問題

首先,long是64位,8位元組
計算機中存儲時高位補0,你取反後高位全部為1,所以是負值。

注意0xFFFFFFFF在Java中被認為是整形常量,所以他會被默認為int類型,32位的,在和long類型進行AND操作時,它會按照最高位(此時為1)進行擴展,即它被機器解釋成0xFFFFFFFF FFFFFFFF,這樣以來,你的temp等於沒有變化。

要想改變上面那種情況,你可以這樣寫Ox7FFFFFFF,這時最高位為0,被機器解釋成0x00000000 7FFFFFFF,AND操作會讓temp變成正

不過以上解決方法並不能達到你想要達到的效果,你想要的結果是不是:
只把temp的有效位進行取反,高位不變?

Ⅲ java反射。。

public static void main(String[] args){
try {
String str = String.class.newInstance(); //這里就是通過反射獲取String對象
int length = str.length();
System.out.println(length);
} catch (Exception e) {
e.printStackTrace();
}
}

Ⅳ java中斜杠"/"和反斜杠"\"分別代表什麼意思

Java語言中,斜杠「/」沒有特殊含義,一個斜杠「/」只是表示字元'/',兩個「//」表示注釋標記;

反斜杠「」表示它和緊跟著它的那個字元構成轉義字元。

常見的轉義字元有:「 」表示換行並移動到下一行開頭,「 」表示跳到下一個Tab的位置,「」表示空字元(NULL)。

(4)java反擴展閱讀

Java註解能夠提供代碼的相關信息,同時對於所註解的代碼結構又沒有直接影響。在這篇教程中,我們將學習Java註解,如何編寫自定義註解,註解的使用,以及如何使用反射解析註解。

註解是Java 1.5引入的,目前已被廣泛應用於各種Java框架,如Hibernate,Jersey,Spring。註解相當於是一種嵌入在程序中的元數據,可以使用註解解析工具或編譯器對其進行解析,也可以指定註解在編譯期或運行期有效。

在註解誕生之前,程序的元數據存在的形式僅限於java注釋或javadoc,但註解可以提供更多功能,它不僅包含元數據,還能作用於運行期,註解解析器能夠使用註解決定處理流程。

舉個例子,在Jersey webservice中,我們在一個方法上添加了PATH註解和URI字元串,在運行期,jersey會對其進行解析,並決定作用於指定URI模式的方法。

Ⅳ java有反的問題

publicStringprint(Stringn){
System.out.println(n);
returnn;
}

看上面代碼 你的print方法前面有個修飾 String 這個就是定義了這個方法要最終返回一個String類型的值, 所以方法裡面最後一句有「return n」。 而n恰好是一個String類型的參數, 它接受了"小明"這個字元串

Ⅵ java中的取反.

5的二進制為 0000 0101 ~5的二進制為 1111 1010 = -6
-5的二進制為11111011 ~(-5)的二進制為000001010 = 4

Ⅶ java取反運算符

運算符的優先順序!高、
但是equals不是運算符、是個方法。
先計算方法的返回值,然後再!取值

Ⅷ Java 取反運算符

用以下代碼可以實現你要求的功能:
long lang=64509;
String str1=Long.toBinaryString(lang);//將給定的數轉為二進制字串
String str2=Long.toBinaryString(~lang);//將給定的數取反轉為二進制字串
//將取反後的二進制串取最後的 長度與第一個串長度相等 的子串,這是我們需要的二進制串
String str=str2.substring(str2.length()-str1.length());
//將它轉換為十進制整數
int i=Integer.parseInt(str, 2);
System.out.println(i);

具體理論知識如下所示:
先要理解一些概念:
在2進制中,負數是以它正值的補碼形式表達
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。

比如 0000 0000 0000 0000 0000 0000 0000 0101是 5的 原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。

取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

比如:將5的二進製表達式的每一位取反,得
1111 1111 1111 1111 1111 1111 1111 1010
稱:1111 1111 1111 1111 1111 1111 1111 1010 是 0000 0000 0000 0000 0000 0000 0000 0101 的反碼。

反碼是相互的,所以也可稱:

1111 1111 1111 1111 1111 1111 1111 1010 和 0000 0000 0000 0000 0000 0000 0000 0101 互為反碼。

補碼:反碼加1稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
那麼,5的補碼為:

1111 1111 1111 1111 1111 1111 1111 1010 + 1 =
1111 1111 1111 1111 1111 1111 1111 1011

所以,-5 在計算機中的二進製表達為:
1111 1111 1111 1111 1111 1111 1111 1011
轉換為十六進制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎麼求 ~i 了
int型儲存32個二進制位,~這個符號是按位取反,就是求i的反碼。
即得到1111 1111 1111 1111 1111 1111 1111 1010
上面這串二進制代表一個負數,將它轉換成int型過程如下:

1111 1111 1111 1111 1111 1111 1111 1010-1 =
1111 1111 1111 1111 1111 1111 1111 1001

再求反:

0000 0000 0000 0000 0000 0000 0000 0110

這個值就是5的按位取反所得到的int整數的絕對值(注意:5按位取反得到的是負數)

所以轉換為int型為:6
即:int型的i=5 取反後的結果為-6

Ⅸ 用java實現整型反序

publicclassNumberInverse
{

privateintamount;
privateStringstringOutput;
privateintinverseInt;

publicNumberInverse(intinput)
{
if(input>99999||input<-99999)
{
System.out.println("請輸入一個小於5位的整數");
return;
}
//位數
amount=Integer.toString(Math.abs(input)).length();
//空格顯示
for(charc:Integer.toString(Math.abs(input)).toCharArray())
{
if(stringOutput==null)
{
stringOutput="";
}
stringOutput+=String.format("%s%s",String.valueOf(c),
"");
}
stringOutput=input>=0?stringOutput:String.format(
"-%s",stringOutput);
//逆序
Strings="";
for(inti=this.getAmount()-1;i>=0;i--)
{
s+=String.valueOf((Integer.toString(Math.abs(input))
.toCharArray())[i]);
}
inverseInt=input>=0?Integer.parseInt(s):Integer
.parseInt(String.format("-%s",s));
}

publicintgetAmount()
{
returnamount;
}

publicStringgetStringOutput()
{
returnstringOutput;
}

publicintgetInverseInt()
{
returninverseInt;
}

/**
*測試
*
*@paramargs
*/
publicstaticvoidmain(String[]args)
{
NumberInversen=newNumberInverse(-32345);
System.out.println(n.getAmount());//列印位數
System.out.println(n.getStringOutput());//列印格式化字元串
System.out.println(n.getInverseInt());//列印逆序的數字
}
}

Ⅹ JAVA反射機制的取得途徑

Java允許我們從多種管道為一個class生成對應的Class object。圖2是一份整理。
Class object 誕生管道
示例:
1)運用getClass()
註:每個class 都有此函數
String str = abc;
Class c1 = str.getClass();
2)運用Class.getSuperclass()
Button b = new Button();
Class c1 = b.getClass();
Class c2 = c1.getSuperclass();
3)運用static method------Class.forName()(最常被使用)
Class c1 = Class.forName (java.lang.String);
Class c2 = Class.forName (java.awt.Button);
Class c3 = Class.forName (java.util.LinkedList$Entry);
Class c4 = Class.forName (I);
Class c5 = Class.forName (.class);
4)運用primitive wrapper classes的TYPE 語法
Class c1 = Boolean.TYPE;
Class c2 = Byte.TYPE;
Class c3 = Character.TYPE;
Class c4 = Short.TYPE;
Class c5 = Integer.TYPE;
Class c6 = Long.TYPE;
Class c7 = Float.TYPE;
Class c8 = Double.TYPE;
Class c9 = Void.TYPE;
圖2:Java 允許多種管道生成Class object。
Java classes 組成分析
首先容我以圖3的java.util.LinkedList為例,將Java class的定義大卸八塊,每一塊分別對應圖4所示的Reflection API。圖5則是「獲得class各區塊信息」的程序示例及執行結果,它們都取自本文示常式序的對應片段。
packagejava.util; //(1)
import java.lang.*; //(2)
public class LinkedList<E> //(3)(4)(5)
extendsAbstractSequentialList<E> //(6)
implements List<E>, Queue<E>,
Cloneable, .Serializable //(7)
{
private static class Entry<E> { … }//(8)
public LinkedList() { … } //(9)
public LinkedList(Collection<? extends E> c) { … }
public E getFirst() { … } //(10)
public E getLast() { … }
private transient Entry<E> header = …; //(11)
private transient int size = 0;
}
圖3:將一個Java class 大卸八塊,每塊相應於一個或一組Reflection APIs(圖4)。