Java基础知识点整理

 

目录

一、Java基础

1、概述

1.1 搭建环境

1.2 开发步骤

1.3 开发工具

1.4 开发案例

1.5 三种注释

2、基础

2.1 关键字

2.2 标识符

2.3 变量

2.4 数据类型

2.5 运算符

2.6 键盘输入

3、流程控制

3.1 分支结构

3.1 循环结构

3.3 结束循环

3.4 常用算法

4、数组

5、排序


 

一、Java基础

1、概述

  • 计算机语言发展

    类型说明
    机器语言0、1
    低级语言汇编语言
    高级语言C/C++、Java、Python、Go……
  • 常用的Dos(Disk Operation System)命令:

    • 切换到其它盘符:d:

    • 切换到其它路径:cd javawrok

    • 返回到上一级目录:cd ..

    • 显示当前目录的内容:dir 文件夹

  • Java的优点

    • 简单容易,使用者多

    • 后台开发,大数据,android

    • 完全面向对象(oop)

    • 跨平台

  • 三个版本

    版本名称适用范围说明
    JavaSEJava标准版本桌面应用 
    JavaEEJava企业版本企业应用 
    JavaMEJava微型版本嵌入式设备已淘汰

1.1 搭建环境

  • 基本介绍:

    开发环境相关说明:

JDK(Java Development Environment) Java开发环境 使用Java语言进行开发时使用,包含JRE;

JRE(Java Runtime Environment) Java运行环境 运行Java程序时使用,包含JVM; 

JVM Java虚拟机 解释class字节文件并执行相应指令 Java实现跨平台的核心

JDK>JRE>JVM

  • 安装JDK的步骤

    1. 下载jdk包,安装到操作系统中,注意路径不能包含中文及空格;

    2. 配置环境变量(Path:路径[path中指定的路径可以在任何目标下使用])

      1. 新建一个环境变量“Java_Home”,变量值为JDK安装路径,如“D:\Development\Java\jdk-10.0.1”

      2. 新建一个环境变量“CLASSPATH”,变量值为固定的“%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; ”

      3. 在环境变量“PATH”下加入值,“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”

    3. 检测是否安装成功的步骤:

      1. “Win+R”下敲入“cmd”

      2. 运行“java -version”、"java"、"javac"

  • JDK的目录结构

    目录说明
    /bin运行文件,包含javac.exe和java.exe
    /libjdk提供的类库
    src.zip源代码(Java是开源的)
    /jre运行环境Jre(运行java程序)

1.2 开发步骤

  • 开发一个java程序的步骤:

    1. 编写:编写一个扩展名是.java的程序源代码

    2. 编译:(javac)将.java的文件编译成字节码 (.class)

    3. 运行:(java)在jre中运行.class文件

1.3 开发工具

  • Editplus

    • 说明:文本编辑器,简单的编辑推荐使用Editplus,熟悉写法(便于应对笔试)

  • Eclipse

    • 说明:过去的主流IDE

    • 安装:绿化版,解压即可使用,建议路径中不要出现中文和空格

    • 使用:

      1. 创建一个工程文件:Project —> Java Project

      2. 在src中创建多个类文件(Class),如果包含主函数,则可直接运行

  • IDEA

    • 说明:取代Eclipse,成为新的主流IDE

    • 安装和破解

    • 使用

1.4 开发案例

第一个程序:Hello World

// Hello是类名,与保存的文件名一致
public class Hello{
    // 程序的入口,从这里开始执行
    public static void main(String[] args){ 
        // 输出不换行,()内可以是数字,变量,"字符串 "
        System.out.print("hello world");
        System.out.print(" ok");
        // 输出并换行,()内若不写参数则只换行
        System.out.println();
        // 循环输出十次
        for(int i=0;i<10;i++){
            System.out.println("你太棒了,我要说十遍.");
        }
    }
}

1.5 三种注释

// 这是单行注释
/*
    多行注释
*/
/**
 * 文档注释,使用javadoc命令可以生成帮助文档
 */

2、基础

2.1 关键字

在java中有特殊用途的字符串就是关键字,都是小写的,不需要立刻记住所有关键字,学到的时侯再记就可以。

2.2 标识符

  • 说明:标识某些东西的符号

  • 规范

    • 不能使用关键字

    • 标识符可以包含的类型:数字、字母、_ 、$、中文(不推荐)

    • 标识符可以开头的类型:字母、_ 、$、中文(不推荐)

    • 标识符尽量有含义,如:age、name、stuid

    • 类名首字母大写;变量名、方法名首字母小写

2.3 变量

  • 说明

    • 内存中的一个命名的区域

    • 每个变量都可以指定存储的数据类型

    • 变量中存储的值是可以改变的

  • 语法

    • 先定义再使用,语法:数据类型 变量名=初值;

    • 使用之前要先赋值

      // 定义并赋初值
      int n = 10;
      // 定义
      int n;
      // 赋初值
      n = 10;
    • 值是可以改变的

      ​int n = 10;
      // 更改值
      n = 20;

       

