Java类和对象(成员变量/局部变量 构造方法 this关键词 方法重载 命名规则)

面向对象:OOP(Obejct Oriented Programming)

1.类 和对象
一切皆对象,java中基本的操作单位就是对象

1)类:
	所有同种的特征和行为,抽象出来成为类是概念,不真实存在的
	
		学生类: - 实体类
		学生的特征: 成员变量/属性
			姓名 年龄 性别 学号

		学生行为: 成员方法
			吃饭 睡觉 学习

2)对象:
	符合类的特征并且真实存在的独立个体
	符合类的实例化个体 - new对象

3)类和对象的关系:
	先有(声明/定义)类,才能创建类的对象

2.类的定义

1)分类
	a.有实际意义的类 - 实体类
		可以存在真实个体的类: 车类 人类 鼠标类...
	b.没有实际意义的类 - 普通类
		作用:放主方法
2)定义实体类
	a.成员变量
	  可以不用初始化,有默认初始值
	  引用数据类型:null
	  基本数据类型:0
	b.成员方法

3.使用对象的步骤:

1)必须要有实体类
	class Student{
		String name;
		int age;//成员变量
	}
2)创建对象 - 找到主方法 - 放在普通类中
3)有了对象,对象中包含(成员变量和成员方法)	
	调用成员变量:
		stu.name
	调用成员方法:
		stu.study

2.成员变量和局部变量的区别

1)位置上的区别
  局部变量:方法中
  成员变量:类中
2)初始化的区别:
	局部变量:使用前必须声明 + 初始化
	成员变量:使用前可以不用初始化,因为有默认初始值
3)个数的区别:
	局部变量:声明个数
	成员变量:有对象决定,有多少个对象,就有多少个成员变量
4)JVM内存图中的区别
	第一次使用[只加载一次]类,把类加载进来
	局部变量:存在方法栈中,方法结束,变量消失
	成员变量:存在堆中

	属于类中的成员变量,通过类调用
	stu.car = new Car();

	直接创建对象 - car属于局部变量
	Car car = new Car();

3.构造方法/构造器

1)作用:初始化成员变量
2)特点:
	a.方法名和类名一致
	b.没有返回值类型
	c.修饰词可有可没有(public)
	d.编译器会默认添加无参构造器
		但是,如果有构造器,则不会继续添加无参构造器.
		建议: 手动添加无参构造器

4.this关键词

this:表示当前对象(动态值)
	那个对象调用,就表示那个对象
1)在构造方法中,this可以调用自己的成员变量
	成员变量和局部变量重名时,需要借助this关键词表示成员变量
		this.name = name;
2)在构造方法中,借助this可以调用自己的成员方法
3)在使用this(空参/有参)时需要注意,只能放在构造方法的第一行
4)调用构造器时,this不能省略
	也不能同时调用,会造成死循环

5.方法重载

1)条件:
	a.类型不一样
		ps:(int a)
		   (String a)
	b.个数不一样
		ps: ()
			(int a)
		    (int a, int b)
	c.顺序不一样
		ps: (int a, double b)
		    (double b, int a)
	d.不允许
		(int a, int b)
	    (int b, int a)
2) 跟返回值无关
3) 必须在同一个类中,相同方法名的几个方法,叫做方法的重载

6.数组结合对象使用 - 引用类型数组
1)赋值方式

(1)静态赋值
  ps: Student[] stu = {new Student(),new Student()}
(2)动态赋值
  ps: Student[] stu = new Student[3];

2)有可能产生的问题:

java.lang.NullPointerException - 空指针异常
产生原因:
	调用了空值的 成员变量 或 成员方法
解决办法:
	在调用前,new一个对象

3)引用类型数组的使用步骤

(1)给数组初始化
	Student[] stu = new Student[3];//默认值都是null
(2)给数组元素初始化
	stu[0] = new Student()
	stu[1] = new Student()

作业:俄罗斯方块
分析: S、Z、L、J、I、O、T

一个图形,分为4个方块
以一个方位为类:
	Cell类:
		成员变量
			row col
		成员方法
			左移/右移/下移
			画图形的方法

Debug断点测试:

1.F7:执行这一行代码
2.F8:跳过这一行代码
3.Shift + F8:回到上一行代码
4.Ctrl + F2: 结束程序
5.F9:跳到下一个断点

命名规则:

1.只能出现:英文 + 数字 + _ + $
2.不能以数字开头
3.变量名:可读性好,首字母小写,第二个字母开始首字母大写 - 小驼峰命名法
4.包名: 全小写 - 域名倒写
	www.baidu.com
	com.baidu.www
5.方法名:可读性好,名字长度没有要求
		 小驼峰命名法
6.类名:首字母大写,第二个字母大写 - 驼峰命名法
	Scanner Math String

对象内存图
对象内存图
引用类型数组内存图
引用类型数组内存图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值