代码块,this,static,private关键字以及封装,成员变量与局部变量的区别

成员变量和局部变量的区别?

1)书写位置不同
	成员变量:在类中,方法外定义的变量!
	局部变量:在方法声明上或者是方法定义中!
			public void show(String name){
				int num = 200 ;
				System.out.println(name+num) ;
			}			
2)内存中的位置不同
	成员变量:在堆内存中
	局部变量:在栈内存中
3)生命周期不同:
	局部变量:随着方法调用而存在,随着方法调用完毕而消失!
	成员变量:随着对象的创建完毕而存在,随着对象被GC回收掉而消失
									对象的回收:
									并不是立即回收,而是等待垃圾回收器空闲时回收掉!
4)初始化不同:
	成员变量:可以不进行初始化,因为它在堆内存中(跟对象有关系),存在系统默认初始化
	局部变量:必须在使用之前对象局部变量进行初始化,否则报错"可能尚未初始化变量xx"

匿名对象:

		概念:没有名字的对象!
		
		之前的格式:
			类名  对象名 = new 类名() ;
			
		匿名对象的创建格式:
				new 类名() ;
				
		特点:
			1)可以作为形式参数传递!
			2)匿名对象不要使用多次,使用一次即可!
				匿名对象,应用场景:
						移动端:android 大量去使用匿名对象  或者匿名内部类
							
				匿名对象创建完毕,使用完毕就立即被回收(节省内存空间)

private关键字:

	private:私有的,外界不能访问的!只能在本类中访问
				(但是可以间接通过公共的成员方法来访问私有成员变量/成员方法)
	它可以修饰成员变量,也可以修饰成员方法

封装的概念:

			Java提供这样一种技术:
					将一个类的成员变量私有化,外界不能够直接方案,可以通过
					一些公共的方法(set/get...)间接的访问!

关键字:this

			this:代表当前类对象的地址值引用!
			
			为了区分:局部变量隐藏成员变量: this.成员变量;

一个类的成员组成:
1)成员变量
2)成员方法
3)构造方法

什么是构造方法?

	特点:
		1)方法名和类名相同
		2)没有具体的返回值类型
		3)连void都没有
		
		权限修饰符 方法名和类名相同(){  //无参构造方法
		
		}
		
		构造方法的作用:给对象的成员进行数据初始化的!

构造方法:
构造方法是可以重载的:
无参构造方法
有参构造方法

	注意事项:
		在写一个类的时候,没有提供无参构造方法,系统默认提供无参构造方法!
		如果开发者提供有参构造方法,系统不会提供无参构造方法了,所以永远给出无参构造方法!

学生事物:
属性:姓名,年龄,性别
行为:学习,玩游戏…

使用一个标准类的书写格式描述学生事物

	学生类
		属性私有化:成员变量私有化
		提供给对外的公共方法:setXXX(xx x)/getXXX()   
			学习,玩游戏....
		构造方法:
			无参构造方法
			无参构造方法

需求:
描述人事物
属性:姓名,年龄,国籍
成员方法:提供一个show()方法,作用,输出人的姓名,年龄,国籍

按照上面的需求:创建四个人---->国籍都是"中国",从内存角度考虑,

	成员变量随着对象的完毕存在----堆内存中 (比较消耗内存空间)
	
	如何改进: Java提供一个关键字:static(共享,共用)

static关键字的特点:

	1)被static修饰的成员,随着类的加载而加载 (类就加载一次!)
	  javac xxx.java---->xxx.class  (字节码文件)
	  java xxx ---->运行---->加载类的时候,对象还没开始创建
	  
	2)优先于对象存在 
			对象的创建是在类加载的后面
			
	3)有被共享,共用的意思
		这句话:告诉我们什么时候使用static修饰变量,方法
			能够描述被共用,共享的时候
			
			举例:
				班级号可以被共用
				饮水机:可以被共用
				
				水杯中的水(不能共用)
				
	4)最重要的特点:
		被static修饰的变量以及方法可以被类名直接访问!(推荐类名直接访问)
			
		这些被static修饰变量/方法,也可以通过对象名来访问(不推荐!)

关于static关键字的注意事项:

		1)static关键字中 没有this的关键字的
		2)关于访问的问题:
		非静态的成员方法,既可以访问静态的变量,也可以非静态的变量
		也可以访问静态的方法以及非静态的成员方法
									静态的方法只能静态的变量/方法

Java中代码块:
使用{}包起来的内容,就称为代码块!

	分类:
		1)局部代码块
			在局部位置中定义的{},作用:限定变量的声明周期
		2)构造代码块
			在类的成员位置中定义{},
				特点:在当前类中,有限执行构造代码块,然后在执行构造方法...
				(每次执行构造方法之前先执行构造代码块)
				构造代码块的作用:对当前类的数据进行初始化!(很少用,笔试题!)
		3)静态代码块
		
			在{}的前面加上static
			static{
				....
			}
			
			静态代码块随着的类的加载而加载,由于类加载一次,静态代码块执行一次!
	
		
优先级:
	静态代码块 > 构造代码块 >构造方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值