java基础复习

初识

JDK(开发包)
JRK(运行环境)
解释型语言

数据类型:
基本数据类型:byte short int(默认) long float double(默认) char boolean
引用数据类型:类 接口 数组
在这里插入图片描述
扩展:
BigDecimal 字符扩展(金融)

变量与常量(final)
运算符
算数 赋值 关系 逻辑
位(& | ^ ~ >> << >>>)
条件( ? : )
包机制:
域名倒写,防止命名冲突,package import


流程控制

顺序结构
选择结构: if if-else if-esle if-else swich(jdk7支持了字符串,break default case)
循环结构: while do…while for for-each 注意:一般可记数用for,不可记用while
break & continuce (跳出循环--------终止当次循环)
return (结束方法的运行)


方法

创建:
修饰符 返回值 方法名 (参数一,参数二…){方法体;return f返回值; }

调用:
类名.方法
对象名.方法
方法重载:
1.重载Overload是一个类中多态性的一种表现
2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
方法覆盖:
1.发生在父类与子类之间
2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

重载(Overload)和重写(Override)的区别?
答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

递归:

 public static void main(String[] args) {   //创建主函数int n = 3;                     //求n的阶乘int tmp = fac(n);           //调用函数System.out.println(tmp);   //打印3的阶乘}
public static int fac(int n){if(n==1){               //设立结束条件return 1;          //如果n=1那就返回1}return n*fac(n-1);  //如果n不等于1那就返回n*fac(n-1)继续调用函数直到n=1} 

数组

**Arrays工具类:**操作数组

排序算法:
冒泡排序:


面向对象

对象与类
构造方法
new 对象 (栈存放引用,堆存放具体的对象)
三大特性
封装:属性私有,提供get set方法
继承:子类继承父类所有的非私有方法和属性(extends) this super
多态:父类的引用指向子类的对象(instanceof)

修饰符:
public protected default private static final abstract 在这里插入图片描述

抽象类:

接口:
1、子类实现接口,必须重写其中的方法
2、只有一个方法的接口叫做函数式接口,可以用lambda表达式简化
3、一个类可以实现多个接口

内部类:


异常

Throwable --> Exception -->运行时异常

			   -->Error

try{}
catch()
finally{}
throw 手动抛出异常
throws 方法抛出异常

继承Exception 自定义异常


常用类

Object Math File 包装类 Date类 String类 StringBuffer Stringbuilder(不安全)


集合框架

List:排列有序,可重复

  • ArrayList
    • 底层是数组,查询快(地址连续)、增删慢、线程非安全
    • 初始量为10,每次扩容为1.5倍,扩容后使用copyOf()进行拷贝
    • 使用add方法,首先检查是否越界,是则需要进行扩容处理(调用grow()方法)
    • 使用remove()方法时,先删除该元素,然后拷贝其后面的所有元素,相当于全部前移移位,删除效率低
  • LinkedList
    • 底层是双向链表,查询慢,增删快。 2. 包含大量操作首尾的方法。
    • unlink(x) 完成对元素的删除,删除元素调用 equals 方法其实就是判断元素是否存在链表中,unlink 方法中实现了双向链表中删除元素的操作。
  • vector
    • 线程是安全

Set:排列有序和无须都有,不可重复

  • HashSet集合

    • 底层数据结构是HashMap,因此具有良好的存取和查找性能

    • 允许null,非同步,无索引,无序

  • TreeSet集合

    • A:底层数据结构是红黑树(是一个自平衡的二叉树)

    • B:保证元素的排序方式,不允许null,非同步

  • LinkedHashSet集合

    • A:底层数据结构由HashMap和双向链表组成。

    • B:允许null

在这里插入图片描述
Map:要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。

HashMap:
JDK1.7以前:数组+链表
JDK1.8 : 数组+链表+红黑树
组长度必须为2的幂(16,32,128…),默认为16。在JDK1.8之后链表长度大于8时转化为红黑树。

与HashTable的区别
1、HashMap线程不安全。HashTable线程安全,但是效率较低。
2、HashMap中key只能有一个null,value可以多个为null。HashTable不允许键或值为null。
3、HashMap底层数组长度必须为2的幂(16,32,128…),默认为16。HashTable底层数组长度可以为任意值,导致hash算法散射不均匀,容易造成hash冲突,默认为11。
4、HashMap是底层由数组+链表形成,在JDK1.8之后链表长度大于8时转化为红黑树。HashTable一直都是数组+链表。

泛型<>: 约束作用,避免类型转换之间的问题
迭代器: 集合的专用遍历方式(用于删除)

 Iterator<String> iterator = collection.iterator();while (iterator.hasNext()){String next = iterator.next();  //取出当前的值,向下面移动一位System.out.println(next);}

IO流

在这里插入图片描述

字节流
字符流
处理流
File类

多线程

进程和线程
线程的创建:
Thread
Runnable
Callable
静态代理
动态代理
Lambda表达式:简化代码

反射

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。(动态获取类的过程)

++ 。–

i++ :先运算,后加一
++i :先加一,后运算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于解决各类由于电脑名为中文导致的各类问题

解决方法&#xff1a;Anoconda安装笔记win10 更改中文用户名为英文_anaconda prompt运行索引含汉字,怎么改成英文-CSDN博客

从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用

一、背景需求分析 近日&#xff0c;我国多省市遭遇连日暴雨&#xff0c;导致水库、湖泊、河道等水域水位暴涨&#xff0c;城市内涝频发。随着夏季汛期的到来&#xff0c;降雨天气频繁&#xff0c;水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害&#xff0c;采…

MVC分页

public ActionResult Index(int ? page){IPagedList<EF.ACCOUNT> userPagedList;using (EF.eMISENT content new EF.eMISENT()){第几页int pageNumber page ?? 1;每页数据条数&#xff0c;这个可以放在配置文件中int pageSize 10;//var infoslist.C660List.OrderBy(…

【C语言】字符常量详解

目录 C语言字符常量 (Character Constants)1. 概念与定义1.1 字符常量的表示1.2 字符常量的存储 2. 特殊字符常量2.1 常见的特殊字符常量2.2 转义序列 3. 字符常量的使用3.1 条件判断输出结果&#xff1a; 3.2 字符运算输出结果&#xff1a; 3.3 数组与字符串处理输出结果&…

7.11 cf div3 A

Problem - A - Codeforces 题目概述 求最少问题数量&#xff0c;以确保能举办m轮比赛&#xff0c;每轮包含一个难度级别为 ‘A’ 到 ‘G’ 的问题。 ac代码 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) …

最新 Kubernetes 集群部署 + flannel 网络插件(保姆级教程,最新 K8S 1.28.2 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…

Nodejs 第八十六章(部署pm2)

Node.js如何部署? 如果要部署Nodejs项目&#xff0c;第一点肯定是需要有台服务器&#xff0c;第二点需要一个部署工具这里使用pm2 PM2 PM2 是一个非常流行的 Node.js 进程管理工具&#xff0c;用于在生产环境中运行和监控 Node.js 应用程序。它提供了多种功能&#xff0c;帮…

自建邮局服务器相比云邮箱有哪些优势特性?

自建邮局服务器如何配置&#xff1f;搭建自建邮局服务器的技术&#xff1f; 尽管云邮箱服务提供了便捷和低成本的解决方案&#xff0c;自建邮局服务器依然具有许多独特的优势和特性&#xff0c;吸引了众多企业和组织。AokSend将深入探讨自建邮局服务器相比云邮箱的主要优势。 …

结合C++智能指针聊聊观察者模式

0. 问题 问题是这样&#xff0c;三个类A,B,C。AC都有指针指向同一个B类对象&#xff0c;C类可以回收了刚刚生成的B类对象的内存&#xff0c;A类应该对这个指针进行如何操作&#xff0c;才能确保使用该指针时不会产生野指针问题发生未定义结果&#xff1f; 这是前两天面试的时候…

BigMarket-基础层持久化数据库

需求 工程对接数据库 图例 结构说明 app-主要用于启动&#xff0c;没有业务逻辑 domain-业务逻辑&#xff0c;如积分的兑换&#xff0c;抽奖&#xff0c; infrastructure-基础层&#xff0c;技术支持&#xff0c;数据服务数据持久化&#xff1a;MySQL&#xff0c;redis&am…

「51媒体」能否提供一份成功邀约媒体的技巧?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 成功邀约媒体的技巧涉及多个方面&#xff0c;包括了解媒体…

hyperworks软件许可优化解决方案

Hyperworks软件介绍 Altair 仿真驱动设计改变了产品开发&#xff0c;使工程师能够减少设计迭代和原型测试。提升科学计算能力扩大了应用分析的机会&#xff0c;使大型设计研究能够在限定的项目时间完成。现在&#xff0c;人工智能在工程领域的应用再次改变了产品开发。基于物理…

从源码到上线:互联网医院系统与医疗陪诊APP的开发全程解析

今天&#xff0c;笔者将详细解析从源码到上线的整个开发过程&#xff0c;帮助读者了解如何构建一个功能完善、用户体验良好的互联网医院系统与医疗陪诊APP。 一、项目启动与需求分析 1、需求分析 对于互联网医院系统&#xff0c;需求通常包括预约挂号、在线问诊、电子处方、…

Figma中文网?比Figma更懂你的神秘网站!

Figma奠定了在线UI设计工具的基本形式&#xff0c;许多国内设计师都在使用Figma。在本文中&#xff0c;我们将解密国内大型设计师使用的Figma灵魂合作伙伴&#xff0c;被称为Figma中文网络的即时设计资源社区。Figma中文网络UI设计工具的魅力是什么&#xff1f;让我们一起看看吧…

Java版Flink使用指南——将消息写入到RabbitMQ的队列中

大纲 新建工程新增依赖 编码自动产生数据写入RabbitMQ 测试工程代码 在 《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们介绍了如何使用Java在Flink中读取RabbitMQ中的数据&#xff0c;并将其写入日志中。本文将通过代码产生一些数据&#xf…

JAVA PaddleOCR 部署

因为需要python环境&#xff0c;不熟悉py的人很痛苦&#xff0c;就和nodejs一样&#xff0c;报什么多&#xff0c;也不知道怎么解决,我也是研究了好几天&#xff0c;才部署成功了基于cpu模式的服务&#xff0c;看官方文档也没看明白什么&#xff0c;大家都在吐槽百度的文档&…

stm32实现软件spi

Driver_SPI.c #include "Driver_SPI.h"void Driver_SPI_Init(void) {/* 1. 开启GPIO时钟 PA和PC*/RCC->APB2ENR | (RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPAEN);/* 2. 设置引脚的工作模式 *//* 2.1 cs: 推挽输出 PC13* CNF00 MODE11 */GPIOC->CRH & ~GPIO…

N32G45XVL-STB之lvgl的应用实例

目录 概述 1 硬件介绍 1.1 ST7796-LCD 1.2 MCU IO与LCD PIN对应关系 1.3 MCU IO与Touch PIN对应关系 2 N32G45x移植 LVGL 2.1 移植步骤 2.2 注意点 2.2.1 UI刷新函数 2.2.2 主函数中调用 3 LVGL的应用Demo 3.1 功能描述 3.2 代码实现 3.3 测试 N32G45XVL-STB之lv…

基于RK3588的NPU案例分享!6T是真的强!

RK3588 NPU简介 作为瑞芯微新一代旗舰工业处理器&#xff0c;RK3588 NPU性能可谓十分强大&#xff0c;6TOPS设计能够实现高效的神经网络推理计算。这使得RK3588在图像识别、语音识别、自然语言处理等人工智能领域有着极高的性能表现。 此外&#xff0c;RK3588的NPU还支持多种…

JDK-CompletableFuture

归档 GitHub: JDK-CompletableFuture 使用示例 https://github.com/zengxf/small-frame-demo/blob/master/jdk-demo/simple-demo/src/main/java/test/new_features/jdk1_8/juc/TestCompletableFuture.java基础方法使用测试&#xff1a;testThenApply2() JDK 版本 openjdk …