文章目录
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 |
boolean | false |
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);
}
}