JavaSE基础复习一:数据类型、运算符、数组、方法

本文最后更新于:2021年7月23日 晚上


JavaSE基础复习一:数据类型、运算符、数组、方法

  • Java版本:1.0->1.1->1.2->1.3->1.4->5.0(变化很大)->6.0->7.0->8.0(公司引用最多)->9.0->10.0->11.0(学习这个)
  • Java跨平台原理:JVM

  • JRE(Java Runtime Environment)用于让机器运行java:包含JVM和核心类库,JDK(Java Development Kit)用于开发,包含JRE和开发工具。

DOS常用命令

操作 说明
盘符: 切换到某个盘
cd 文件夹 进入文件夹
cd .. 上级目录
cd \ 退回盘符目录
cls 清屏

注释

  • //单行注释

  • /* */多行注释

  • /** */文档注释

Java数据类型

分基本类型和引用类型

  • 数据类型:

    • 基本类型:

      • 数值型:
        • 整型(byte:1byte、short:2、int:4、long:8)

        • 浮点(float:4、double:8)

        • 字符(char:2)

      • 非数值型:布尔类型(boolean:1)
    • 引用类型:类、接口、数组

  • Java写一个整数默认int类型,写一个小数默认double类型(需要防止写的过长造成溢出)

  • Java处理基本类型都是当做int进行操作

变量使用

  • 变量名同一作用于不能重复声明

  • 变量未赋值不能使用

  • long类型赋值给数字加上L声明是long类型

  • float赋值时数值加上F声明为float类型,防止类型不兼容,造成数据溢出

标识符命名规定

  • 由数字、字母、下划线_以及$组成

  • 不能以数字开始

  • 不能是关键字

  • 区分大小写

命名规范

  • 标识符(方法和变量):小驼峰法(name,fileName)

  • 类:大驼峰法(Student,GoodStudent)

类型转换

  • 自动类型转换:数据范围赋值给数据范围大的(byte -> short (char)-> int -> long -> float -> double),short和char不能相互转换

  • 强制类型转换:强制数据范围大的赋值给数据范围小的(可能造成数据丢失)例如:byte b = int(111111)

运算符

  • 算数运算符:+、-、*、/、%

    • 整数相除是整数,不会是小数
  • 字符数值型相加减:’A’->65、’a’->97、’0’->48

  • 算数表达式中包含多个基本数据类型时,整个算数表达式类型自动提升,提升规则:

    • byte、short和char自动提升到int类型
    • 表达式的类型自动提升到表达式中最高等级的操作数类型,顺序:byte,short,char->int->long->float->double
  • 字符串和整型(或者字符串)加:

    • 当加操作出现在两个字符串之间,这个+是字符串连接符,不是算数运算符
    • 当+操作中出现字符串,就是连接运算符,否则就是算数运算符。当连续进行”+”操作是,从左到右依次执行:如先1+99+”lalala”,那么先计算1+99=100,在和”lalala”进行拼接,输出”100lalala”。如果是”lalala”+1+99那么就是”lalala”和1拼接,再和99拼接,输出”lalala199”
  • 赋值操作符号:

    =、+=、-=、*=、/=、%=:扩展的赋值运算符隐含强制类型转换,如:short a = 1; a += 20; 20是int类型,但不会报错,隐含强制类型转换

  • 自增自减运算符:++,–

    • ++i,i++,–i,i–
      • 单独使用没有区别

      • 在表达式中:++i和–i,先让i加减在将值带入计算

      • 在表达式中:i++和i–,先让i计算,再对i进行计算

  • 关系运算符:

    • ==、!=、>、>=、<、<=:返回boolean类型

    • 如果不小心把==写成=,就是赋值运算,返回的值就是被赋值的那个变量

  • 位运算符:

    • &、|、^、!:逻辑的与、或、异或、非

    • 可以用于判断,boolean底层是存储0,1,如下:

      • &:有false则是false,如:false & false、false & true

      • |:有true 则是true

      • ^:相同为false,不同为true

      • !:true为false,false为true

  • 短路逻辑运算符:

    • 短路与:&&

      • 使用结果和&一致,但只要可以判断这个表达式的真假值,后面的判断就不会再进行了,因此称为短路:即左边为true还要接着判断后面是否有false,所以继续执行,一旦出现一个false,那么真个语句一定是false,那么后面的判断不会再执行
    • 短路或:||

      • 使用结果和|一致,但只要可以判断这个表达式的真假值,后面的判断就不会再进行了,因此称为短路:即左边为false还要接着判断后面是否有true,所以继续执行,一旦出现一个true,那么真个语句一定是true,那么后面的判断不会再执行
  • 三目运算符:

    • 格式:关系表达式?表达式1:表达式2

    • 如果关系表达式为true,则返回表达式1,否则返回表达式2

