java基础

继承
一、super 关键字3种用法
1.访问父类的成员变量
2.访问父类的成员方法
3.访问父类构造方法

二、this 的关键字3种用法
1.访问本类中的成员变量
2.在本类的成员方法中,访问另一个成员方法
3.在本类的构造方法中,访问本类的另一个构造方法

三、java继承的三个特点
1.java语言是单继承的
2.java语言是可以多级继承的
3.一个子类的直接父类是唯一的,但一个父类可以有多个子类

抽象类
一、抽象类介绍
1、抽象方法只有方法名,没有方法体
2、抽象方法所在的类必须是抽象类
3、用abstract声明

二、注意事项
1、不能直接用抽象类创建实例
2、抽象类中可以有构造方法
3、有抽象方法的一定是抽象类
4、子类必须重写父类中的所有方法,否则子类必须是抽象类

接口
一、接口概述
1、接口就是多个类的公共规范,是一种引用数据类型(不是基本就是引用)
2、pulbic interface 接口名称{ 接口内容}

二、注意事项
1、接口当中的抽象方法,修饰符必须是两个固定关键字public abstract
2、接口不能直接使用,必须要有一个“实现类”来实现
格式:public class 实现类名称 implments 接口名称{}
3、接口使用必须要实现接口中所有的方法,去掉abstract关键字,加上方法体大括号

三、从java8开始,接口中允许定义默认方法
1、public default 返回值类型 方法名称(参数列表){方法体}

Collection接口
Collection 中的共有方法
public boolean add(E e); //把给定的元素添加到当前集合中
public void clear(); //清空当前集合中的所有元素
public boolean contains(E e); //判断当前集合中是否包含给定的对象
public boolean isEmpty(); //判断当前集合是否为空
pulibc Object[] toArray(); //把集合中的元素添加到数组中

Iterator迭代器( 对集合进行遍历)
public boolean hasNext();//集合中还有没有下一个元素
public boolean Next(); //取出集合中的下一个元素
Iterator是一个接口,需要使用Iterator接口的实现类

迭代器的使用步骤(重点);i
1、使用集合中的额方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2、使用Iterator接口中的Hasnext()方法判断是否有下一个元素
3、使用Iterator接口中的Next()获取集合中的下一个元素
使用while循环
while(hasNext){
next();
}

增强for循环 (底层也是迭代器,使用了for循环的格式,不能增删,只能遍历)
格式
for(数据类型 变量名:集合或者数组名称 ){
sout(变量名)

泛型
泛型概述
泛型是一种未知的数据类型,当我们不知道用什么类型的时候,可以用泛型
泛型也可以是看出是一个变量,用来接收数组
E e :Elment元素
T t: type类型
创建集合对象时就会确定泛型的数据类型
定义含有泛型的方法
格式:
修饰符 <泛型> 返回值类型 方法名 (参数列表 (使用泛型)){
方法体
}
泛型通配符

<?> 不知道返回值是哪种类型

数据结构
栈:先进后出 像弹夹
队列:先进先出 排队安检
数组:查询快(数组的地址是连续的,通过数组的首地址可以找到数组,根据索引快速查找某一个元素)
增删慢(数组长度是固定的,我们想要一增加/删除一个元素,必须创建一个新的数组把原来数组复制过来)
在堆内存中,频繁的创建数组

哈希表
哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来的地址,不是数据实际存储的物理地址)
在object中有一个方法可以获得哈希值
哈希表
两个元素不同,但是哈希值相同
特点是速度快

HashSet集合不允许存储重复元素
哈希表=数组+链表/红黑树
set集合中不重复的原理
set集合在调用add方法的时候,会调用hashcode方法和equals方法,判断元素是否相同
存储自定义类型元素时要重写Hashcode和equals方法
LinkedHashSet
LinkedHashSet特点 哈希表+链表+链表,多了一条链表,记录元素的有序

可变参数
使用前提:当方法参数列表的数据类型已经确定,但是参数的个数不确定,就尅使用可变参数

Map接口
map接口中的方法
public V remove(Object key)//删除指定键的键值对
public V get(Object key)//根据指定的键,在Map集合中获取所对应的值
boolean containsKey(Object key)判断集合中是否包含指定的键,有返回true,没有返回false

