java反
Ⅰ 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)。