数据输入

使用java.util.Scanner

1
2
3
4
5
6
7
8
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(a);
}
}

流程控制语句

  • 顺序结构(依次执行,一般代码就是这个流程)

  • 分支结构(if、switch)

    • switch的可取值:byte、short、int、char,JDK5之后可以是枚举,JDK7以后可以是String
  • 循环结构(for、while)

  • 跳转控制语句:break,continue

随机数:Random

1
2
3
4
import java.util.Random;

Random r = new Random();
int number = r.nextInt(10); // 10是数据范围(0,10]之间

数组

  • 定义:

    1
    2
    3
    ```java
    // 数据类型[] 变量名
    int[] arr;

    // 数据类型 变量名[]

    1
    int arr[];
  • 动态初始化:

    1
    2
    // 数据类型[] 变量名 = new 数据类型[数组长度];
    int[] arr = new int[100];
  • 静态初始化:指定数组元素的初始值,由系统决定数组长度

    1
    2
    3
    4
    5
    // 数据类型[] 变量名 = new 数据类型[ ]{元素1,元素2,元素3…}
    int[] arr = new int[]{1, 2, 3, 4};

    // 数据类型[] 变量名 = {1, 2, 3, 4};
    int[] arr = {1, 2, 3, 4};
  • 数组元素访问:索引

  • 内存分配:

    • 栈内存:存储局部变量,使用完毕立即消失

    • 堆内存:存储new出来的内容(实体,对象),数组在初始化时,会为存储空间添加默认值,基本类型初值是其对应的零值。引用类型对应null:

      • 整数0

      • 浮点数:0.0

      • 布尔:false

      • 字符:空字符

      • 引用数据类型:null,表示一个不确定的对象,不能赋值给基本类型(null本身并不是对象类型,也不是实例,未知)

    • Java的引用类型赋值时,都是指向同一块存储空间,一旦某个对象没有引用(指向null,这也是一种垃圾回收的方式),就可能被GC(垃圾回收)。

  • 常见错误:访问越界、空指针异常

  • 数组常见操作:

    • 遍历:for循环
      1
      2
      3
      4
      5
      6
      7
      for (int i=0; i<arr.length; i++){
      System.out.println(arr[i]);
      }

      for (int a : arr) {
      System.out.println(a);
      }

方法

  • 具有独立功能的代码块组织成一个整体,具有特殊功能的代码集

  • 注意事项

    • 方法不能嵌套定义

    • void可以忽略返回值,也可以只写一个return不带值

  • 方法重载

    • 多个方法在同一个类中

    • 多个方法具有相同的方法名

    • 多个方法的参数不同,类型不同或者数量不同

    • 特点

      • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式

      • 重载仅针对同一个类中方法的名称与参数进行识别与返回值无关,即不能通过返回值类型来判定两个方法是否构成重载

  • 方法的参数传递

    • 基本类型传递:方法对参数的修改不影响实参的值

    • 引用类型传递:因为指向同一个地址空间,因此会影响实参的值

    • Java的传值方式只有一种:传值(传值和传引用,传引用传递的参数是对象的引用,实际上也是一种传值)