学习记录🤔
- 类与对象
- 内存中的布局
- 堆栈
- 成员方法 = 类内的函数
- 传参机制
- 传进来的是一个数组/对象,类似于py的list
- 调用递归-在栈空间方法递归
- 汉诺塔
- 八皇后
- 方法重载overload
- 可变参数
- 作用域**scope
- 构造器/构造方法:新对象的初始化
- 构造器细节
- 对象创建流程
- this关键字 == py.self
- trick
- 讨论总结
- 谢谢点赞交流!(❁´◡`❁)
更多代码: Gitee主页:https://gitee.com/GZHzzz
博客主页: CSDN:https://blog.csdn.net/gzhzzaa
类与对象
Object Oriented Programming:OOP,封装继承多态
- 类是一种数据类型(int基本类,共有的一些特征【属性,行为】),对象是具体的实例(100,200。。。具体数据)
- 创建对象 = 实例化对象 = 实例化类
public class Hello {
//Hello是一个类,public共有的类
//类名、接口名大驼峰
public static void main(String []args) {
//主方法,程序入口
//方法名、对象名小驼峰
System.out.println("Hello World!");
//实例化
Cat cat1 = new Cat();
Scanner myScanner = new Scanner(System.in);
}
}
//定义一个类
class Cat{
String name;
int age;
String color;
}
- 类是一个数据类型,需要类名接收对象的类型
- 变量 = 属性 = field
内存中的布局
- 方法区存放调用的(字符串类、数组)的值(常量池)
- 方法区首先加载类信息
- 对象名在栈区,对象在堆
- 类的copy也是引用传递
- 加载类信息只会有一次
public class Hello {
//Hello是一个类,public共有的类
//类名大驼峰
public static void main(String []args) {
//主方法,程序入口
//方法名小驼峰
System.out.println("Hello World!");
}
}
堆栈
- 功能不同
栈内存用来存储局部变量和方法调用。
而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中,用来存放由new创建的对象和数组。 - 共享性不同
栈内存是线程私有的。
堆内存是所有线程共有的。 - 异常错误不同
如果栈内存或者堆内存不足都会抛出异常。
栈空间不足:java.lang.StackOverFlowError。
堆空间不足:java.lang.OutOfMemoryError。
成员方法 = 类内的函数
public class Hello {
//Hello是一个类,public共有的类
//类名、接口名大驼峰
public static void main(String []args) {
//主方法,程序入口
//方法名、对象名小驼峰
System.out.println("Hello World!");
//实例化
Cat cat1 = new Cat();
int res = cat1.speak(3,4);//调用方法
}
}
//定义一个类
class Cat{
String name;
int age;
String color;
public void/int speak(int n,int m){//形参列表
sout("输出一句话"+(n+m));
return m+n;
}
}
void没有返回值,int返回一个
,speak方法名,public代表公有
- 返回数组使用int[]
传参机制
- 方法内部传进来的基本变量是独立于方法外的变量,
不可变类型
传进来的是一个数组/对象,类似于py的list
- 引用类型传进来的是地址
- new出来的都是对象,都是引用传递
调用递归-在栈空间方法递归
阶乘:
- 栈空间有独立的方法执行,每个栈空间的局部基本变量是独立的
- 引用对象不是独立的,共享堆内的数据
- 随调用随返回
汉诺塔
八皇后
- DFS+回溯
方法重载overload
- 形参不同,调用不同的方法,方法名必须一致,
参数类型必须不同
- 比大小:三元运算符
可变参数
- int 。。。 nums接收可变长度参数
- 可以接收数组
- 最多只有一个可变参数
作用域**scope
- 局部变量(方法内定义的变量)必须赋值才能使用;
- 全局变量(类内属性),有默认止,可以直接使用;
- 不同作用域可以重名,
就近原则
- 同一作用域不能重名
- 局部变量用完就丢
构造器/构造方法:新对象的初始化
类似__init__();
- 没有返回值,不能写void;
构造器细节
- 构造器可以重载,即形参类型/数量进行重载;
对象创建流程
- 类在定义时就已经在堆开辟空间,加载类信息
- age的赋值:默认0-定义时候90-构造器-20
this关键字 == py.self
- this是类内的全局变量;
- this存放的是本对象的引用地址
- this在
构造器中第一行
表示重复利用构造器的重构
trick
- new Test()是匿名对象,使用后销毁
- 局部变量在
栈空间
,调用完即被销毁
讨论总结
191-213–217-233-241–251-262
- public是访问修饰符:控制方法适用范围
- 函数方法可以返回一个数组
- new出来的对象都有独立的内存空间
- 构造器名与类名必须一致
- 方法区加载类信息,常量池有字符串类型的值
- 局部变量在
栈空间
,调用完即被销毁
时间还很多,每天保持思考、保持进步,跬步至千里!
- Fighting!😎
while True:
Go life