一 面向对象的两个基本概念
1.1类
是一切事物的统称,可以用来描述事物的特征和行为
1.2 重载和重写
重载:在一个类下,具有相同的方法名,参数类型 和个数不同,跟返回值无关。
重写:要有子类继承父类,父类引用指向子类对象。具有相同的方法名,参数类型 个数相同,跟返回值有关。
1.3 构造方法
必须声明属性和方法之间。
二 构造代码块
实例化对象的时候,首先调用构造方法,构造代码块在构造方法之前,前提必须实例化对象
案例
class Student{
int id;
String nameString;
//这是一个构造代码块,执行在无参构造的前面
{
System.out.println("这是一个构造代码块");
}
public Student() {
System.out.println("这是一个无参构造方法");
}
public void name() {
int id=20;//这是一个局部变量,必须声明在方法类 然后必须要赋值;
System.out.println(id);
System.out.println(nameString+"这名学僧");
}
}
2.1 局部变量和成员变量
局部变量声明位置在方法体里面 或者 方法的参数,必须调用这个方法 才能使用。
成员变量声明在类下面 和方法体的之间。
2.2 局部变量和成员变量的区别?
区别 | 成员变量 | 局部变量 |
---|---|---|
定义位置 | 类的下面方法之外 | 定义在方法体 |
作用 | 描述当前类属性 | 保存局部变量 |
初始化值 | 默认为null | 需要赋值 |
存储位置 | 堆中 | 栈中 |
作用域 | 类内可以使用 | 在能在当前方法使用 |
三 this 和 super 关键字的区别?
this 表示这个类的当前的对象。
this可以调用构造方法,必须放在首行。
super :要有继承关系,也是放在首行。
可以调用父类的成员属性和成员方法,在子类中写关键字super
四 权限修饰符
public 公共类 private 私有化,默认 protect 保护
从大到小排序
public ----protect-----default----private
五 匿名对象
语法格式 : new 对象{}括号里面写抽象方法的实现。
5.1 内部类
1 在java中允许将一个A类声明在另一个类B中,则 a为内部类 B则是外部类
2 内部类又分为成员内部类(静态 非静态)和局部内部类(代码块 构造器 方法内)
3成员内部类:里面可以定义属性和方法,构造器等
六 继承
6.1 继承的好处
1 减少代码冗余,提高代码的复用性
2 便于扩展功能
6.2 继承格式
class A extends B{}
A:子类
B:父类
一旦子类继承父类 那么就继承父类的相同的属性和方法
6.3 关于继承规则
1 一个类可以被多个子类继承
2 一个子类只能继承一个父类
七 重写
7.1 重写规则
方法声明: 权限修饰符 返回值类型 方法名(形参列表){
方法体
}
1 子类重写的方法名和参数列表跟父类重写的方法名和参数列表要相同
2 子类重写的方法权限修饰符不小于父类重写的权限修饰符
3 被static修饰的方法不能被子类重写
八 多态
8.1 多态定义
多态性理解:一个事物的多种形态
对象的多态性:父类的引用指向子类的对象
多态使用:当调用子父类同名同参数的方法时,实际是执行子类重写父类的方法;
8.2 多态使用的前提
1 类的继承关系
2 方法的重写
3 要有父类引用指向子类对象
九 static关键字
static是静态的,可以用来修饰 属性 方法 代码块,内部类
1 使用static修饰属性: 静态变量
1.1 属性: 又可以分为静态变量 和非静态变量(实例变量)
实例变量:我们创建类的多个对象,每个对象会独自享受一个空间,当修改其中的属性值,不会导致这个属性会改变
1.2 静态变量: 是指 多个对象共享同一个静态变量,当静态变量修改了,会导致其它对象调用静态属性是修改后的
2 static修饰属性的其它说明
2.1 静态变量随着类的加载而加载,类.静态变量的方式进行调用
2.2 静态类加载早于对象创建
2.3 由于类只会加载一次,则静态变量也会在内存中一份 存放在方法区
9.1 类变量和实例变量的内图分析
## 10 异常 ### 10.1 编译异常和运行异常有哪些 编译异常: sqlException,ioExecption classnotfoundexpection epfexpection 运行异常: 算术异常 空指针异常,数字不合异常 下标越界异常,(IndexoutofBoundsExpection)参数不符合异常(InputMismatchExpection) ### 10.2 异常处理的方法try{
}catch{
}
throw :作用在方法体中
throws :声明在方法后面 表示抛出异常
11 String 字符串
package com.mmc.a_string;
public class StringDemo {
public static void main(String[] args) {
String string = " abcde adftg ";
System.out.println(string.startsWith("a", 1));
//判断是否以给定的字符为结尾
System.out.println(string.endsWith("ftg"));
//去除前面和后面的为空的字符串
System.out.println(string.trim());
//判断字符串是否为空
System.out.println(string.isEmpty());
//判断 是否包含字符串
System.out.println("sss".contains("ab"));
//拼接字符串
System.out.println(string.concat("aaa"));
//将字符数组转为字符串
char[] chars = string.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.print(chars[i] + " ");
}
//字符串替换
String string1="ssaassaa";
String replace = string1.replace("ss","c");
System.out.println(replace);
//字符串的切割
String[] split = string1.split("aa");
for (String s : split) {
System.out.println(s);
}
//截取字符串 substring这个方法
System.out.println(string1.substring(2)); //包含2
System.out.println(string1.substring(2,5)); //包含2 不包含5
//将小写字母转换为大写字母
System.out.println(string1.toUpperCase());
//将大写转换为小写字母
System.out.println(string1.toUpperCase().toLowerCase());
}
}