当前位置 博文首页 > xinyi_java的博客:##八万字##计算机【Java】基础知识总结

    xinyi_java的博客:##八万字##计算机【Java】基础知识总结

    作者:[db:作者] 时间:2021-09-04 15:43

    目录

    计算机

    硬件

    运算器

    控制器

    存储器

    输入设备

    输出设备

    软件

    系统软件

    应用软件

    和计算机的交互方式

    触屏操作

    语言识别

    人脸识别

    指纹识别

    图形化界面

    命令行交互

    和计算机交互的语言

    机器语言

    高级语言

    Java语言概述

    Java语言特点

    java环境的搭建

    注释

    关键字

    标识符

    常量

    变量

    数据类型

    字符类

    字符串类

    进制

    运算符

    键盘录入

    获取随机数

    流程控制

    方法

    数组

    面向对象思想

    类和对象

    构造方法

    代码块

    final关键字

    内部类

    权限修饰符

    抽象类

    接口

    jar包

    API

    StringBuilder

    基本类的包装类

    自动装箱、拆箱

    正则表达式

    常用类型

    异常

    可变参数

    集合

    数据结构

    泛型

    Collections工具类

    File类

    递归

    IO流

    文件的拷贝

    高效流

    close和flush的区别

    Properties和IO流相结合

    IO流总结

    多线程

    网络编程

    虚拟机类加载机制

    反射

    Java8接口新特性

    Lambda表达式

    函数式接口

    Optional类型

    注解

    Eclipse快捷键

    自定义快捷键的生成

    数据库的概述

    数据库DB

    数据库管理系统DBMS

    Sql语句分类


    计算机

    可以进行运算的机器 电子计算机

    硬件

    硬件主要是表示一些可以看得见摸得着的一些设备

    运算器

    可以进行一些数据的计算和逻辑的计算

    • cpu

      cpu=运算器+控制器

    控制器

    用来控制数据或者指令的一个硬件

    存储器

    存储器等于运行内存+存储内存

    输入设备

    鼠标键盘

    什么是输入?什么是输出? 数据从其它设备进入运行内存; 数据从运行内存到其它设备就是输出

    跟存储内存无关

    输出设备

    显示器 打印机

    软件

    软件就是表示看不见摸不着的一些功能

    系统软件

    使用的各种操作系统 Windows mac Linux

    应用软件

    生活中的各种程序app 管理系统 京东 淘宝 qq 微信

    和计算机的交互方式

    触屏操作

    语言识别

    人脸识别

    指纹识别

    图形化界面

    命令行交互

    补充 tab 补全名称 上箭头或者下箭头 可以选择上一条命令或者下一条命令 cls清屏 exit 关闭命令提示符窗口

    • 简单的命令

      切换盘符-------盘符名: 查看目录-------dir 创建文件夹-----mkdir 切换文件夹-----cd 要切换的文件夹名 cd .表示本级目录 cd ..表示上一级目录 cd ../../上两级目录 文件夹重命名------move 原文件名称 新文件夹名称 文件夹剪切------move 源文件夹名称 要剪切的路径(这个路径要在当前目录下存在,不存在不能剪切) 删除文件夹------rd 文件夹名称(只可以删除空文件夹)(rd /s/q 文件夹名称)可以删除非空文件夹或者强制删除文件夹 创建文件------echo > 要创建的文件夹名称 存储信息------echo 要输入的信息 > 文件夹名称(替换输入) echo 要输入的信息 >> 文件名称(追加输入) 查看文件信息------type 文件名称 文件重命名------move 原文件名称 新文件名称 复制文件------copy 原文件名称 新指定的位置 设置隐藏文件------attrib 要设置的文件名称 +h/-h 设置只读文件------attrib 文件名 +r/-r 删除文件名称------del 文件名称

    和计算机交互的语言

    和计算机交互的语言称之为编程语言

    机器语言

    机器语言全是由0和1组成的语言,也是计算机可以是别的唯一语言 数据:可以通过各种阿拉伯数字来表示,再转成二进制,都是0或者1 指令:对应的有一个指令集,每一个指令都可以通过一个数据来表示,也可以转成二进制,都是0或者1

    高级语言

    高级语言:将各种数据和指令,也可以通过一个个英语单词来表示,每个英语单词即可以表示一些数据,也可以表示一些指令,通过特定的语法讲这些英语单词联系起来,就形成一套语言,写代码就和说英语一样

    java C语言 c# PY PHP

    Java语言概述

    起源: 二十世纪九十年代 1990 sun公司接手一个关于嵌入式的项目 Green->C语言->oak(橡树)->java java语言之父:詹姆斯.高斯林

    Java语言特点

    • 开源

      开放源代码 免费

    • 面向对象

      核心的编程思想

    • 编译性

      开发好的java代码需要先编译为计算机可以识别的一个文件,才可以运行

    • 动态性

      在运行阶段可以根据数据或者内容的不同,来执行不同的结果

    • 跨平台性

      开发编译好的Java文件,可以在不同的系统上运行

    java环境的搭建

    下载jdk(Oracle官网 www.oracle.com) 注意事项: 不建议安装到c盘 安装路径中尽量不要有空格以及其它字符 安装jdk之后,不需要再安装jre,jdk中集成了jre运行环境 验证:在jdk的bin目录下,打开命令提示符窗口,在窗口中输入java -version,出现对应的版本号,表示安装成功

    注释

    对程序进行解释说明的部分

    注释使用的原因: 方便去分析理解代码 可以通过注释对问题的思路进行描述

    写代码尽量都加上注释

    注释的特点: 注释不会被编译器编译 不会被运行器运行

    • 单行注释

      //要说明的内容 特点:只可以注释一行内容 可以嵌套使用

    • 多行注释

      /要说明的内容/ 特点:可以注释多行内容 不可以嵌套使用

    • 文档注释

      /** * * */

    关键字

    概念:被赋予了具有特殊含义的英语单词 注意事项: 全部都是小写 起名的时候不要和关键字重名 有两个保留字 goto const 写法和定义的写法必须一致

    标识符

    自己起的名字就是标识符 标志符 标识符的组成: 英文字母大小写 $ _ 1234567890 规则:不要和关键字重名 数字不能开头

    常量

    概述:在代码运行的过程中,值不会发生改变的值

    • 字面值常量

      直接写出的一个数据 10 20 -100 0

    • 符号常量

      给一个不变的值起一个名字,以后可以通过这个名字来表示这个不变的值 a=10

    变量

    概述:在代码运行过程中,一个名字表示的值可以发生变化

    格式: 数据类型 变量名 = 变量值

    说明: 数据类型:用来表示给变量在内存中分配多大的内存空间

    变量名:给值起一个名字 =: 赋值符号

    变量值: 需要存储或者保存的数据

    使用变量的原因: 在程序中,有一些具有特殊含义的数据可以不断的发生变化,比如年龄,身高,体重,这些可以发生改变的数据。如果通过一个常量来表示不合理

    这些可以发生变化的数据,可以通过一个不变的名字来表示,以后需要变化时,可以修改变量中的数据值

    定义一个变量的过程,其实就是在内存中分配一段空间的过程 给变量赋值的过程,其实就是往空间中存值得过程 使用变量的过程,其实就是获取空间中存储值的过程 改变值的过程,其实就是将空间中的值替换的过程

    变量是有作用域的: 作用域:起作用的范围 在哪一个大括号中定义变量,就只能在哪一个大括号中使用这个变量 变量在同一个作用域中不能重复定义,不能重名 变量必须先赋值后使用,变量定义和赋值可以分为两行去完成 如果需要定义多个相同数据类型的变量,可以在一行定义

    数据类型

    java语言是一个强类型语言,在定义一个变量或者数据时,需要强制的给这个变量指定分配多大的内存空间数据类型就是决定给一个变量分配多大空间的作用

    整数的默认类型 int类型 4字节 随便定一个整数,默认为int类型 如果需要表示一个很大的整数,可以在整数的后面加一个L,不会认为int默认为long

    小数的默认类型: double类型 8字节 随便定义一个小数,默认为double类型 如果需要表示一个单精度的小数,可以在小数的后面加一个大写的F,默认float

    • 基本数据类型

      官方定义的一些关键字,是有限个,用来给基本常量定义空间的含义 基本数据类型中存储的都是数据本身

      • 整数类型

        • byte

          1字节 -128-----127

          -2^7---2^7-1

        • short

          2字节 -2^15----2^15-1 -32768----32767

        • int

          4字节 -2^31----2^31-1 -2147483648----2147483647

        • long

          8字节 -2^63----2^63-1

      • 小数类型

        • float

          4字节 单精度 >8字节的long

        • double

          8字节 双精度 >4字节的float

      • 字符类型

        char 2字节 0----65535

      • 布尔类型

        boolean true/false

    • 引用数据类型

      可以是自己创建的一些类型,是不固定个数的,引用数据类型中存储的不是数据本身,而是数据的地址值

    字符类

    字符常量:使用单引号引起来的单个符号 char

    计算机只可以识别二进制的数字 0和1组成,每一个字符都可以对应一个十进制的整数,将这个十进制的整数,再通过对进制的转换,将十进制转为二进制,计算机可以识别

    每一个字符和每一个整数对应的关系,称为编码表或者字符集

    字符到数字是编码 数字到字符是解码

    • char

    字符串类

    使用双引号引起来的一系列字符 字符串对应的数据类型string 字符串类型不仅可以表示一个变量,也可以和其它类型的数据进行+计算:不是加法运算而是拼接 如果字符串类型和其他类型的数据+,先将其他类型的数据转为字符串类型再拼接

    • String

      • equal(参数)

        比较两个字符串是否一样

      • equalsIgnoreCase(参数)

        忽略大小写比较是否一样

      • isEmpty()

        判断调用者字符串是否为空

      • contains(参数)

        判断调用者字符串是否包含参数字符串

      • startsWith(参数)

        判断是否以参数开头

      • endsWith(参数)

        判断是否以参数结尾

      • substring(int i,int j)

        截取参数中的内容

      • substring(i)

        从指定的位置开始往后截取 位置都从0开始

      • toUpperCase()

        将调用者转为大写

      • toLowerCase()

        将调用者转为小写

    进制

    概念:对信息或者数据进位的一个制度

    转换有一个关系:计算的规则 系数*基数的权次幂再相加 说明 系数:各个位上的值是多少系数就是多少 基数:当前这个书是几进制,基数就是几 权:用来表示每位上的数字的一个重要程度的标志 从右往左依次递增,最小权0,从0往左依次递增

    二进制转十进制 1100: 02^0+02^1+12^2+12^3

    八进制转十进制 35: 58^0+38^1

    十六进制转十进制 af: 1516^0 +1016^1

    十进制转为其他进制 1计算的规则: 除基倒取余 2说明: 除:除法运算 基:要转为几进制,基就是几 取余:两个数相除的余数,反过来取,合在一起

    十进制倒二进制 11 1100 0 l60_ 0 l30_ 1 l15 1 l7 1 l3_ 1 l1 0

    • 十进制

      十进制:0-9 逢十进一

    • 二进制

      二进制:0和1 逢二进一

    • 八进制

      八进制:0-7 逢八进一

    • 十六进制

      十六进制:0-9abcdef 逢f(16)进一

    运算符

    概述:对数据做各种操作或者逻辑运算的符号

    • 算术运算符

      + 相加运算 字符串的拼接 表示正数 - 减法运算 表示负数

      • 乘法运算 / 除法运算 如果两个数都是整数那么结果也是一个整数,求两个数的商 如果有一个是小数,那么结果也是一个小数 %取余运算符 取模运算符 取两个数相除的余数 结果的正负只和前面那个数的正负有关,跟后面那个数的正负无关

    • 自增自减运算符

      分类++ -- 注意事项: ++和--就是表示变量本身加1或者减1 如果某个变量自增或者自减是单独作为一句存在时,++或者--放在变量的后面或者变量的前面没有任何区别,都是自加一或者自减一 如果某个变量自增或者自减不是单独作为一句存在,++或者--放在前面或者后面,计算方式不同: 符号放在变量的后面:先取值,后运算/ 符号放在变量的前面,先运算后取值

    • 赋值运算符

      分类 基础的赋值运算符:= 将右边的赋值给左边 扩展的赋值运算符:+= -+ *= /= %= 先将符号左右两边的值,先进行对应的运算,再赋值给左边

    • 比较运算符

      用来比较数据之间的关系。 比较运算符的结果只有两个: true false 分类 基础的比较运算符:

      < >= <=(都只可以在数值之间比较 只能比较 整数 小数 字符) 扩展的比较运算符: ==(比较两边的数据是否一样) !=比较两边的数据是否不一样 注意事项: 可以在数值之间比较,也可以在字符串之间比较,或者布尔之间比较,但是不能不同类之间比较

    • 逻辑运算符

      1 概念:对表达式做一些逻辑的处理和判断 2 分类:& | ! && || 3 &:逻辑与 如果符号左右两边的表达式结果都为真,运算的结果为真 如果符号左右两边有一个结果为假,结果为假 4 |:逻辑或 如果符号左右两边的表达式结果都为假,运算结果为假 如果符号两边的表达式结果有一个为真,结果就为真 5 !:逻辑非 表达式的结果为真 取假 表达式的结果为假 取真 6 &&:逻辑短路与 左右两边的表达式结果为真,整个的结果为真否则为假 特点: 如果符号左边的表达式结果为假,右边的表达式不会执行,直接取假 如果符号左边的表达式结果为真,右边的表达式会执行,根据后面的取值 7 逻辑短路或 左右两边的表达式结果都为假,整个的结果都为假否则为真 特点: 如果符号左边的表达式结果为真,右边的表达式就不会执行,直接取真 如果符号左边的表达式结果为假,右边的表达式会执行,根据后面的取值

    • 位移运算符

      1概念:通过移动位数来表示数据的变化 2分类: << >> >>> 3 <:左移运算符 某个数据左移一位,扩大2倍 4>:右移运算符 某个数据右移一位,缩小2倍 即可以操作正数,也可以操作负数 5 >>>: 无符号右移运算 向右移动一位,缩小2倍 只可以操作正数,不可以操作负数

    • 三元运算符

      三元运算符,三目运算符 元:可以操作的数据或者表达式 三元运算符:可以操作三个数据或者表达式的符号 格式:表达式1?表达式2:表达式3; 逻辑 先执行表达式1,结果要么为真,要么为假 如果表达式1结果为真,执行表达式2,将表达式2的结果作为整个表达式的结果 如果表达式1结果为假,跳过表达式2,执行表达式3,将表达式3的结果作为整个表达式的结果 6 注意事项: 表达式1必须是一个布尔表达式,运算的结果为真,或者为假的表达式 表达式2和表达式3,只要有一个结果就行

    键盘录入

    在程序启动之后,可以让用户给变量输入一些数据,用户录入的结果是几,在代码中就使用几 步骤 导包:import java.util.Scanner; 创建对象:Scanner sc = new Scanner(System.in); 使用键盘录入的方法:int x = sc.nextInt(); 使用录入的x值 3.注意事项: 导包必须在类的上面导 nextInt方法表示需要录入一个数据,如果不录入就一直等待 录入之后的结果,可以做任何操作

    获取随机数

    在程序启动之后,可以获取一个数字 步骤 导包:import java.util.Random; 创建对象:Random r = new Random(); 调用方法获取值:int x = r.nextInt(); 使用获取的随机数x 3.注意事项; 如果没有指定的范围,默认的范围是int类型的范围 想要指定一个范围,在nextInt方法的括号中写入一个指定的数字k,范围就是0-k -1 方法的参数中只可以传递一个正数,不可以传递负数,如果想要表示负的范围,只能通过对应的运算来控制

    流程控制

    流程:在程序中用来表示代码执行的顺序 流程控制:控制代码执行的顺序就是流程控制

    • 顺序结构

      顺序结构:代码从上往下,从左往右依次执行(也是代码默认的执行顺序)

    • 分支结构

      分支结构:在代码执行的时候,可能碰到某种情况,情况的结果不同,可能执行不同的分支(代码写的多,执行的少)

      • if语句

        1 if语句的第一种格式: if(条件表达式){ 语句体; } 2:执行流程 先执行条件表达式,结果要么为真,要么为假 如果结果为真,执行语句体 如果结果为假,不执行语句体 执行后面的其它代码

        2 if语句的第二种格式 if(){ 语句体1; }else{ 语句体2; } 执行流程 先计算条件表达式的值,要么为真,要么为假 如果结果为真,执行语句体1 如果结果为假,执行语句体2

        3if语句的第三种格式 if(条件表达式1){ 语句体1 }else if(条件表达式2){ 语句体2 }else if(条件表达式3){ 语句体3 } ...

        else{ 语句体n; }

        执行流程: 先执行条件表达式1 如果表达式1的结果为真,执行语句体1,直接结束if语句 如果表达式1的结果为假,判断条件表达式2 如果表达式2的结果为假,执行语句体2,直接结束if语句 如果表达式2的结果为假,往后继续判断条件表达式 如果后续的表达式结果为真,就执行对应的语句体,执行之后,结束if语句 如果表达式都为假,就执行else语句体n

      • if语句和switch语句的区别

        if语句相对比较强大,可以对任何判断使用 switch语句做一些区间的判断比较麻烦,但是做一些离散型的匹配相对简单 如果使用if语句做一些离散的匹配,效率太低

      • switch语句

        switch语句格式 switch(表达式){ case 常量1: 语句体1; case 常量1: 语句体1; break; ... default: 语句体n;

        }

        执行流程: 先执行表达式,获取表达式的值 判断获取的值,和常量1是否一样 如果一样执行语句体1,执行break,结束整个switch语句 如果获取的值和常量1不相等,将值和常量2判断是否一样 如果值和常量2相等,就执行语句体2,执行break,结束整个switch语句 如果值和常量2不相等,继续往后匹配其它常量,有一样的就执行对应的语句体,执行break结束 如果匹配没有一个相等的,就执行语句体n;

        switch语句注意事项 表达式的结果必须是以下几类:byte short int long string 枚举类型(enum) case后面只可以定义常量,不可以定义变量 break表示中断,执行break就直接结束整个switch语句,如果不添加break,直接执行后面的内容,发生case穿透 default语句表示默认的情况,可以加也可以不加:::如果加,至少能执行一句;如果不加,可能一句执行不到 default语句可以放在switch语句的前面,后面或者中间,不管放在什么位置,都是最后去匹配,如果放在前面或者中间的话,需要在语句体的后面加上break,防止发生穿透

    • 循环结构

      如果某些代码需要反复的执行,可以使用循环结构的格式,来完成代码的简化

      • for循环

        格式 for(初始化语句 ; 条件表达式 ; 初始化变量的变化){ 循环体语句; }

        说明: 初始化语句:一般声明一个变量用来记录从几开始,循环了多少次 条件表达式:循环何时停止何时继续,通过条件表达式来控制 初始化变量的变化:让初始化变量进行变化 循环体语句:哪些代码需要反复执行,这段代码就是循环体语句

        for循环注意事项 for循环后面不要加分号,一旦加上分号就不能控制循环体语句 循环体语句可以是任意操作 条件表达式必须是一个布尔表达式,必须获取一个真或者假 初始化变量的变化,可以是增加,可以是减少,但是一定要朝着结束循环的方向变化 如果循环体语句只有一句,可以省略大括号,如果有多久,也可以省略大括号,但是只执行第一句

      • while循环

        1格式 初始化变量; while(条件表达式){ 循环体语句; 初始化变量的变化; }

      • do...while循环

        1格式: 初始化变量; do{ 循环体语句; 初始化变量的变化; }while(条件表达式);

      • 死循环

        1 概述:循环一直继续,无法停止 2 分类: for格式的死循环 for( ; ; ){ 循环体语句; }

        while格式的死循环
        while(ture){
            循环体语句;

        }

        3 注意事项 死循环的后面不能写任何其他语句,因为死循环无法停止,后面的语句无法执行,编译报错 一般使用while的死循环

        4 为什么是用死循环 当编程的时候不知道什么时候要停止,没有一个结束的标志时,可以使用死循环,当需要停止的时候,可以用跳转语句结束死循环。 服务器的设计中,一般也会用到死循环

      • 跳转语句

        概述:用来结束循环的几个关键字 分类: continue; 结束本次循环,继续下一次循环 break; 结束break所在的那一层循环 return; 结束方法 System.exit(0); 结束虚拟机

      • 嵌套循环

        在一次循环中,循环体语句又是一个循环 格式 for( 初始化语句1; 条件表达式1 ; 初始化变量1的变化){ for( 初始化语句2; 条件表达式2 ; 初始化变量2的变化){ 循环体语句; } }

        特点: 外层循环的条件表达式控制外层循环的次数 内层循环的条件表达式控制内层循环的次数 外层循环循环一次,内层循环循环初始化变量2控制的次数 整个循环结束的标志是-----条件表达式1结果为假

    方法

    1 概述:就是可以完成某一段功能的代码段 2 原因:如果有一些代码以后经常使用,可以将这段代码通过一个大括号括起来,然后再给这个大括号起一个名字,以后想要使用这段代码,只需用这个名字即可

    3 好处 提高代码复用性 可以提高数据的安全性,提高封装性 可以降低代码的复杂程度

    • 方法的定义

      1 格式 修饰符 返回值类型 方法名称 (参数列表){ 方法体; return语句;

      }

      2 说明: 修饰符:统一先写为:public static 返回值类型:方法既然是一个功能,就有可能有数据的产出,这些产出的数据是什么类型,返回值类型就定义为什么类型 方法名称:给代码段起一个名字。小驼峰命名法 参数列表:方法是一个功能,要像让方法完成指定的功能,就有可能要提供一些资源,资源就通过参数列表来定义 方法体:用来完成功能的具体逻辑代码 return语句:将产出的数据进行返回,返回给调用者

    • 方法的调用

      1 格式: 方法名(参数); 2 分类: 直接调用:直接使用方法名即可;当方法没有数据的产出时,只需要调用方法名即可 输出调用:直接将方法的调用写在输出语句中即可;方法有返回值,只需要去展示或者输出一次,就可以使用这种方式 赋值调用:使用一个变量将方法返回的结果进行接收;如果返回值以后会多次反复使用,使用赋值调用

      总结: 不调用就不会执行 如果方法定义中需要一些参数(资源),在调用时就要传递对应的实际参数的数据

    • 方法的注意事项

      1 方法的定义: 方法之间是平级关系,不能嵌套定义 方法可以使用嵌套顶用(可以在一个方法中,使用另一个方法) 方法定义的先后,没有任何区别,先试用哪一个,就先执行哪一个 2 参数列表 形式参数:在定义方法时,带着数据类型的变量,用来接收以后传递的真实数据 实际参数:在使用方法时,传递的一些具体的数据 (1)实际参数和形式参数是对应的 (2)多个形参或者实参,中间使用逗号分隔

      3 return语句 结束方法;返回参数 return后面跟着的数据的数据类型要和返回值类型保持一致 如果方法没有返回数据,将返回值定义为void,也可以将return语句写为return; 或者省略不写 谁调用方法,返回的数据就返回给谁 return语句一定是在最后

    • 栈内存

      栈内存的特点 方法先进后出,后进先出 一次同时只能执行一个方法

    • 方法的重载

      1、Overload 重载 2 、概述:在同一个类中,多个方法的方法名相同,参数列表不同,与返回值类型无关 3、说明: 在同一个类中:重载只能在一个类中发生 方法名相同:多个方法的名字一模一样,大小写也一样 参数列表不同:参数的数量不同,参数的类型不同,参数的类型顺序不同 与返回值无关:判断方法之间是否重载,不要考虑返回值类型

    下一篇:没有了