2.4 数据类型

Java的数据类型可以分为基本类型引用类型

  • 8种基本类型

    分类名称占用空间/字节取值范围
    整型byte1(-2^7 ~ 2^7-1 :-128~127)
     short2(-2^15 ~ 2^15-1:-32768~32767)
     int4默认的整数类型
     long8 
    浮点型float4需要在后面用F标识,否则小数类型默认是double类型
     double8默认的浮点类型
    字符型char 用' '包含,只能表达单个字符或一个中文,可以和int相互转换
    布尔型boolean 只有两个取值,分别是true,false;
    // × -> 编译报错:不兼容的类型: 从int转换到byte可能会有损失
    byte b1 = -129;
    // √
    byte b2 = -128;
    // √
    byte b3 = 127;
    // × -> 编译报错:不兼容的类型: 从int转换到byte可能会有损失
    byte b4 = 128;
    // √
    short s1 = 128;
    // × -> 编译报错:不兼容的类型: 从int转换到byte可能会有损失
    short s2 = 32768;
    // √
    int i = 32768;
    // √
    long l = 32768;
    // √ 从int转为float,涉及到下方的向上转型
    float f1 = 2;
    // × -> 编译报错:不兼容的类型: 从double转换到float可能会有损失
    float f2 = 2.0;
    // √ 用F标识类型
    float f3 = 2.0F;
    // √
    double d1 = 2;
    // √
    double d2 = 2.0;
    // √
    char c1 = '陈';
    // × -> 编译报错:Too many characters in character literal char只支持单字符
    char c2 = 'CYZ';
    // √
    boolean b1 = true;
    // √
    boolean b2 = false;
  • 引用类型

    1. 接口

    2. 数组

  • 转换方式

    • 向上转换:直接转换

      byte —> short —> int —> long —> float —> double

      byte a = 1;
      int b = a;
    • 向下转换:强制转换,可能会丢失精度

      int a = 1;
      byte b = (byte)a;
    • 两整数相操作,结果为数据类型中较大的,最小为int

      long a = 1;
      int b = 2;
      // a+b的类型是long
  • 内存模型:java将内存分成多个区域,常用的有堆和栈

    • 栈:存储基本数据类型和引用名

    • 堆:存储引用类型

2.5 运算符

  • 算术运算符:+、- 、*、/、%、++(自增,加1后结果重新赋给自己)、--(自减)

  • 赋值运算符:=、+= 、-= 、*=、/=

  • 逻辑运算符:

    逻辑与代表且,所有的条件都是true时,值才为true,任意一个条件为false,结果为false;

    逻辑或代表或,任一条件为true则运算值为true,所有条件都为false时,结果为false;

    逻辑非代表取反,当前条件为false时,值为true,条件为true时值为false。

    字符说明
    &&短路与:有一个不满足条件,不继续进行【一般推荐使用】
    &与:判断所有条件,前面的不满足也会执行后面的判断
    ||短路或:有一个满足条件,不继续进行【一般推荐使用】
    |或:判断所有条件
    !非:

    注:操作数都为boolean类型

  • 比较运算符:> 、<、==、<=、>=、!= 位运行符:&、|、<<、>>

    // 右移2,相当于除以2的1次方
    size >> 1;

    注:转成二进制后,按位进行运算;5&8;0101—>1000

  • 三元运算法: (布尔值)?结果1:结果2; 布尔值为true则为结果1,否则为2

    int a = 3;
    int b = 5;
    // a>b则c=a,否则c=b
    int c = a > b ? a : b;

2.6 键盘输入

  • String:Java中最常用的类(类型),它可以表示一个字符串,用" "包含

  • Scanner:可以通过控制台来接收用户的输入信息,需要引包

    注:这两个方法都是阻塞方法,即必须等待用户输入数据后,才能继续运行

3、流程控制

流程控制有三种结构:顺序结构、分支结构、循环结构

3.1 分支结构

分支结构有两种类型:if、switch

3.1.1 if

  • 语法

    // 如果满足条件
    if (布尔表达式) {
        语句一;
    }
    // 不满足上述条件且满足下列条件
    else if (布尔表达式) {
        语句二;
    }
    // 上述条件都不满足
    else {
        语句三;
    }

    if:必须有且只有一个

    else if:可以没有,可以有不止一个

    else可以不写,最多一个

  • if 语句可以嵌套

    String grade;
    if (a <= 100 && a >= 80) {
        if (a == 100) {
            grade = "满分"
        } else {
            grade = "优秀"
        }
    } else if(a >= 60){
        grade = "良好"
    } else if(a >= 0) {
        grade = "不及格"
    } else{
        System.print.out("您输入的成绩有误");
    }
    if (grade != null) {
        System.print.out("您的成绩为:" + grade);
    }

