2021年07月14日 随堂笔记
习题讲解
求最大公约数
int i;
for(i=n;i>0;i–){
if(m%i==0&&n%i==0)
break;
}
回文数
颠倒这个数,如果和原来的数一样的话,那么就是回文数。
1 | m=12321; |
11题 2+22+222+2222+22222
1 | n=5; |
面向对象
结构体
1 | struct book{ |
定义结构体变量:
1 | struct book m; |
取别名
1 | typedef struct book{ |
类 = 结构体 + 函数
| |
属性 方法
面型对象的特征
- 封装
- 继承
- 多态
继承是为了更好的实现软件复用
在面试的时候,一定要举例子说明。
多态
重载
在同一个类里面有多个同名方法,—->见名知意
1 | int max(int x,int y) |
重写
在继承的情况下。
高内聚 松耦合
模块之内要高内聚,模块之间要松耦合。
类之内要高内聚,类之间要松耦合。
添加新功能,应该封装实现
对别人的功能上添加新功能,不要重写,要包装别人的类,如果有问题那么就是原来的类的问题,责任不在自己
类
类的声明和类体
java命令规则
类的名字不能是java中的关键字,要符合标识符规定
标识符规定
标识符可以由字母,下划线,数字或美元符号组成,并且第一个字符不能是数字
a$是合法的(日常使用中应避免使用美元符号作为标识符)
类的成员属性
属性写在类的前面,方法写在后面
类的成员方法
方法的名字必须符合标识符规范,
首字母小写,其他单词首字母要大写。
构造方法
构造方法的名字必须和类名相同,并且不能写返回值类型。
如果写了返回值类型,那么该方法就不在是构造方法,而是普通方法。
new出来的空间都在堆,其他的都在栈空间。
this指针
编译器会在调用每个对象的时候,写到方法的形参里面。
picgo-plugin-gitee-uploader
就近原则
优先使用最近的同名变量
编程题 求两点之间的距离
new是申请空间,构造函数是初始化
编程题 写一个圆Circle类
给定圆心和半径
求周长,面积,位置的关系,相离,相切,相交。
1 | public class Circle { |
写方法时,参数越少越好。
如果一个类之中没有写构造函数,编译器会给这个类写上一个默认的构造函数。
如果你已经在类之中写了构造函数,则编译器不会提供默认的构造函数。
空的类系统依然会分配内存,通常是一个字节
编程题 复数的加减法
a+bi
复数的运算法则
https://baike.baidu.com/item/%E5%A4%8D%E6%95%B0/254365#5
常量
final定义的变量就是常量。
1 | public final in MAX=99; |
常量不能被重新赋值。
构造函数中给常量赋值
常量可以先声明,然后在构造函数中赋值。
1 | public class Demo{ |
注意,只能在构造函数中赋值,不能在其他方法中给常量赋值。
static
类中的常量应该使用static修饰,不然的话每个对象都存储一遍常量会浪费内存。
JDK7以上版本,静态域存储于定义类型的Class对象中
static定义的成员,应该使用类名来调用,不要用this来调用
static定义的方法,编译器不会给static方法增加this形参,所以这个static方法不能去访问对象。
如果确实要在static方法中访问对象,可以自己在形参列表中传入该对象的引用。
静态方法只能访问静态的成员变量和成员方法
编程题 定义一个类,要求该类知道创建了多少该类的对象
使用static定义一个计数器,然后在构造函数中给计数器加一
单例模式
- 先要隐藏构造函数,类的构造函数私有化。
- 提供一个静态的公共方法给别人获取对象。
- 在类中,要记下已经创建好的对象。
代码块
如果在类之中的成员变量,在定义时赋值,在代码块中赋值,在构造器中赋值。
执行顺序为:
直接赋值,代码块,构造函数
如果有多个代码块,多个代码块之间按定义大的顺序执行。
静态代码块只会执行一次
静态代码块在.class文件加载到内存中就运行了,因为类只会加载一次,所以静态代码块也就只会执行一次