DAY1-3
第一章 JAVA概述
计算机基础知识
计算机
计算机硬件
计算机软件
软件开发
计算机语言
人机交互方式
键盘功能键及快捷键介绍
常用的DOS命令
JAVA语言概述
Java语言发展史
Java语言平台版本
Java语言特点: 跨平台性(JVM)
JRE与JDK
- JRE(java运行环境)
JVM + 核心类库
- JDK(java开发工具包)
JRE + java开发工具(编译工具javac.exe,打包工具jar.exe)
JDK下载与安装
HelloWorld案例
class HelloWorld { public static void main(String [] args) { System.out.println(“Hello World”); } }
程序解析
- javac 源文件名.java
- java HelloWorld
运行与工作原理
在这里插入图片描述
常见错误
环境变量配置
path环境变量配置的作用
path环境变量配置方式
classpath环境变量配置方式
第二章 JAVA基础语法[上]
关键字
标识符
注释
//; /* */; / */
常量、进制和进制转换
- 字符串常量, 整数常量, 小数常量,字符常量, 布尔常量, 空常量
- 二进制(0b…),八进制(0…),十进制(默认),十六进制(0x…)
- 原码、反码和补码
原码: 最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
正数:原码,反码,补码相同
负数:原码(最高位为1),反码(除符号位外,逐位取反),补码(反码+1)
变量
使用变量前需进行初始化
数据类型和类型转换
byte(1字节),short(2字节),int(4字节),long(8字节);
float(4字节),double(8字节);
char(2字节),boolean(1字节)
byte b1=3,b2=4,b; b=b1+b2; //编译失败:因为b1和b2是变量,默认使用int类型进行存储 b=3+4; //会检查和是否超出byte类型的范围。如果没有可以赋值。
运算符
算术运算符
- +(正号),-(负号),+,-,*,/,%,(前)++,(后)++,(前)–,(后)–,+(字符串相加)
赋值运算符
- = , +=, -=, *=, /=, %=
比较运算符
- ==, !=, >, < , >=, <=, instanceof(检查是否是类的对象)
逻辑运算符
- &, |, ^, !, &&, ||
- 单&和单|时,无论左边真或假,右边都进行运算;双&在左边为假时,右边不参与运算,返回false;双|在左边为真时,右边不参与运算,返回true。
- 一般建议使用&&, ||
位运算符(直接对二进制进行运算)
- <<, >>, >>>(无符号右移), &, |, ^, ~(反码)
三目运算符
// z: max(x, y) int x=3,y=4,z; z = (x>y)?x:y;
语句
顺序结构;选择结构:if, switch;循环结构: for,while, do-while
DAY4-5
第三章Java基础语法[下]
方法
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; return 返回值; }
重载:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
数组
定义:
- 格式1:数据类型[] 数组名;
- 格式2:数据类型 数组名[];
初始化:使用前必须先初始化
- 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。eg. int[] arr = new int[3];
- 静态初始化:初始化时指定每个数组素的初始值,由系统决定数组长度。eg. int[] arr = new int[]{1,2,3}; or int[] arr = {1,2,3};
- 格式1 eg. int[][] arr = new int[3][2];
- 格式2 eg. int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1]; - 格式3 eg. int[][] arr = { {1,2,3},{4,6},{6}};
DAY6-7
第四章面向对象[上]
面向对象思想
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
类与对象及其使用
- 如何使用
创建对象:
1 类名 对象名 = new 类名();
2 对象名.成员变量
3 对象名.成员方法
对象的内存图
成员变量和局部变量的区别
- 在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上 - 在内存中的位置不同
成员变量 堆内存
局部变量 栈内存 - 生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 - 初始化值不同
成员变量 有默认的初始化值
局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。
匿名对象
封装(private)
- private最常见的应用:
把成员变量用private修饰
提供对应的getXxx()/setXxx()方法 - 被private修饰的成员只在本类中才能访问
- private仅仅是封装的一种体现,类和方法其实也是封装体
this关键字
this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
局部变量隐藏成员变量时,使用this
构造方法
- 类
- 成员变量
- 构造方法
- 无参构造方法
- 带参构造方法
- 成员方法
- getXxx()
- setXxx()
- 给成员变量赋值的方式
- 无参构造方法+setXxx()
- 带参构造方法
static关键字
- 可以修饰成员变量和成员方法
- static关键字特点
随着类的加载而加载
优先于对象存在
被类的所有对象共享(判断是否使用静态关键字) - static关键字注意事项
在静态方法中没有this关键字
静态方法只能访问静态的成员变量和静态的成员方法
制作帮助文档
DAY8-10
第五章面向对象[下]
继承
- 通过extends关键字可以实现类与类的继承
class 子类名 extends 父类名 {} - 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
- 子类只能继承父类所有非私有的成员(成员方法和成员变量)
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
- super:代表父类存储空间的标识 (可以理解为父类引用)
- 静态随着类的加载而加载。
- 执行流程:静态代码块 – 构造代码块 – 构造方法
- 只要有子父关系,肯定先初始化父亲的数据,然后初始化子类的数据。
- 方法重写:父类中私有方法不能被重写
- 方法重写overload 和 方法重载override区别
- final关键字
修饰类,类不能被继承
修饰变量,变量就变成了常量,只能被赋值一次
修饰方法,方法不能被重写
多态
成员访问特点
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边
抽象类
一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
abstract class 类名 {}
public abstract void eat();
抽象类不能实例化,由具体的子类实例化。
抽象类的子类,要么是抽象类,要么重写抽象类中的所有抽象方法
接口
interface 接口名 {}
class 类名 implements 接口名 {}
接口不能实例化,具体的子类实例化。
接口的子类,要么是抽象类,要么重写接口中的所有抽象方法
抽象类和接口的区别
- 成员区别
抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
接口 常量;抽象方法 - 关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承 - 设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口 被实现体现的是:”like a”的关系。扩展功能
包和导包
权限修饰符
public protected 默认 private 同一类中 ✔️ ✔️ ✔️ ✔️ 同一包子类,其他类 ✔️ ✔️ ✔️ 不同包子类 ✔️ ✔️ 不同包其他类 ✔️
内部类
把类定义在其他类的内部
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
DAY11-14
第七章常用类
Object类/Scanner类
- 子类构造方法默认访问父类的无参构造方法
- object类的成员方法
public int hashCode()
public final Class getClass()
public String toString()
public boolean equals(Object obj)
protected void finalize()
protected Object clone() - == 和equals()的区别?
==
基本类型:比较的是基本类型的值是否相同
引用类型:比较的是引用类型的地址值是否相同
equals()
只能比较引用类型,默认比较的是对象的地址值是否相同。
但是,可能被重写,一定要根据实际的情况来看。 - Scanner类的成员方法
hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项。
eg. public int nextInt(); public String nextLine()
String类/StringBuffer类/StringBuilder类
- 构造方法:
public String():创建String对象
public String(byte[] bytes):把字节数组转成字符串。
public String(byte[] bytes,int index,int length):把字节数组中的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串转成字符串 - A:判断功能
boolean equals(Object obj):比较字符串的内容是否相同,严格区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,不考虑大小写
boolean contains(String str):判断是否包含指定的小串
boolean startsWith(String str):判断是否以指定的字符串开头
boolean endsWith(String str):判断是否以指定的字符串结尾
boolean isEmpty():判断字符串的内容是否为空 - B:获取功能
int length():返回字符串的长度。字符的个数。
char charAt(int index):返回字符串中指定位置的字符。
int indexOf(int ch):返回指定字符在字符串中第一次出现的位置
97,‘a’
int indexOf(String str):返回指定字符串在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex):返回指定字符从指定位置开始在字符串中第一次出现的位置
int indexOf(String str,int fromIndex):返回指定字符串从指定位置开始在字符串中第一次出现的位置
String substring(int start):返回从指定位置开始到末尾的子串
String substring(int start,int end):返回从指定位置开始到指定位置结束的子串 - C:转换功能
byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转成字符串
static String valueOf(int i):把int类型的数据转成字符串
把任意类型转换为字符串的方法。
String toLowerCase():把字符串转小写
String toUpperCase():把字符串转大写
String concat(String str):字符串的连接 - D:其他功能
- a:替换功能
String replace(char old,char new)
String replace(String old,String new) - b:去除字符串两空格
String trim() - c:按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
- a:替换功能
数组高级和Arrays类
排序(冒泡排序,选择排序),查找(基本查找,二分查找)
基本类型包装类(Integer,Character)
正则表达式(Pattern,Matcher)
Math类/Random类/System类
BigInteger类/BigDecimal类
Date类/DateFormat类/Calendar类
DAY15-18
第八章API-集合
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
Collection
- Collection接口成员方法
- 添加功能
add(Object obj)
addAll(Collection c) - 移除功能
remove(Object obj)
removeAll(Collection c)
clear() - 判断功能
contains(Object obj)
containsAll(Collection c)
isEmpty() - 获取功能
iterator()
size() - 交集功能
retainAll(Collection c) - 转数组功能
toArray()
Object[] toArray() 把集合转成数组,可以实现集合的遍历
Iterator iterator() 迭代器,集合的专用遍历方式
- 添加功能
- Iterator: 依赖于集合而存在
- Iterator 接口成员方法:boolean hasNext();E next()
List
- 有序的 collection(也称为序列),列表通常允许重复的素。
- List接口成员方法
add(int index,Object obj)
remove(int index)
get(int index)
set(int index,Object obj)
listIterator()
List集合的特有遍历功能:通过size()和get()方法结合即可 - ListIterator 接口的成员方法:boolean hasPrevious();E previous()
- 常见数据结构:
栈,队列,数组,链表,树,哈希表 - ArrayList底层数据结构是数组,查询快,增删慢;线程不安全,效率高
- Vector底层数据结构是数组,查询快,增删慢;线程安全,效率低
- Vector类特有功能
public void addElement(E obj)
public E elementAt(int index)
public Enumeration elements()
- Vector类特有功能
- LinkedList底层数据结构是链表,查询慢,增删快;线程不安全,效率高
- LinkedList类特有功能
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast()
public E removeFirst()及public E removeLast()
- LinkedList类特有功能
泛型
增强for
for(素的数据类型 变量名 : 数组或者Collection集合对象) {
使用变量名即可
}
静态导入
导入到了方法的级别,方法必须是静态的
可变参数
修饰符 返回值类型 方法名(形式参数数据类型… 变量) {}
Set
无序,唯一
- HashSet集合的底层数据结构是哈希表
首先判断对象的哈希值是否相同hashCode()
->如果不同,就直接添加到集合;如果相同,就继续执行equals()进行比较
->如果返回false,就直接添加到集合;如果返回true,说明素重复,不添加。 - LinkedHashSet底层数据结构是哈希表和链表。哈希表保证素的唯一性,链表保证素的有序。(存储顺序和取出顺序一致)
- TreeSet底层数据结构是红黑树,平衡二叉树。
Map
- Map和Collection的区别?
Map双列集合,由键值对组成;键唯一,值可以重复;数据结构针对键有效;
Collection单列集合,有单个素组成;Set唯一,List可重复;数据结构针对素有效。 - Map接口成员方法
- 添加功能
put - 移除功能
remove
clear - 判断功能
containsKey,containsValue
isEmpty - 获取功能
size
get
keySet
values
entrySet
- 添加功能
- HashMap
- LinkedHashMap
键有序,唯一 - TreeMap
Collections
- Collection和Collections的区别
Collection是单例集合的顶层接口,定义了单例集合的共性功能;
Collections是针对集合进行操作的工具类 - Collections常见功能:排序,二分查找,最大值,反转,随机置换
DAY19-22
第九章API-IO
异常
- Throwable
- Error
- Exception
- RuntimeException
- 非RuntimeException(编译时异常)
- 处理方案
try…catch…finally
throws - throws和throw的区别?
throws:方法声明上,后面跟的是类名,用逗号隔开,可以跟多个。表示可能有异常
throw: 方法体中,后面跟的是对象名,只能跟一个。表示有一个异常产生
File
- File的构造方法
File file = new File("d:\\demo\\a.txt"); File file = new File("d:\\demo","a.txt"); File file = new File("d:\\demo"); File file2 = new File(file,"a.txt");
- File的成员方法
- 创建功能
CreateNewFile()
mkdir()
mkdirs() - 删除功能
delete() - 重命名功能
renameTo() - 判断功能
isDirectory()
isFile()
exists()
isHidden()
canWrite()
canRead() - 基本获取功能
get三个
lastModifiedTime
length - 高级获取功能
String[] filename = file.list()
File[] fileArray = file.listFiles() - 文件名称过滤器
- 创建功能
递归
字节流
- 字节流写数据: OutputStream
- FileOutputStream
- 创建字节输出流对象 - > 调用写数据功能 - > 释放资源
FileOutputStream fos = new FileOutputStream("fos.txt"); fos.write("helloworld".getBytes()); fos.close();
- 字节流读取数据:InputStream
- FileInputStream
- 创建字节输入流对象 - > 调用读数据功能 - > 释放资源
FileInputStream fis = new FileInputStream("fis.txt"); //方式1:一次读取一个字节 int by = 0; while((by=fis.read())!=-1) { System.out.print((char)by); } //方法2:一次读取一个字节数组,效率更高 byte[] bys = new byte[1024]; int len = 0; while((len=fis.read(bys))!=-1) { System.out.print(new String(bys,0,len)); } fis.close();
- 字节缓冲流
BufferedInputStream
BufferedOutputStream
转换流
- 转换流本身是一个字符流:字符流 = 字节流 + 编码表
- 编码表:字符和对应数据组成的一张表
- 常见编码表:ASCII,UTF-8
- FileWriter
- FileReader
字符流
- OutputStreamWriter字符输出流
public void write(int c)
public void write(char[] cbuf)
public void write(char[] cbuf,int off,int len)
public void write(String str)
public void write(String str,int off,int len) - InputStreamReader字符输入流
public int read()
public int read(char[] cbuf) - 字符缓冲流
BufferedWriter - void newLine()
BufferedReader - String readLine()
其他流
- 操作基本数据类型的流
DataInputStream
DataOutputStream - 内存操作流
操作字节数组
ByteArrayInputStream
ByteArrayOutputStream
操作字符数组
CharArrayReader
CharArrayWrite
操作字符串
StringReader
StringWriter - 打印流
- 标准输入输出流
System.in的类型是InputStream.
System.out的类型是PrintStream是OutputStream的子类FilterOutputStream 的子类. - 随机访问流
RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。支持对随机访问文件的读取和写入 - 合并流
SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该流也被称为合并流 - 序列化流
序列化流ObjectOutputStream
反序列化流ObjectInputStream - Properties集合
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/4714.html