当前位置: 技术问答>java相关
那为帮我解释一下static的含义
来源: 互联网 发布时间:2015-04-01
本文导语: 一、一个变量可以修饰为static,表示使用一块指定的内存空间存放变量,请问: 1、我的class被实力化以后,是不是所有的实力化对象都使用一快空间,不在为新的实力化对象分配新的空间了呢?(30分) 2、我如果是在...
一、一个变量可以修饰为static,表示使用一块指定的内存空间存放变量,请问:
1、我的class被实力化以后,是不是所有的实力化对象都使用一快空间,不在为新的实力化对象分配新的空间了呢?(30分)
2、我如果是在servlet里调用了该类,(servlet是多线程的吧),那会不会是所有的在class中被修饰为static的成员变量都被分配使用同一内存空间?(要是那样我的程序就出大问题了,数据全错了)(30分)
二、一个方法被修饰为static,除了不用new 就可以直接调用,MyClass.MyStaticMethod()以外,和不用static修饰的方法在使用上还有什么不同
1、我的类中有个static的方法,是完成编码转换的,以保证汉字的正常使用
public static String togb(String str)
{
....
str = new String(str.getBytes("ISO-8859-1"),"GBK");
...
return str;
}
我在servlet里调用了该类,实现转换,可不可以,会不会出问题,是不是可以和未被声名为 static的方法public String togb(String str)起到同样的功能(30分)
三、我的可用分没了,那位好心的大哥哥愿意送我1000分(10分)
1、我的class被实力化以后,是不是所有的实力化对象都使用一快空间,不在为新的实力化对象分配新的空间了呢?(30分)
2、我如果是在servlet里调用了该类,(servlet是多线程的吧),那会不会是所有的在class中被修饰为static的成员变量都被分配使用同一内存空间?(要是那样我的程序就出大问题了,数据全错了)(30分)
二、一个方法被修饰为static,除了不用new 就可以直接调用,MyClass.MyStaticMethod()以外,和不用static修饰的方法在使用上还有什么不同
1、我的类中有个static的方法,是完成编码转换的,以保证汉字的正常使用
public static String togb(String str)
{
....
str = new String(str.getBytes("ISO-8859-1"),"GBK");
...
return str;
}
我在servlet里调用了该类,实现转换,可不可以,会不会出问题,是不是可以和未被声名为 static的方法public String togb(String str)起到同样的功能(30分)
三、我的可用分没了,那位好心的大哥哥愿意送我1000分(10分)
|
1.所有的static成员都使用同一个内存空间
2.同样使用同一内存空间,一个线程改变了成员的值,所有的线程都会一起改动
1.这样可能可以,但是你要保证str是iso8859-1编码的。实际上我一般都不会这样用,尽可能先设置好setvlet或者jsp的编码避免乱码
1.你发梦吧!!!!!!!!!!!!!!!1
2.同样使用同一内存空间,一个线程改变了成员的值,所有的线程都会一起改动
1.这样可能可以,但是你要保证str是iso8859-1编码的。实际上我一般都不会这样用,尽可能先设置好setvlet或者jsp的编码避免乱码
1.你发梦吧!!!!!!!!!!!!!!!1
|
1.所有的static成员都使用同一个内存空间
2.同样使用同一内存空间,一个线程改变了成员的值,所有的线程都会一起改动
1.这样可能可以,但是你要保证str是iso8859-1编码的。实际上我一般都不会这样用,尽可能先设置好setvlet或者jsp的编码避免乱码
1.你发梦吧!!!!!!!!!!!!!!!
2.同样使用同一内存空间,一个线程改变了成员的值,所有的线程都会一起改动
1.这样可能可以,但是你要保证str是iso8859-1编码的。实际上我一般都不会这样用,尽可能先设置好setvlet或者jsp的编码避免乱码
1.你发梦吧!!!!!!!!!!!!!!!
|
完全同意ChDw(米) 的说法,尤其是“你发梦吧!!!!!!!!!!!!!!!”
|
1。假如你访问同一个实例,那么肯定是在同一个地方,这是一种全局变量。
假如你有多个实例,那么其私有static成员使用的是不同的地址。
2。调用这个方法是完全可以的,就好像调用System.out.println()一样。
在论坛里面查找一下“中文”,你会发现很多比较好的解决方法,有一种是修改java基类,那就一劳百逸。
3。假如你的static方法中改写了static的成员变量,那么要注意使用,如何使用?可以编几个test自己试试看。
假如你有多个实例,那么其私有static成员使用的是不同的地址。
2。调用这个方法是完全可以的,就好像调用System.out.println()一样。
在论坛里面查找一下“中文”,你会发现很多比较好的解决方法,有一种是修改java基类,那就一劳百逸。
3。假如你的static方法中改写了static的成员变量,那么要注意使用,如何使用?可以编几个test自己试试看。
|
1.你实例化的所有对象对于static成员只有一个内存空间。
2.当然还有别的区别,如果不用STATIC,你得到将会是你想要的东东,反之则不是你要的“西西”:
3.我可以实现你的梦,因为你太慷慨了把分都送光了;前提是......还没有想好!