Java基础
Java基础
快速入门
Java背景知识
使用Java/开发环境
HelloWorld
常见Bug
Intellij IDEA使用
创建Java程序
其他操作
基础语法
注释
字面量
变量
变量注意事项
关键字、标识符
变量详解
数据类型
数据转换
运算符
API/Scanner
程序流控制
几种结构
分支
循环
循环嵌套
死循环
break、continue
Random随机数
方法
定义方法
使用注意事项
参数传递机制
方法重载
一个类中出现多个方法名称相同,但是形参列表(个数、类型、顺序)不同的方法
return
案例
面向对象编程
入门
深刻认识
对象执行原理
类和对象执行原理
This
构造器
方法名与所在类名一样,没有返回值类型
创建对象同时帮助完成属性初始化
无参、有参
默认无参构造,一旦写了有参构造,要手动写一个无参构造
封装
对象处理事物时包含的数据、方法设计在一个类
合理隐藏、合理暴露
get、set + private隐藏直接访问变量score,同时可以在get、set中设置校验信息
方法,外界需要交互public,不交互private
JavaBean
成员变量私有,对外有get和set,有公共无参构造
实体类只负责数据存储,其他类负责操作数据,实现数据和数据业务分离
成员变量、局部变量
// 目标:搞清楚成员变量和局部变量的区别。
// 1、类中位置不同:成员变量(类中,方法外)、 局部变量(常见于方法中)
int a = 20;
// 2、初始化值不同: 成员变量(有默认值, 不需要初始化赋值),局部变量(没有默认值,使用之前必须完成赋值)
int b = 20;
System.out.println(b);
// 3、内存位置不同:成员变量(存在于堆内存),局部变量(栈内存)
// 4、作用域不同: 成员变量(整个对象),局部变量(在所归属的大括号中)
String name = "黑马";
// 5、生命周期不同: 成员变量 (与对象同生共死),局部变量(方法调用而生,方法结束而亡)
案例
常用API基础
包
1、同一个包下的程序,可以直接访问
2、访问其他包下的程序,必须导包才可以访问
3、自己的程序中调用Java提供的程序,也需要先导包才可以使用;注意:Java.lang包下的程序是不需要我们导包的,可以直接使用。
4、访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。
API
String
String string = new String();
int length = string.length();
char c3 = string.charAt();
char[] charArray = string.toCharArray();
boolean equals = string.equals();
boolean b1 = string.equalsIgnoreCase();
String substring = string.substring();
String replace = string.replace();
boolean contains = string.contains();
boolean b = string.startsWith();
String[] split = string.split();
1、String的对象是不可变的(每次修改时指向了新的String对象)
2、只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份
3、new String创建字符串对象,每次new出来的都是一个新对象,放在堆内存中
ArrayList
数组长度固定,不便增删
ArrayList<String> l = new ArrayList<>();
l.add();
l.get();
l.size();
l.remove();
l.set();
面向对象高级1
static
类变量:static修饰,保存一份,所有对象共享
类名.类变量(推荐)
对象.类变量(不推荐)
实例变量:每个对象的
对象.实例变量
类方法
类名.类方法(推荐)
对象.类方法(不推荐)
实例方法
对象.实例方法
static应用
静态代码块:类加载,执行,执行一次
static{}
实例代码块:创建对象,执行,执行多次
{}
单例设计模式:确保类只有一个对象
饿汉式
懒汉式
继承
this 指向当前子对象
super 指向子对象继承的父
构造器,先调父,再调子(子类中抽象的共性在父类中,子构造访问不到那些变量)
在构造器中可以通过this(),调用类的其他构造器
面向对象高级2
包
权限修饰符
final
修饰:类、方法、变量
类,不能被继承
方法,不能被重写
变量,不能被赋值
基本类型,值不能改
引用类型,地址不变,值可以改
常量
static final来修饰
枚举
抽象类
接口
面向对象3
多态
对象多态:人有不同身份
行为多态:不同身份的行为不同
多态,编译看左边,运行看右边
成员变量,编译看左边,运行看左边
People p1 = new Teacher();
System.out.println(p1.name);
p1.run();
People p2 = new Student();
System.out.println(p2.name);
p2.run();
好处:
1.解耦,对象不好用,换对象
People p1 = new Student();
//更换对象new Student()
2.扩展性,参数用父,可接受所有子对象
public static void go(People p)
public static void go(People p){
System.out.println("开始------------------------");
p.run();
if(p instanceof Student){
//强制转换时要先用instanceof判断
Student s = (Student) p;
s.study();
}else if(p instanceof Teacher){
Teacher t = (Teacher) p;
t.teach();
}
System.out.println("结束------------------------");
}
坏处:多态下不能使用子类独有的功能
People p = new Student();
p.study