
看你似乎没太明白类和类实例这两个概念的区别;你执行psockcmdsock = socketa;时,改变的只是类B的实例psock的cmdsock成员;当你创建B的另外一个实例时,这个新的实例与之前的psock毫无关系的。比如:
class B
{
public:
B(){iMem=100;}
int iMem;
};
void Func()
{
B b;//b的iMem默认构造为100,因为类B的默认构造函数将iMem构造为100。
biMem = 0;//这里将b的成员iMem赋值为0;
B c;//但是这里c的iMem成员仍然是100,因为c和b是两个位于不同内存位置的对象。
}
对于包装类型变量,是可以直接获得的,变量名称getClass()getName();
示例:
lass Test
{
public static void main(String[] args)
{
int i=1; //int类型变量
Systemoutprintln(getType(i)); //打印变量类型为int
}
public static String getType(Object o){ //获取变量类型方法
return ogetClass()toString(); //使用int类型的getClass()方法
}
}
扩展资料
变量的使用注意事项:
Java中的变量必须声明后才能进行使用;
变量的作用域:在一对{}中为有效区间;
需要进行初始化后才能使用变量;
数据类型 变量名 = 初始化值;
变量的使用是通过变量名来访问所指向的内存区域中存储的值。
效力是做好工作的魂灵 在上秦小麟教员的数据库实现技巧的时辰,教员提到了一个题目:如安在运行时获取一个变量的类型,这用C实现如同要大费周折。今天正好碰着一个题目想看看C&#43;&#43;STL中的sort算法的实现,发明里面有个技能可以很轻易做到这一点。我就立即本身做了一个实验。如下可以获取运行时变量的类型。人生一世不就是为了化短暂的事物为永远的吗?要做到这一步,就须懂得如何器重这短暂和永远。 此中间思惟就是,应用模板函数的重载,是什么类型的参数就去调用参数是那个类型的函数。如许就让编译器去本身辨认,而编译器当然知道每个变量的类型。这让我想去商量那些我经常用到的STL算法的实现,若是你也经常应用,何不借此机会好好研究一下呢?我感触感染至少有几个益处。1 加强对C&#43;&#43;说话的懂得2 加强法度的设计才能3 加强算法解析与设计的才能#include<iostream>using namespace std;void PrintType(int t){cout<<"int type";}void PrintType(char t){cout<<"char type";}void PrintType(long t){cout<<"long type";}template<typename T> inlinevoid ValueType(T t){PrintType(t);}int main(){int a;char c;ValueType(a);cout<<endl;ValueType(c);cout<<endl;return 0;} 上例的功能很轻易扩大,若是你向本身的项目添加了一个新的类型,那么只要重载一个PrintValue( )即可。这仅仅是输出变量的类型,若是你还想再获取变量的类型的时辰做更多的工作的话,显然也是很轻易做到的。比如你想先获取变量的类型,如许之后才干断定分派给变量几许空间,那么这个也可以轻松实现,只须要改变PrintValue的功能即可。这里可以写一个int PrintValue(YourType t) ,她甚至应当有一个更好的名字比如int Memory(Type t)。 在不改变函数名的同时对上述函数稍加批改就可以实现输出传入参数应当分派的内存大小。
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
public static void main(String[] args) {
try {
Class c = ClassforName(PersonclassgetName());
//获取类的属性
Field[] fields = cgetDeclaredFields();
for (int i = 0; i < fieldslength; i++) {
Systemoutprintln("类的属性有:"+ ModifiertoString(fields[i]getModifiers())+" "+fields[i]getType()+" "+fields[i]getName());
}
//获取类的方法
Method[] methods= cgetMethods();
for (int j = 0; j <methodslength ; j++) {
Systemoutprintln("类的方法有:"+ModifiertoString(methods[j]getModifiers())+" "+methods[j]getReturnType()+" "+methods[j]getName());
}
} catch (ClassNotFoundException e) {
eprintStackTrace();
}
}
}
//运行结果如下:
类的属性有:private class javalangString name
类的属性有:private int age
类的方法有:public static void main
类的方法有:public class javalangString getName
类的方法有:public void setName
类的方法有:public void setAge
类的方法有:public int getAge
类的方法有:public final void wait
类的方法有:public final void wait
类的方法有:public final native void wait
类的方法有:public boolean equals
类的方法有:public class javalangString toString
类的方法有:public native int hashCode
类的方法有:public final native class javalangClass getClass
类的方法有:public final native void notify
类的方法有:public final native void notifyAll
以上就是关于在一个类中要获取另一个类的成员变量的值全部的内容,包括:在一个类中要获取另一个类的成员变量的值、在JAVA中怎么取得一个变量的类型、如何用C++获取运行时变量的类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)