📦 归档笔记 — 原创建于 WizNote,仅作归档展示;观点以当年为准,非最新。

JAVA笔记整理

创建时间2021-12-29最后修改2021-12-29原位置/程序员成长之旅/Java学习/2021~2022第一学期JAVA课程/字数2038图片/附件1
目录:程序员成长之旅/Java学习/2021~2022第一学期JAVA课程

[TOC]

JAVA笔记整理

Java的重要时间

  • 1999 JAVA被分成J2SE, J2EE, J2ME, JSP/Servle技术诞生

  • 2000 JDK1.3发布, JDK1.4发布

  • 2001 Nokia公司宣布到2003年将出售1亿部支持Java的手机, J2EE1.3发布

  • 2002 J2SE1.4发布, 自此Java的计算能力有了大幅度提升. J2EE SKK的下载量达到了200万次

Java的三个版本

  • Java SE标准版

  • Java EE企业版

  • Java ME迷你版

JDK介绍

JDK中存在三大模块

  • 开发工具

  • javac.exe编译工具

  • java.exe运行工具

  • javadoc.exe生产javaDoc文档工具

  • jar.exe打包工具

  • JDK类库

  • 提供最基础的java类以及各种实用类

  • java.lang

  • java.io

  • java.util

  • java.awt

  • javax.swing

  • java.sql

  • JAVA虚拟机

  • 负责解析和执行java程序

  • 运行在各个操作系统平台上

JAVA环境变量配置

  1. 创建 JAVA_HOME , 值为JDK的安装根目录

  2. 在 PATH中 添加JAVA_HOME/bin目录, 使得系统可以直接访问JDK中的可执行工具

  3. 在 PATH中 添加JAVA_HOME/lib, 使得可以访问JAVA库文件

JAVA的基础编码规范

  • 包, 类, 变量, 方法等命名: 见名知意

  • 包名小写

  • 类名或接口名, 驼峰命名, 但是首字母大写

  • 方法名, 驼峰命名

  • 变量名, 驼峰命名

  • 常量, 全大写, 使用下划线分隔

JAVA的基础编码

  • Java可以存在多个类存在,但只能存在一个公共类(public)

  • 一般把main方法声明为公共类

  • 注意Java中的层次错误,Java中有严格的层次要求,package 语句需要在先 import在后,最后就是类和接口说明。

例子


public class HelloJavaApp{

public static main{

system.out.print(“Hello World”);

}

}

import 引入类库

public class HelloJavaApp Java中的主类 类名必须和文件名一致 (区分大小写)

public static void main 入口函数

JAVA的运行过程

.java编写代码 -> 生成字节码.class文件(若需要类库, 则在此阶段导入) -> 通过JAVA运行

数据类型

![img](C:\Users\wanyu\Documents\My Knowledge\temp\7c287a46-5c11-4afe-ac9e-da830266d588\128\index_files\0.041279939935432.png)

声明时必须确定其类型,这点和C语言相近

![img](C:\Users\wanyu\Documents\My Knowledge\temp\7c287a46-5c11-4afe-ac9e-da830266d588\128\index_files\0.9148155404140679.png)

String 是一种常见的引用数据类型,用来表示字符串。在程序开发中,很多操作都要使用字符串来完成,例如系统中的用户名、密码、电子邮箱等。

数据类型的初始值

整形 -> 0

实型 -> 0.0f0.0d

字符型 '\u0000'

类对象(引用类型) null

逻辑运算符

🖼 图片占位(归档模式)图片见原始导出:https://anying-blog-pic.oss-cn-beijing.aliyuncs.com/images/0.041279939935432.png

运算符


+,-,*,/,% 基本和C语言类似

"+"除了可以作为双目运算符来使用,还可以连接字符串

若使用"+"时,两方类型有一个是字符串(String)类型,就会自动将另一方转换成字符串类型。

常用函数

基础函数

equals


public boolean equals(Object o);// 完全相等 true 否则 false

printprintln的区别

println会换行, print不会换行

java.util.Scanner


import java.util.Scanner;

