string怎么读[,] Vilna 怎么实例化?

请问大家java里实例化对象的方法到底有多少中?
问题补充:xiaolongfeixiang 写道[b]2种方法吧:
new的方式:
new Object();
反射的方式:
Class.forName("java.lang.Object").newInstance();
后者还可以变形为,先得到 Class对象,然后再得到Constructor,再生成对象。[/b]
那克隆算吗?
问题补充:xiaolongfeixiang 写道[b]2种方法吧:
new的方式:
new Object();
反射的方式:
Class.forName("java.lang.Object").newInstance();
后者还可以变形为,先得到 Class对象,然后再得到Constructor,再生成对象。
请问克隆算么?
[/b]
问题补充:请问克隆算实例化对象吗?
采纳的答案
我认为至少四种:
1、直接 new 调用默认构造器实例化对象,如:String str = new String("abc");
2、通过工厂方法返回对象,如:String str = String.valueOf(23);
3、通过反射,如:Object obj = Class.forName("java.lang.Object").newInstance();
4、通过I/O流(包括反序列化)。
实例化,应该是从类模板初始化,得到一个类的实例,即对象。
克隆,是复制一个对象,能得到一个类的实例,似乎不是实例化吧?
个人见解,仅供参考。
[b]2种方法吧:
new的方式:
new Object();
反射的方式:
Class.forName("java.lang.Object").newInstance();
后者还可以变形为,先得到 Class对象,然后再得到Constructor,再生成对象。[/b]
已解决问题
未解决问题1、 initWithFormat是实例方法
只能通过 NSString* str = [[NSString alloc] initWithFormat:@”%@”,@”Hello World”] 调用,但是必须手动release来释放内存资源
2、 stringWithFormat是类方法
可以直接用 NSString* str = [NSString stringWithFormat:@"%@",@"Hello World"] 调用,内存管理上是autorelease的,不用手动显式release
而且提出了一个常见错误:
label.text = [[NSString alloc] initWithFormat:@”%@”,@”abc”];
最后在dealloc中将label给release掉
但是仍然会发生内存泄漏!
原因在于:用label.text = …时,实际是隐式调用的label的setText方法,这会retain label内部的字符串变量text(哪怕这个字符串的内容 跟传进来的字符串内容相同 ,但系统仍然当成二个不同 的字符串对象),所以最后release label时,实际上只释放了label内部的text字符串,但是最初用initWithFormat生成的字符串并未释放,最终造成了泄漏。
解决办法有二个:
NSString * str = [[NSString alloc] initWithFormat:@”%@”,@”abc”];
label.text =
[str release]
最后在dealloc中再[label release]
label.text = [NSString stringWithFormat:@"%@",@"abc"];
然后剩下的事情交给NSAutoreleasePool
最后,如果你不确定你的代码是否有内存泄漏问题,可以用Xcode中的Build–&Build And Analyze 做初步的检查.
同类其他面试题 点击新一篇或旧一篇可浏览全部同类面试题
你有答案? 你对以上面试题有意见? 你想发表你的见解? 写下来吧!你的分享将会让很多人受益!
相关面试题
版权声明:本站大部分内容为原创! 另有少部分内容整理于网络,如需转载本站内容或关切版权事宜请联系站长。未经允许,严禁复制转载本站内容,否则将追究法律责任。
本站欢迎与同类网站建立友情链接,请联系QQ:如何通过类名(string类型)去实例化?
[问题点数:100分,结帖人csz_1987]
如何通过类名(string类型)去实例化?
[问题点数:100分,结帖人csz_1987]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2008年8月 .NET技术大版内专家分月排行榜第一
2008年6月 .NET技术大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。java一个类在子线程中实例化 在主线程中如何访问_百度知道
java一个类在子线程中实例化 在主线程中如何访问
class demo1{String name=&a&;int age=33;public String getName(){reuturn this.}}public class demo{public demo1 d1;public static viod main(String args[]){new Thread(new Runnable(){public void run(){d1=new demo1();}});System.out.print(d1.getName());}}求解啊
我这样写出来提示空指针啊
提问者采纳
public&class&Demo&{&&&&public&static&demo1&d1;&&&&public&static&void&main(String&args[])&{&&&&&&&&new&Thread(new&Runnable()&{&&&&&&&&&&&&public&void&run()&{&&&&&&&&&&&&&&&&d1&=&new&demo1();&&&&&&&&&&&&}&&&&&&&&}).start();&&&&&&&&try&{&&&&&&&&&&&&Thread.currentThread().sleep(10);&&&&&&&&}&catch&(InterruptedException&e)&{&&&&&&&&&&&&//&TODO&Auto-generated&catch&block&&&&&&&&&&&&e.printStackTrace();&&&&&&&&}&&&&&&&&System.out.print(d1.getName());&&&&}}
提问者评价
其他类似问题
按默认排序
其他2条回答
class demo1 { String name = &a&; int age = 33; public String getName(){
return this.
} }public class demo { public static demo1 d1=new demo1(); public static void main(String args[]) {
new Thread(new Runnable() {
public void run() {
d1 = new demo1();
System.out.print(d1.getName()); }}
语法错误,在内部类里面的d1必须是static,对于static的变量对象你再次对它实例话是不起作用的,他还是null。因为static变量一生中只在声明的时候分配一次内存,而实例化的操作也是在分配内存,对于static的变量是没有效果的。而且线程也是异步的,线程的执行并非是在System.out.print(d1.getName());之前
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁主题 : 用NSClassFromString 实例化静态库中的类,问题比较诡异。

我要回帖

更多关于 string怎么读 的文章

 

随机推荐