3.1.2 switch

  • 语法

    switch(变量) {
        case:
            语句一;
            break;
        case:
            语句二;
            break;
            ……
        defaullt:
            语句n;
            break;
    }

    switch语句只能做等值比较

    可以使用switch的数据类型有:byte,short,int,char,enum,String(JDK1.7以后可以使用)

    switch语句必须使用break跳出,否则会穿透执行,有时可以利用这一点。

3.1 循环结构

循环结构有三种类型:while、do while、for,都可以进行嵌套。

3.1.1 while

  • 语法

    // 一层循环
    while (布尔表达式) {
        循环体1;
        // 二层嵌套循环
        while () {
            循环体2;
        }
    }

    判断表达的值,true进入循环体,false结束循环,每次执行完循环体的代码后,再继续判断

    如果循环体只有一条语句,则{}可以省略,但不建议

    while(a < 100)
        a+=1;

    条件如果一直为true,则当前循环是一个死循环

3.1.2 do while

  • 语法

    do {
        循环体;
    } while (布尔表达式);

    进入循环体,true进入下一次循环,false结束循环

    true为死循环

3.1.3 for

for循环适合已知执行次数的循环

  • 语法

    for (表达式1; 表达式2; 表达式3) {
        循环体;
    }

    表达式1和表达式3都可以省略;

    for ( ; 表达式2; ) {
        循环体;
    }

    表达式1:只运行一次,一般初使化循环体中使用的变量

    表达式2:布尔表达式,进行循环体的条件 ;每次进入循环体前先判断这个表达式的结果;

    表达式3:循环体的最后一行语句

3.3 结束循环

  • 结束循环的几种条件

    • 不满足循环的条件

    • return:返回值

    • break:跳出整个循环

    • continue:跳出当前循环

  • 在嵌套循环中可以使用continue或break来跳出某一层循环,使用标记的方式来解决即可

    a:
    for(int i=0;i<10;i++){
        b:
        for(int j=0;j<10;j++){
            if(j==8){
                break a;
                //continue a;
            }
        }
    }

3.4 常用算法

使用循环常用的算法

  • 正推:已知条件求结果

  • 反推:已知结果求条件

  • 穷举:列举出所有的可能

4、数组

数组是一种引用数据类型,可以存储多个相同类型的数据;数据中存储的数据称为元素,长度一经定义不可改变。

  • 语法

    // 推荐方式,更符合对象的思想
    int[] a = new int[长度];
    // 也可以但不推荐
    int b[] = new int[长度];
  • 初始化:指初次给数组赋值,分为两种

    • 动态初始化

      // 定义一个数组a,长度为5
      int[] a = new int[5];
      // 下标为0的元素赋值为1
      a[0] = 1;
      a[1] = 2;
    • 静态初始化

      // 定义一个数组a,长度为后面元素的个数
      int[] a = new int[]{4, 6, 78, 8, 90};

      简便写法

      // new int[]可以省略
      int[] a = {5, 6, 8, 9, 0, 98};
      String[] s = {"张飞","李逵","王二麻子"};
  • 获取元素

    通过数组的下标(索引)来访问数组元素,数组的下标从0开始,最大下标值是长度-1

    int[] a = new int[5];
    a[0] = 78;
    a[1] = 77;
    int i = a[0];
  • 遍历方法

    • 按照长度循环

      int[] a = {1, 2, 0, 0, 3, 5};
      int i = 0;
      // 当i小于数组a的长度
      while (i < a.length) {
          System.out.println(a[i]);
          i += 1;
      }
      int[] a = {1, 2, 0, 0, 3, 5};
      for (int i = 0; i < a.length; i++) {
          System.out.println(a[i]);
      }
    • 增强的for循环

      • 语法

        for (数据类型 变量名 : 数组名) {
            循环体;
        }
      • 代码

        String[] a = {"1", "2", "0", "0", "3", "5"};
        for (String i : a) {
            System.out.println(i);
        }
      • 说明:增强的for循环只能用于遍历集合;是JDK1.5版本之后的新特性;

  • 二维数组

    • 说明:

      本质上来说,java并没有二维数组,所谓的二维数组其实就是一个数组,数组中的元素类型还是一个数组。

    • 初始化

      • 动态初始化

        // 三行五列
        int[][] a = new int[3][5];
        // 只有三行,每行几个元素不确定
        int[][] a = new int[3][];
      • 静态初始化

        int[][] a = {{3, 4, 6}, {6, 7, 8, 9}, {6, 7, 8, 9, 0}};
        System.out.println(a.length);       // 3
        System.out.println(a[0].length);    // 3
        System.out.println(a[1].length);    // 4
        System.out.println(a[0][0]);        // 3

5、排序

排序的算法有:冒泡,选择,插入,堆,快,希尔,归并,基本原则是比较和交换

  • 冒泡排序的操作原则

    1. 相临的两个元素比较;并进行交换

    2. 每回合比较多对元素(内部循环)

    3. 重复以上步骤,对所有元素进行排序(外部循环)

  • 选择排序的操作原则

    1. 每次从余下的元素中选出一个最大(小)的元素(通过下标)

    2. 对指定位置的元素进行交换(通过定义第三个中转值)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值