Java知识点(六):类和对象、引用类型、null和NullPointerException


Java知识点

包含什么是类?什么是对象?成员变量、成员方法、对象的创建、成员变量初始化、什么是引用、引用类型声明、引用类型画等号:指向同一个对象、基本类型之间画等号:赋值、null:空、NullPointerException:空指针异常、面向过程和面向对象。


一、什么是类?什么是对象?

1)类是一个抽象的定义。简单来说就是分类

2)对象:真实存在的单个的个体

3)现实世界是由很多个对象组成的,基于对象抽出了类

4)类中定义了所有对象所共有的特征/属性(静),称之为“成员变量”。同时也定义了所有对象所共有的行为(动),称之为“方法”

5)一个类可以创建多个对象;同一个类的多个对象,结构相同,数据不同

6)类是对象的模板,对象是类的具体的实例

在这里插入图片描述

二、类的定义

2.1、成员变量

class 类名{
	成员变量类型 变量名称;
}

class score{
	int a;
	int b;
}

2.2、成员方法

类中除了定义成员变量,还可以定义方法

class 类名{
	修饰符 返回值类型 方法名称(参数列表) {
		... ... ... //方法体
	}
}

class max{
	public void input(int c) {
		System.out.println(b);
	}
}

2.3、对象的创建

当类定义完成后,可以使用new运算创建该类的对象。对象创建的过程一般称为类的实例化

new 类名();
new score();
//使用new关键字创建了一个score类的对象

2.4、成员变量初始化

对象创建后,其成员变量可以按照默认的方式初始化

成员变量类型默认初始值
数值类型(byte、short、int、long、float、double)0
booleanfalse
char/u0000
应用类型null

三、引用类型

3.1、什么是引用

1)除了八种基本类型之外,用类名(接口、数组)声明的变量称为引用类型变量,简称“引用”

2)引用类型中存储的是某个对象在内存中的地址信息。引用的功能在于访问对象

3.2、引用类型声明

max m1 = new max();

1)用某个类名声明的引用类型变量可以存储该类对象的地址信息,通常称为“指向该类的对象”

2)当一个引用类型变量指向该类的对象时,就是通过这个变量对对象实施访问

在这里插入图片描述

2.1)“max m1 = new max()”语句等号右边创建了一个max类型的对象,存放在推内存中;等号左边声明了一个名为m1的max类型变量,存储在栈内存中,赋值表达式将创建对象的地址信息赋值为m1,可以通过变量m1访问到堆中对象

2.2)m1.a和m1.b表示通过引用类型变量访问对象;m1.a表示的语义为:m1所指向对象a

JVM中的方法区、栈、堆概念可参考:JVM内存结构——方法区、栈、堆

3.3、类型画等号

3.3.1、引用类型画等号:指向同一个对象

对其中一个引用的修改会影响另外一个引用

在这里插入图片描述

声明两个max类型的对象,存储在堆内存中;两个变量存放在栈内存中;m1所指向对象变量a赋值为5,b为初始值0

3.3.2、基本类型之间画等号:赋值

对其中一个值的修改不会影响另一个值

在这里插入图片描述

修改整型变量c的值不会影响变量d的值;将m1所指向的对象a赋值为5,m2所指向的对象b赋值为10,则m1.a=5、m1.b=10,因为m1和m2指向的是同一个对象

代码示例:

//类型画等号
public class ooo {

	public static void main(String[] args) {
		max m1 = new max();
		max m2 = m1; //指向同一个对象
		m1.a = 5; 
		m2.b = 10;
		System.out.println(m1.b); //结果为10,对其中一个的修改会影响另外一个
		
		int c = 2;
		int d = 3; //赋值
		c = 4;
		System.out.println(c); //结果为4,对其中一个的修改不会影响另外一个
	}

}

class max{
	int a;
	int b;
}

在这里插入图片描述

四、null和NullPointerException

4.1、null:空

没有指向任何对象,不能对null做任何操作

在这里插入图片描述

4.2、NullPointerException:空指针异常

代码示例:

//NullPointerException:空指针异常
public class ooo {

	public static void main(String[] args) {
		max m1 = new max();
		m1 = null; //空,没有指向任何对象
		m1.b = 10; //运行后,会报NullPointerException空指针异常
	}

}

class max{
	int a;
	int b;
}

在这里插入图片描述

面向过程和面向对象

面向过程代码示例:

//面向过程
//面向过程的缺陷:缺乏对数据的封装;数据和方法(操作数据的)的分离
public class Test {
	public static void main(String[] args) {
		String name1 = "zhangsna";
		int age1 = 24;
		double salary1 = 3500;
		print(name1,age1,salary1);

	}
	
	public static void print(String name,int age,double salary) {
		System.out.println("请输入你的姓名"+name);
		System.out.println("请输入你的年龄"+age);
		System.out.println("请输入你的工资"+salary);
	}

}

在这里插入图片描述

面向对象代码示例:

//面向对象
public class Test {
	public static void main(String[] args) {
		Emp e = new Emp();
		e.name = "zhangsna";
		e.age = 24;
		e.salary = 3500;
		e.print();

	}
}

class Emp{
	String name;
	int age;
	double salary;
	void print() {
		System.out.println("请输入你的姓名"+name);
		System.out.println("请输入你的年龄"+age);
		System.out.println("请输入你的工资"+salary);
	}
}

在这里插入图片描述


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值