Map集合遍历的两种方式
第一种:使用keySet()方法将key放到set集合中,在通过遍历key和Get(key)方法实现键值的遍历
第二种:Map.Entry<K,Y>:在map接口中有一个内部接口Entry
使用Entry<K,Y>.entrySet()把多个Entry对象放到Set集合中,遍历set集合获得每一个Entry对象,使用getKey()获得key,使用getValue()获得value

LinkedHashMap集合
哈希表+链表(记录元素的顺序)有序的集合

Hashtable<K,V>
双列集合 单线程 速度慢
底层是哈希表,是一个单线程的集合,是线程安全的集合 ,速度慢
hashtable 和vector集合一样,在1.2版本之后被更先进的集合取代了
hashtable 的子类properies依然活跃在历史舞台
hashtable 是不允许放空值空键的,会报NullPointerException

异常体系
throwable
Error 错误,不能处理,必须修改代码程序才能继续运行
Exception 编译器(写代码)异常java程序出现的问题
runtimeException 运行时异常,java程序运行时出现的错误
把异常处理掉,程序可以继续运行

throw关键字必须写在方法内部
throw关键字后边new的对象必须是Exception或者Exception的子类
throw关键字抛出指定的异常对象,我们就必须处理这个异常类
编译时异常,我们就必须处理,要么throws 要么try catch
如果参数不合法,我们就必须抛出这个异常,告知方法的调用者,传递的参数有问题

Objects中的 requireNonNull(obj)判断传入的对象是否为空
requireNonNull(obj,str)
throws 抛出异常

  • 作用:当方法内部抛出异常对象,会把异常对象抛出给方法的调用者(自己不处理,交给别人处理)最终交给JVM 中止程序
  • 使用格式:在方法声明时使用
    注意:
  • 1、关键字必须写在方法声明处
  • 2、声明的异常必须是Exception 和Exception的子类
  • 3、如果抛出多个异常对象,那就要声明多个异常对象,若有继承关系,则可直接声明父类异常
    *4、调用一个声明异常的方法,我们就必须处理声明的异常
  • 要么throws声明抛出,交给方法的调用者JVm处理
  • 要么try catch 自己处理异常

throws 是中断程序,不会执行异常后的代码

try…catch
异常处理的第二种方式(自己处理)
try{

  • 可能产生异常的代码
    
  • }catch(定义一个异常的变量,用来接收异常对象){
  • 异常的处理逻辑
    
  • 一般工作中会把异常信息记录到一个日志中
    
  • }catch(异常变量){
  • }
  • 注意:
  • 1、try中可能会抛出多个异常,就可以使用多个catch来处理
  • 2、如果产生了异常,执行catch中的操作,然后继续执行程序
  • 3、如果没有产生异常,那么执行玩try中的操作,跳过catch继续执行程序

throwable类中定义了 三个方法
throwable getMessage() 返回throwable 的详细字符串
throwable toString() 返回此throwable 的简单描述
void printStackTrace() JVM打印异常对象默认调用此方法

final{代码块} 无论是否有异常都会执行,必须和try一起使用,一般用于资源回收

线程类并发和并行
并发:指两个或多个事件在同一时间段内发生
并行:指两个或多个事件在同一时刻发生(同时发生)

创建多线程程序的第一种方式

  • 创建Thread 类的子类,是描述线程的类,想要实现多线程,就要实现thread类
  • 实现步骤:
  • 1、创建一个Thread类的子类
  • 2、子类重run方法,设置线程任务
  • 3、创建Thread子类的的实例
  • 4、调用start()方法

线程等待唤醒机制
多个线程之间的协作
线程锁.wait();休眠
线程锁.notify();唤醒

线程池
是一个容器 集合(List ,Set,Map)
是一种队列的思想
提高速度方便管理

lambda 表达式

  • Lambda 表达式由三部分组成
  • 1、一些参数
  • 2、一个箭头
  • 3、一段代码
  • 格式 (参数列表)->{一些重写方法的代码};
  • 解释说明格式:
  • ()表示方法中的参数,没有就空着,有多个用逗号分开
  • ->传递的意思,把参数传递给方法体
  • {}就是重写接口的抽象方法的方法体

