title: JAVA概述
date: 2020-12-28 12:34
author:zox
note:本博客只是上课的课堂笔记不是总结!!!
JAVA概述
本文涉及到的安装资源和源代码在文章最后的链接
听课内容
14:00–17:00
1、了解 JAVA
- James Gosling开发的Oak是Java的前身
- JAVA 版本迭代,目前比较稳定的是Java1.8
- 方向:J2SE 标准版,J2ME 小型版(嵌入式开发),J2EE 企业版
- 重要特点:面向对象,开源,跨平台
2、安装 java 环境
- jdk1.8:java 开发工具包
- 安装 java 环境
弹窗:是否 安装 jre,(jdk 已包含 jre 所以不用再安装)
- 进入安装好的JDK所在文件夹查看
bin:所有的可执行文件
lib:Java 相关依赖包
jre:java 运行环境(包含 JVM)
- 配置环境变量(系统变量)jdk 的 bin 目录
目的:java 在计算机的任意目录都可以运行!
测试是否配置成功:打开cmd 命令行测试输入 java -version
- 入门程序:hello world
首先声明一个类 class,主函数 Demo.java
编译+运行 两个阶段
编译 javac Demo.java 得到 Demo.class 字节码文件
运行 java Demo 运行
3、安装 IDEA
- 步骤一:打开 IDEA文件➡️选择软件安装目录➡️选择 64 位➡️install 安装
- 步骤二:双击打开➡️我接受➡️dont cent ➡️主题选择➡️激活➡️第二个选项➡️不要解压直接把压缩包拖进去
- 步骤三:创建第一个 java 工程➡️new project ➡️Add jdk ➡️设置 工程名,工程路径➡️得到java工程
src:存放 java 文件源码
要对源码进行分类建立 package,格式[com.name.分类类别]
- File 的 setting 设置 font等其他设置
声明类 class
快捷键psvm 生成主函数
4、面向对象知识
- 方法
方法的级别:static 的方法可以直接在主函数中调用,否则实例方法,则需要创建对象
一个需求,一个功能,一个方法
方法重载:允许方法名相同、但参数列表不同
- 强制转换
java 支持基本数据类型的强制转换,如果是引用数据类型则需要是"父子关系"
5、类与对象、封装
对象
- 类的实例化
类默认继承 Object 类:@Override:是子类重写父类方法的标识
- 属性
所有的属性都制定 get、set 方法
快捷键 Alt+Insert+getter 和 setter+选中所有+Enter
- 构造方法
名称与类名保持一致
无参数的构造方法:默认有,但只要写了别的任何构造方法都需要重写无参构造方法,默认的会被覆盖
有参数的构造方法
快捷键Alt+Insert+Constructor+选择+Enter
- toString 方法
快捷键Alt+Insert+toString+选择+Enter’
将所有属性连成字符串输出
- 对象、变量及其内存分布
堆、栈、方法区
内存地址:全局的唯一标识
变量:开辟空间,存在栈内存中,无论是基本数据类型还是引用数据类型
new student():即 student1 的实例是在堆中开辟的空间,通过引用数据类型的 student1 指向;
6、垃圾回收机制
java 自动回收占用的空间(和 c 不同)
18:00-21:00
7、继承
语法:extends 类名
可以将父类所有的属性和方法都继承下来(除私有)
子类可以重写父类的方法,super
java不支持多继承(后面会讲的接口可以)
“重写和重载的区别”
8、多态
- [1]向下转型
父类的引用可以指向子类的对象
例如:Animal animal = new Cat();
类型强制转换的时候,引用的部分和接收的部分必须一致,否则在运行的时候会报接收异常
- [2]向上转型
某个对象的引用视为对其子类的引用,编译对象是子类,运行对象是父类
- 实例:主人喂养宠物
创建对象:主人、猫、狗
主人的方法:喂养(重载)
猫、狗:吃东西
现在还想喂养兔子、等其他动物:添加新的兔子类
如果当前项目已经成型,还想修改新的的话,就要使用多态使得代码不需要一直修改!!!
增加一个"宠物类",所有动物继承这个类,即每个动物的 eat 都是重写父类的 eat 方法
而对于主人类的 feed 方法不需要重载新的,只需要一个就可以了!!!
再添加新的动物也是一样!!!
9、接口
- 抽象类
作用:只能用来被继承
格式:abstract
abstract 和 private(因为 abstract1 方法是 public 的)、final(final 定义的方法不能被继承) 冲突
抽象类可以有普通方法,也可以有抽象方法
抽象类不能实例化对象
抽象方法:也用 abstract 修饰,没有方法体,只能存在于抽象类中
当子类继承了抽象类,抽象类中的抽象方法必须被子类重写
[问题]:一个类没有抽象方法可不可以定义为抽象类,如果可以,有什么意义?
不可以对这个类实例化对象,可以定义一些普通方法供使用,意义不大!
- 接口
接口是一个特殊的抽象类,接口中的方法必须都是公共的抽象方法,没有方法体
新建一个接口,使用 public interface 类名
接口中定义方法,则 public abstract 可以省略
接口中不允许有变量的存在
- 接口的实现
implements 接口类似于继承
必须将接口中的所有抽象类重写
快捷键:在报错时,鼠标放在红色的位置,按下Alt+Enter
- 声明常量
用 final static 关键字修饰
被 final 修饰的常量、方法都不能被重写赋值或重写
例如:public final static String USER_NAME =“张三”;
- 实例:要学会接口和多态结合使用的场景
person 人类,人类有接收消息的方法,QQ、微信、Email 等,将接收到的消息打印在控制台。
通过接口和多态设计一个程序
分析设计
对象:人、QQ、微信、Email
Person 的方法:接收消息
Message:信息接口,子类包括 3 个,重写 Message 的接收信息的方法
Test:测试
10、异常处理机制
- 运行时异常
定义 : RuntimeException及其子类都被称为运行时异常。
特点 : Java编译器不会检查它。 也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用。try-catch语句捕获它",还是会编译通过。 - 被检查的异常
定义 : Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。
特点 : Java编译器会检查它。 此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编
译。 - 错误
定义 : Error类及其子类。
特点 : 和运行时异常一样,编译器也不会对错误进行检查。
[第一次作业:创建一个登录框,使用servlet 和 jsp]
链接:Day-1的相关资源
提取码:9492