JavaSE语法阶段复习知识整理1

文章目录

  • 一、初始Java
  • 二、数据类型与变量
  • 三、运算符
  • 四、关系运算符
  • 五、逻辑控制
  • 六、方法的使用
  • 七、数组的定义和使用
    • 数据类型未初始化时的默认值
    • 八、内存的划分
    • 数组的简单堆栈图
    • 九、常用的数组操作方法

一、初始Java

JDK (Java Development Kit):Java开发工具包。不提供具体的开发软件,而是提供编写代码时都会用到的类库 和 Java语言规范。


JDK是整个Java开发的核心,其主要组成部分包括:

  • Java编译器(javac):
    用于将Java源代码(.java)编译成字节码文件(.class文件)
  • Java运行工具(JRE):
    包含了java虚拟机(JVM),用于执行编译之后的字节码文件(.class文件)
  • Java文档生成器(javadoc):
     用于生成Java程序的API文档
  • Java打包工具

在这里插入图片描述
idea是集成开发环境,配合JDK来编写、编译、运行和调试程序


在这里插入图片描述


二、数据类型与变量

 基本数据类型 && 引用数据类型


   基本数据类型

  • 整数型:byte、short、long、int
  • 浮点型:float、double
  • 字符型:char
  • 布尔型:boolean

   引用数据类型

  • String
  • 数组
  • 接口

                 没有讨论在32位下还是64位下
             不管是多少位操作系统下,都是这个字节数
在这里插入图片描述


三、运算符

  以下这些操作符,全部基于二进制进行相应操作

在这里插入图片描述
这里右移操作符分为 算数右移 和 逻辑右移 ,但是大多数编译器都是使用算数右移


  实际运用:
   要求不创建临时变量,交换两个整形变量的值:

int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;

原理:  a ^ a = 0;       a ^ a ^ b = b;         b ^ b ^ a = a;


什么是表达式?----> 变量运算符 结合起来的式子就是表达式


四、关系运算符

 逻辑与 &&

表达式1 && 表达式2  表达式1 和 表达式2 都必须是布尔表达式,返回值为true或false

 逻辑或 ||

表达式1 || 表达式2   表达式1 和表达式2 都必须是布尔表达式,返回值为true或false

注意:发生短路的逻辑与和逻辑或,发生短路 ,之后的表达式不计算


五、逻辑控制

 顺序结构、选择结构、循环结构


  1. 顺序结构
    按照程序的定义顺序去执行
  2. 选择结构(switch && if)
  3. 循环结构 (while && for && do-while)

  switch语句

switch(表达式) {
   case 常量值:
       break;
   case 常量值:
       break;
    case 常量值:
       break;
   default:
       break;
}

注意事项:

  • 多个case后的常量值不可以重复

  • switch的括号内只能是以下类型的表达式:
    基本类型:byte、char、short、int,注意不能是long类型
    引用类型:String常量串、枚举类型

  • 不能做Switch参数的数据类型有哪些?
    float、double、long、boolean
    但是 int 、String 、 char 可以作为参数类型

六、方法的使用

方法的组成:修饰符 + 返回值类型 + 方法名 + 参数类型 + 方法体

public static int add(int a, int b) {
       return a + b;
}

注意:

  1. 在java当中,方法必须写在类当中
  2. 在java当中,方法不能嵌套定义
  3. 在java当中,没有方法声明一说

  • 方法的命名采用小驼峰的形式
  • 类的命名采用大驼峰的形式

实参和形参的关系
实参名和形参名可以相同,也可以不同,但必须一一对应。传值调用时,实参值传递给形参,形参只是实参的一份临时拷贝,改变形参的值并不会影响实参的值。


方法的重载
  重载条件:

  1. 方法名称相同
  2. 返回值可以一样,可以不一样   (与返回值类型无关)
  3. 参数列表不同【参数数据类型、参数个数、顺序】

方法的重写
  重写条件:
