你要得到什么内容?
成都创新互联公司专注于成都做网站、成都网站设计、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
例如:Cookie?
代码:conn.getRequestProperty("Set-Cookie")
java语言不想汇编等其它解释执行的语言,它的执行并不是说按照你所写的代码的顺序,java语言和C语言、C++等,它们同属于高级语言,为了能让机器更好更有效率的执行,高级语言都有一个预编译的过程,所以说纵然你把s2声明在fangfa()后面,执行时他也会根据其调用的顺序,进行内存空间的分配和初始化。
类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
而静态的又不一样了,静态的东西存在静态区,他们和类是一个等级的,就是说只要类被装载,它们就可以直接用.(用类名来调用).他们不依赖与任何对象,所以也不能输出任何对象的成员属性.(除非成员属性也是静态的).
而你最后的一句话也是错的,"类的所有数据在内存中只有静态的才又空间".
当然不是,每个对象在new的时候都会在堆区中开辟内存,用来保存对象的属性和方法.(实际上方法保存的只是方法区的引用,如果保存的是方法本身,那么试想一下,有多少个对象就得有多少个方法,那么又和第一点中"实例方法在内存中只有一份拷贝"相矛盾了)
好了,事实上内存图很复杂和麻烦,算比较深的东西了,很多用JAVA多年的人也不太了解其原理,因为开发也不要用..
更多的问题可以去远标培训去问技术老师。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTestHarnessV5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.printf("输入你要查找的文字: ");
Pattern pattern = Pattern.compile(scanner.nextLine());
System.out.printf("输入字符串: ");
Matcher matcher = pattern.matcher(scanner.nextLine());
boolean found = false;
while (matcher.find()) {
System.out.printf("找到 \"%s\" 开始下标 %d 结束下标 %d.%n",
matcher.group(), matcher.start(), matcher.end());
found = true;
}
if (!found) {
System.out.printf("没有找到.%n");
}
}
}
}
这是不可能的,static方法不隶属于任何类/对象,所以无从获取。static的内容由JVM统一管理,甚至都不在堆上.
看了你的补充说明。如果是想知道本静态方法在哪个类被实现真的不可行,你的程序设计有错误。如果你是想读取工作目录下的一个文件,你只能知道改工作目录的磁盘路径,而文件名(类名)必须手工写明,无法自动获取。
都是放在静态区的,当然静态区也是属于堆的,同事放在静态区的还有代码,字符常量等