public class ScannerDemo {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

//获取用户输入的一行数据  返回为字符串

String s = in.nextLine();

System.out.println(s);

//返回用户输入的int值

int i = in.nextInt();

System.out.println(i);

//循环读取int数据,当输入exit时退出循环

while (!in.hasNext("exit")) {

System.out.println(in.nextInt());

}

//关闭输入

in.close();

}

}

数组

一维数组


String s[] = new String[3];

二维数组


String b[][] = {

{1, 1},

{21, 22},

{31, 32, 33}

}

什么是类?

  • 具有相同特性(属性)和行为(方法)的对象的抽象就是类。

  • 属性: 对象有什么

  • 方法: 对象干什么

如何定义一个基础类?

  1. 定义类名

  2. 编写类的属性

  3. 编写类的方法


public class 类名{

属性1类型 属性1;

属性2类型 属性2;

...

方法1;

方法2;

...

}

类的访问


[访问类型] class 类名{...}

/* 访问类型:

default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

*/

方法的访问

static

可以使该方法直接可以被拥有权限的方法调用, 无需实例化该方法所在的类!

构造方法

构造方法会在使用new关键字时自动调用

Java 构造方法有以下特点:

  • 方法名必须与类名相同

  • 可以有 0 个、1 个或多个参数

  • 没有任何返回值,包括 void

  • 默认返回类型就是对象类型本身

  • 只能与 new 运算符结合使用

对象

对象就是对类的实例化

继承 super 重载 重写

基础使用


class 子类 extends 父类

继承

继承后子类可以使用所有父类的适当权限的方法和属性

重载

相同方法名, 不同属性, 得到不同的结果

方法返回值类型、修饰符等和重载无关, 也就是说, 这些不能在重载时被修改.

重写

既子类重新实现父类的某个方法(除了方法体内可以修改, 其他需要保持一致)


@Override

目标方法

接口, 多态, 接口回调

  • 接口定义了某个实现的功能的蓝图, 类可以实现接口, 然后重写接口中提到的所有方法

  • 接口内所定义的方法都是抽象方法

  • 接口内可以存在常量, 但不能存在变量

另外, 如果派生类继承的抽象类中实现了某个接口, 那么对于派生类来说, 就是普通的父类方法, 和普通在父类中的具体方法无异, 因为父类中一旦定义实现了接口, 就必须实现接口的具体方法, 另外的, 子类也无需必须实现父类所实现的接口(因为对子类来说那些就是普通的具体方法).

多态

通过不同的对象使用相同的方法,而做出不同的回应.就是多态


//关键字

[接口类型] abstract class 类名{}

一旦定义了抽象类, 就不能单独被实例化了

上转型对象和下转型


public class Example5_4 {

public static void main(String[] args) {

Student mike = new Student("Mike", 12, 55);

System.out.println(mike.getName());

mike.doHomework();

Monitor joy = new Monitor("Joy", 13, 5, "cleaning blackboard");

System.out.println(joy.getName());

joy.doHomework();

joy.onDyty();

Student aStudent = joy;

aStudent.doHomework();// 上转型独享调用的仍然是子类覆盖后的方法(既子类重写的方法)

// aStudent.onDuty();// 上转型对象会丢失子类新增的方法

if(aStudent instanceof Monitor){

((Monitor)aStudent).onDyty();// 上转型对象能够转换成子类的对象, 进而恢复, 既下转型

}

// Monitor aMonitor = mike;// 父类的对象不能够赋值子类的引用

System.out.println();

HavaLesson.study(mike);

HavaLesson.study(joy);

System.out.println("万宇晨 20203101019");

}

}

接口回调


指针回调: 表示一个变量的地址在某一时刻存放在一个 '指针变量' 中,这个 '指针变量' 可以间接操作该变量中存放的数据;

接口回调: 接口回调借用了C语言中'指针回调'的术语, 有 '接口变量'.

1. 接口变量的类型声明的类型必须是接口, 声明后就可以接受实现了该接口的对象的引用

2. 使用该接口变量可以调用所有接口中所描述的方法

3. (其实当 接口变量 在调用被类实现的接口方法时,就是在通知相应的对象调用这个方法)

异常

异常类分两大类型:

  1. Error类代表了编译和系统的错误,不允许捕获

  2. Exception类代表了标准Java库方法所激发的异常。