4. 方法名称相同
5. 返回值相同,如果返回值是父子关系,也可以认为是重写的
6. 参数列表相同【 参数数据类型、参数个数、顺序】
7. 父类被static、private修饰的方法、构造方法都不能被重写


重载与重写的区别

在这里插入图片描述
相同点:方法名一定相同,不能修改


七、数组的定义和使用

什么是数组?------ 储存相同数据类型元素的一个连续的集合


数组的定义

int[] array = {1,2,3,4,5};//静态初始化,省略了int[]
int[] array = new int[5];//动态初始化,"[]"中必须确定大小
int[] array = new int[]{1,2,3,4,5};//静态初始化,"[]"中不能写任何的数字

数据类型未初始化时的默认值

在这里插入图片描述


遍历数组

  • f o r for for循环遍历
int[] array = {1,2,3,4,5,6,7};
for(int i = 0; i < array.length; i++) {
     System.out.print(x + " ");
   }

  • f o r − e a c h for-each foreach循环遍历
int[] array = {1,2,3,4,5,6,7};
for(int x : array) {
     System.out.print(x);
   }

f o r − e a c h for-each foreach循环 没有下标的参与,只是单纯的完整打印,不能根据下标进行选择性部分打印


数组是引用数据类型

在这里插入图片描述

八、内存的划分

  现在只简单关心 Java虚拟机栈 和 堆 这两块空间
在这里插入图片描述

数组的简单堆栈图

  变量 a a a 和 变量 a r r a y array array 都是局部变量,都在栈上开辟内存空间
在这里插入图片描述


分析下面这串代码,得出数组array1 和 array2 的内部元素的最终数值

public static void main(String[] args) {
int[] array1 = new int[3];
array1[0] = 10;
array1[1] = 20;
array1[2] = 30;

int[] array2 = new int[]{1,2,3,4,5};
array2[0] = 100;
array2[1] = 200;

array1 = array2;
array1[2] = 300;
array1[3] = 400;
array2[4] = 500;
}

  堆栈图
在这里插入图片描述


分析下面这串代码,分别调用func1 和 func2 最终结果为?

public static void main(String[] args) {
       int[] array = {10,20,30};
       func1(array);
       //func2(array);
       System.out.println(array);
}

public static void func1(int[] array) {
       array = new int[]{1,2,3};
}

public static void func2(int[] array) {
       array[0] = 199;
}

  调用func1 的堆栈图
在这里插入图片描述


  调用func2 的堆栈图
在这里插入图片描述


九、常用的数组操作方法

  1. 获取数组长度
    int len = array.length;

  1. 数组转为字符串
    int[] array = {1,2,3,4};
    int ret = Arrays.toString(array);
    转为字符串后的输出形式:
         [1,2,3,4]

  1. 数组排序
    import java.until.Arrays;

    Arrays.sort(array);

    注意是升序


  2. 数组拷贝

把array1 从0下标开始,复制给array2,  array2 从 0下标 开始接收,复制长度为4。
System.arraycopy(array1, 0, array2, 0, 4);


  1. 数组填充

Arrays.fill(数组名,值)   作用:将值全部填充到数组
Array.fill(数组名,开始下标,结束下标,值)  作用:从 开始下标 到 结束下标 将值部分填入数组
int[] array1 = new int[5];
Arrays.fill(array1, 3);//5个元素全为3
int[] array2 = new int[5];
Arrays.fill(array2, 1, 3, 6);//下标1 到 下标2 的值全部填充为6,其余值为0;
注意这里的下标部分填充为前闭后开,[1,3)


  1. 数组比较

Arrays.equals(数组1, 数组2)
Arrays.equals(array1, array2);
注意此方法的返回值为boolean 类型,比较的是数组是否相等,并不是比较大小,返回值为true/false


  1. 数组查找

该方法用于查找一个数组中是否存在某个元素,语法如下:
Arrays.binarySearch(数组,指定元素)
Arrays.binarySearch(数组,开始位置,结束位置,指定元素) 【在指定下标位置内查找指定元素】
注意:该方法要求数组是有序的;返回值为int类型,返回的是该指定元素所在的下标


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值