File类

  • java.Io.File
  • 文件和目录路径名的抽象表示
  • java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用file对文件进行操作
  • 我们可以使用File类
  • 创建一个文件/文件夹
  • 删除文件/文件夹
  • 获取文件/文件夹
  • 判断文件/文件夹是否存在
  • 对文件进行遍历
    
  • 获取文件的大小
    
  • File类是与系统无关的类
    
  • 重点记住:
    
  • file:文件
    
  • directory:文件夹/目录
    
  • path:路径
    

File类获取功能的方法

  • public String getAbsolutePath():返回此File的绝对值路径名子字符串

  • public String getPath():将此File转化为路径名字符串

  • public String getName():返回此File 表示的文件或目录名

  • public long length();返回此File文件的长度

  • File 类中判断的方法

  • public boolean exists():此方法返回目录或文件是否真是存在

  • public boolean isDirectory():此File表示的是否为目录

  • public boolean isFile() :此File是否为文件

  • public boolean createNeFile():当且仅当具有该名称的文件不存在 是,创建一个新的文件

  • 注意此方法只能创建文件,不能创建文件夹

  • 创建文件的路径必须存在,否则会报异常

  • public boolean mkdir():创建单级空文件夹

  • public boolean mkdirs():既可以创建单击文件,不能创建文件

  • public boolean delete():从硬盘删除

  • 递归:指当前方法调用自身

  • 直接递归是指自己调用自己

  • 间接递归A方法调用B方法,B方法调用C方法,C方法调用A方法

  • 注意事项:

  •    1、递归一定要有条件限制,不然会造成栈内存溢出
    
  •    2、虽然有条件限定,但是次数不能太多,否则也会发生内存溢出
    
  •    3、构造方法不能用递归
    
  •    递归的使用前提
    
  •      当调用方法的时候,方法的主体不同,但参数不同
    

过滤器
*

  •      我们可以使用过滤器来实现
    
  •      在File类中有两个 和ListFiles重载的方法,方法的参数传递的就是过滤器
    
  •      java.io.FileFilter接口:用来抽象路径名的(File对象)过滤器
    
  •        作用:用来过滤文件
    
  •        抽象方法:用来过滤文件的方法
    
  •        boolean accept(File pathname)测试指定抽象路径名是否包含在某个指定的路径名中
    
  •        参数
    
  •            File pathname:使用LIstFile方法遍历目录得到的每一个文件对象
    
  •            File[] listFiles(FilenameFilter filter)
    
  •            java.io.FilenameFilter接口 实现此类接口的实例可用于过滤器名称
    
  •            作用:用于过滤文件名称
    
  •            抽象方法
    
  •            boolean accept(File dir,String name);
    
  •            参数
    
  •            dir:构造方法中被遍历的目录
    
  •            String name  使用listFiles
    
  •            注意:两个过滤器是没有实现类的,需要我们自己写实现类,重写过滤的accept方法,在方法中自己定义过滤的规则
    

网络编程
就是在一定的协议下,实现两台计算机通讯
网络通信协议
Tcp/ip 传输控制协议/英特网互联协议

UDP:用户数据报协议 ,无连接通信协议
特点 耗资小,通信效率高,偶尔会丢失数据包

Tcp :传输控制协议先建立连接,后传输数据
三次交互
安全,效率不如UDp

ip地址:127.0.1
localhost
端口号:是一个逻辑端口,我们无法直接看到,可以使用一些软件看到
当我们使用网络软件一单打开,那么操作系统会为软件分配一个随机的端口号
或者软件和系统要指定的端口好
端口号是由两个自己组成,取值范围在0-65535
注意
1、 1024之前的端口号我们不能使用
2、 网络软件的端口号不能重复
3、 我们使用Ip地址加端口号就可以保证数据准确无误的发送到对方计算机指定的软件上了
常用端口号:
1、80端口 网络端口
2、mysq l3306
oracle 1521
tomcat 8080

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值