this&static&block

this关键字

代表当前对象

使用方法

在构造器中

this在构造器首行调用本类中其他构造器

this(参数)//匹配不同构造器的参数

构造器之间不能相互调用

区分同名变量

​ 解决成员变量与局部变量,参数之间同名问题

​ this使用在成员方法中,this指代当前调用成员方法的对象

​ 不存在同名变量|参数问题,变量就是指代成员,前面默认省略this

static关键字

static 静态的 成员修饰符

​ 1.类变量 | 静态变量

​ static修饰变量只能是成员变量 不能修饰局部变量

​ 2.类 方法|静态方法 static修饰的方法

静态内容使用方式

​ 类名.方法名(参数列表);

​ 类名.属性名;

​ 对象.方法名(参数列表);

​ 对象.属性名;

总结

  1. 被static修饰的内容是属于类的,可以通过类使用,可以通过对象使用
  2. 成员内容是属于对象的,成员变量,成员方法只能通过对象调用
  3. 静态的内容中只能使用静态的内容,成员内容只能通过对象使用
  4. 非静态内容中,可以直接使用静态的,也可以使用非静态的
  5. 静态内容只有一个内存空间,所有的对象共享一个静态内容.
public class StaticDemo01 {
	//静态变量
	static int age=5;
	//成员变量
	int id=10;
	
	//静态的方法
	public static void main(String[] args) {
		//局部变量不能使用static修饰
		//int a=5;
		
		System.out.println(age);  //当前类中,可以省略类名
		StaticDemo01 demo=new StaticDemo01();
		System.out.println(demo.id);   //10
		System.out.println(demo.age); 
		System.out.println(StaticDemo01.age);   //5
		//System.out.println(StaticDemo01.id); 
		
		System.out.println(demo);
		demo.change();   //6  11
		System.out.println(demo.id);      // 11
		System.out.println(StaticDemo01.age);   //6
		demo.change();  //  7 12
		System.out.println(demo.id);      // 12
		System.out.println(demo.age);     // 7 
		
		StaticDemo01.change2();  //8 -> 11   
		System.out.println(demo.id);      // 12
		System.out.println(demo.age);     // 8   
		
		demo.change2();  //  9-> 11  
		System.out.println(demo.id);      // 12
		System.out.println(demo.age);    // 9
	}
	
	/*
	 * 改变属性值
	 */
	public void change(){
		age++;  //静态的
		id++;   //成员的
		System.out.println(age+"-->"+id); 
		System.out.println("this:"+this);
	}
	
	public static void change2(){
		age++;  //静态的
		StaticDemo01 demo=new StaticDemo01();
		demo.id++;   //成员的
		System.out.println(age+"-->"+demo.id); 
	}
}

块(block)

在块中 {}即为作用域

有四种类型

  1. 局部代码块:定义在方法中: 执行时机:调用时

  2. 构造块:定义在类中方法外:构造块 执行时机:new,创建对象时

    构造块先于构造器的代码执行,如果存在多个构造块,从上到下依次执行

  3. 静态块 :static{} 定义在类中方法外: 执行时机:类第一次加载后执行一次.

    静态块先于主方法执行,如果存在多个静态块,从上到下依次执行

    4.同步块

执行顺序;

static-> main->构造块->构造器

public class BlockDemo01 {
	//如果存在静态块,静态变量,从上到下依次执行
	static int a=10;
	static{
		System.out.println(a);
	}
	
	int b=5;
	
	static{
		System.out.println("我是静态块1"+a);
		//BlockDemo01 bd=new BlockDemo01();
		//System.out.println(bd.b);
	}
	
	static{
		System.out.println("我是静态块2");
	}
	
	public BlockDemo01() {
		System.out.println("我是构造器");
	}
	
	//构造块
	{
		System.out.println("我是构造块1");
		System.out.println(a);
		System.out.println(b);
	}
	{
		System.out.println("我是构造块2");
	}
	{
		System.out.println("我是构造块3");
	}

	public static void main(String[] args) {
		System.out.println("main");
		int a=15; //作用域在变量声明开始,到离我最近的,包裹你的{}的}为止
				  //同一个作用域之内变量不能重名,使用就近原则使用
		//局部代码块
		
		{
			int b=5;  //作用域就在代码块中
			System.out.println(a);
		}
		System.out.println("-------"+BlockDemo01.a);
		
		BlockDemo01 bd=new BlockDemo01();
		System.out.println(bd.a);
		
		//System.out.println(b);  无法使用
	}
	
}

运行结果

[外链图片转存失败(img-1Jdnn1BL-1562326316656)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1562324604899.png)]

lockDemo01.a);

	BlockDemo01 bd=new BlockDemo01();
	System.out.println(bd.a);
	
	//System.out.println(b);  无法使用
}

}


运行结果

[外链图片转存中...(img-1Jdnn1BL-1562326316656)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值