如果java中没有编译时绑定,这是否意味着所有绑定都是在运行时完成的?
但是根据OOPs的运行时绑定概念,函数必须有虚拟关键字.在java中隐式虚拟的所有方法或java中是否存在任何编译时绑定
如果有任何编译时绑定,您可以给我一些具体情况,或链接到更多信息
我是Java技术的新手.我知道Thread在Java中只有两种方法可以创建
所以这只是两种创造方式Thread.但是当我们开始使用主JVM开始我们的程序时,一个主要的Thread.我认为即使JVM必须遵循Thread创建主要线程JVM要么必须扩展Thread类或实现的主要手段的规则Runnable.
public class MainThreadExample {
public static void main(String[] args) {
Thread t=Thread.currentThread();
System.out.println(t.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了最好的水平,但不知道JVM是如何创建这个主要对象的.当我完全通过主类(sun.tool.jar)时,我知道这是负责主线程的类.但是在搜索了如此多的Google网页后无法得到它.所以请帮助,如果可能的话,请参考我的示例或链接.
PS:我正在学习Java技术,我不应该打扰他们如何创建主要技术,所有这些都是设计的东西.但我认为这是一个合乎逻辑的问题
Eclipse正在显示当我在调试模式下打开任何程序时无法连接到VM错误.这是异常堆栈
java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method) //I dont know which socket is closed in my PC
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.eclipse.jdi.internal.connect.SocketTransportService.accept(SocketTransportService.java:95)
at org.eclipse.jdi.internal.connect.SocketTransportImpl.accept(SocketTransportImpl.java:56)
at org.eclipse.jdi.internal.connect.SocketListeningConnectorImpl.accept(SocketListeningConnectorImpl.java:135)
at org.eclipse.jdt.internal.launching.StandardVMDebugger$ConnectRunnable.run(StandardVMDebugger.java:107)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
即使我的Localhost工作正常,我ping 127.0.01和localhost都工作正常,即使我重新启动我的电脑甚至得到相同的错误.不知道我的PC中关闭了哪个套接字.请帮助我..我正在使用eclipse 8.x.
根据标准的book构造函数是一种特殊类型的函数,用于初始化对象.构造函数被定义为函数,而类函数内部只能有两种类型的静态或非静态.我怀疑构造函数是什么?
1.)As constructor is called without object so it must be static
Test test =new Test();//Test() is being called without object
so must be static
Run Code Online (Sandbox Code Playgroud)
我怀疑的是,如果构造函数是静态方法,那么我们如何经常使用这个内部构造函数
Test(){
System.out.println(this);
}
Run Code Online (Sandbox Code Playgroud)
输出Test@12aw212意味着构造函数是非静态的吗?
我知道原始数据类型的情况下的自动类型提升概念.但是在参考数据类型的情况下,我有下面的代码,它完美地工作.
public class Test4 {
void set(Object o) {
System.out.println("Inside Object");
}
void set(double[] a) {
System.out.println("Array");
}
public static void main(String[] args) {
new Test4().set(null);
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了输出数组.
但是如果代替Object o,如果我们有任何其他类,那么这将显示编译时错误该方法对于类型Test4是不明确的
下面的代码给出了编译时错误
public class Test4 {
/*void set(Object o) {
System.out.println("Inside Object");
}*/
void set(String s) {
System.out.println("String");
}
void set(double[] a) {
System.out.println("Array");
}
public static void main(String[] args) {
new Test4().set(null);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,每个参考数据类型(类,接口和数组)的默认值为null.
那么为什么上面的代码适用于Object o.
提前致谢
我是java技术的新手,可能是一个简单的问题,但我很困惑.我知道java中没有引用调用的概念.它只使用按值调用,即将副本传递给另一个方法
请检查以下代码的输出
public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer ("A");
StringBuffer b = new StringBuffer ("B");
System.out.println("Before Operate"+a + "," +b);
operate (a,b);
System.out.println(a + "," +b);
}
static void operate (StringBuffer x, StringBuffer y) {
x.append(y);
y = x.append("C");
y.append("D");
}
}
Run Code Online (Sandbox Code Playgroud)
以上代码的输出为:ABCD,B(Second Syso)
我不知道为什么这会把所有东西都追加到b中.我google了很多,但它只会造成混乱.如果有人完全详细说明,那将会很有帮助.
提前致谢
PS: - 如果已经在这个论坛上被问到,请给我一个链接,因为我无法找到它.