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.langjava.iojava.utiljava.awtjavax.swingjava.sql等
JAVA虚拟机负责解析和执行
java程序运行在各个操作系统平台上
JAVA环境变量配置
创建
JAVA_HOME, 值为JDK的安装根目录在 PATH中 添加
JAVA_HOME/bin目录, 使得系统可以直接访问JDK中的可执行工具在 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运行
数据类型

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

String 是一种常见的引用数据类型,用来表示字符串。在程序开发中,很多操作都要使用字符串来完成,例如系统中的用户名、密码、电子邮箱等。
数据类型的初始值
整形 -> 0
实型 -> 0.0f 或0.0d
字符型 '\u0000'
类对象(引用类型) null
逻辑运算符

运算符
+,-,*,/,% 基本和C语言类似
"+"除了可以作为双目运算符来使用,还可以连接字符串
若使用"+"时,两方类型有一个是字符串(String)类型,就会自动将另一方转换成字符串类型。
常用函数
基础函数
equals
public boolean equals(Object o);// 完全相等 true 否则 false
print和println的区别
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}
}
类
什么是类?
具有相同特性(属性)和行为(方法)的对象的抽象就是类。
属性: 对象有什么
方法: 对象干什么
如何定义一个基础类?
定义类名
编写类的属性
编写类的方法
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. (其实当 接口变量 在调用被类实现的接口方法时,就是在通知相应的对象调用这个方法)
异常
异常类分两大类型:
Error类代表了编译和系统的错误,不允许捕获
Exception类代表了标准Java库方法所激发的异常。