下列程序的static,请大家帮忙把我解释下
package com.kobe.jqs;
import com.kobe.jqs.*;
public class A {
public A() {
new B(this).print();
}
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("Hello from A!");
}
}
package com.kobe.jqs;public class B {
static A a;
public B(A a) {
this.a = a;
}
public static void main(String[] args) {
B. print();
}
public static void print() {
a.print();
System.out.println("Hello from B!");
}
}
上述程序构造两个类,能够运行。
我不理解B类中static A a;为什么要用static.
public static void print() ;为什么要用static
new B(this).print(); 这里this的作用?
package com.kobe.jqs;
import com.kobe.jqs.*;
public class A {
public A() {
new B(this).print();
}
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("Hello from A!");
}
}
package com.kobe.jqs;public class B {
static A a;
public B(A a) {
this.a = a;
}
public static void main(String[] args) {
B. print();
}
public static void print() {
a.print();
System.out.println("Hello from B!");
}
}
上述程序构造两个类,能够运行。
我不理解B类中static A a;为什么要用static.
public static void print() ;为什么要用static
new B(this).print(); 这里this的作用?
加static是因为在static方法里面访问了它,static方法只能访问非static变量
public static void print() ;为了能在没有类实例时调用print方法,如B. print();
new B(this).print(); 因为B的构造函数需要A的实例public B(A a);
1、将代码进行良好的格式化,以方便阅读。
2、在发帖文本框的上方单击“#”按钮,选择 Java
3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:public class Hello { // 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}
public class Hello { // 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}
如果静态方法可以调用到非常静态属性的话,在外部调用这个静态方法的时候,
就等于不用new 实例,就可以引用非静态属性了,
这是不可能的,
所以在Java有规定,静态方法只能引用静态的字段属性的和静态的方法
public static void main(String[] args) {
System.out.println("Hello!");
}
}
public class Hello { // 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}
this表示当前对象。
this代表当前对象,比如常见的setter方法中会有这么一句:this.name = name;代表当前对象的name属性的引用内存地址被参数中传入的name对象的引用地址覆盖。方法前声明synchronized的关键字作为排他锁特效时所参照的对象也是this,即,当前类中所有声明synchronized的方法,在该类的同一个对象中均无法并发调用。
当然了,a.print()也可以换成A.print().由于是在A里面,this就是类A的一个对象。
1,为了在静态方法中调用。因为在静态方法中只能调用静态方法。
2,不用创建类就可以直接通过类名调用方法或成员变量。
this表示当前对象。
--------------------------
http://www.pkwutai.cn
public static void main(String[] args) {
System.out.println("Hello!");
}
}
import com.kobe.jqs.*;
public class A {
public A() {
new B(this).print();
}
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("Hello from A!");
}
}
package com.kobe.jqs;public class B {
static A a;
public B(A a) {
this.a = a;
}
public static void main(String[] args) {
B. print();
}
public static void print() {
a.print();
System.out.println("Hello from B!");
}
}
{
public static void main(String args[])
{
System.out.println("你好");
}
}
public static void print() {
a.print();
System.out.println("Hello from B!");
}
因此a要static A a;
2.this在类中泛指此类对象
public B(A a) {
this.a = a;
}
public A() {
new B(this).print();
}
因为B的带参构造中参数为A类对象,因此在A类传入this代指A类对象
public static void main(String[] args) {
System.out.println("Hello!");
}
}