您的位置:首页 > 编程语言

面向对象编程基础

2019-03-01 13:59 113 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43668388/article/details/88028079

this关键字

当类中的成员变量与成员方法中的参数重名时,使用this,来使用类中的成员变量;不用的话,就是成员方法中的参数

public class test {
String name="abc";
public void showName(String name) {
System.out.println(name);
}
public static void main(String[] args) {
test book=new test();
book.showName("123");
}
}
=>123

System.out.println(this.name);
=>abc

无参构造方法中使用this关键字调用有参的构造方法

public EggCake() {
this(1);
}
public static void main(String[] args) {
EggCake cake1 = new EggCake();
}

静态变量

当类首次被加载时,静态变量就被分配到内存中,直到程序结束才会释放,一旦改变后,之后的其他也会变。

静态常量

命名时所有字母大写

final static double PI=3.1415926;

静态代码块

public class test {
static String name;
//静态代码块
static {
System.out.println(name + "静态代码块");
}
//非静态代码块
{
System.out.println(name+"非静态代码块");
}

public test(String a) {
name = a;
System.out.println(name + "构造方法");
}

public void method() {
System.out.println(name + "成员方法");
}

public static void main(String[] args) {
test s1;// 声明的时候就已经运行静态代码块了
=>null静态代码块
test s2 = new test("s2");// new的时候才会运行构造方法
=>null非静态代码块
s2构造方法
test s3 = new test("s3");
=>s2非静态代码块
s3构造方法
s3.method();//只有调用的时候才会运行
=>s3成员方法
}
}

1)静态代码块由始至终只运行了一次。
(2)非静态代码块,每次创建对象的时候,会在构造方法之前运行。所以读取成员变量name时,只能获取到String类型的默认值mull
(3)构造方法只有在使用new创建对象的时候才会运行。
(4)成员方法只有在使用对象调用的时候才会运行。
(5)因为name是static修饰的静态成员变量,在创建s2对象时将字符串"s2”赋给了name,所以创建s3对象时,重新调用了类的非静态代码块,此时name的值还没有被s3对象改变,于是就会输出“s2 非静态代码块

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: