Java 基础应用总结

一、IDEA

1.1 IDEA下载

官网下载地址:https://www.jetbrains.com/idea/

1.2 IDEA安装

点击下载好安装包

1.3 IDEA项目结构

1.4 IDEA常用快捷键

二、数组

2.1 数组介绍

数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

2.2 数组定义格式

2.2.1 第一种格式

数据类型[] 数组名

示例:

int[] arr;        
double[] arr;      
char[] arr;

2.2.2 第二种格式

数据类型 数组名[] 

示例:

int arr[];
double arr[];
char arr[];

2.3 数组的动态初始化

2.3.1 动态初始化介绍

数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 。

2.3.2 动态初始化格式

数据类型[] 数组名 = new 数据类型[数组长度];

int[] arr = new int[3];

2.4 数组元素访问

2.4.1 索引介绍

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。

​    这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

2.4.2 访问数组元素格式

数组名[索引];

2.5 内存分配

2.5.1 内存概述

内存是计算机中的重要原件,临时存储区域,作用是运行程序。

我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。

必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

2.5.2 Java中的内存分配

一个数组内存图:

2.6 数组静态初始化

2.6.1 什么是静态初始化

在创建数组时,直接将元素确定 。

2.6.2 静态初始化格式

完整版格式

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

简化版格式

数据类型[] 数组名 = {元素1,元素2,...};

2.7 数组操作两个常见问题

2.7.1 索引越界异常

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[3];
        System.out.println(arr[3]);
    }
}

数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。

程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

将错误的索引修改为正确的索引范围即可!

2.7.2 空指针异常

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[3];

        //把null赋值给数组
        arr = null;
        System.out.println(arr[0]);
    }
}

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

给数组一个真正的堆内存空间引用即可!

2.8 二维数组

2.8.1 二维数组介绍

二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组容器。

二维数组的本质还是一维数组,只不过数组中的元素不是具体的元素值,而是新的数组。

2.8.2 二维数组动态初始化

数据类型[][] 数组名 = new 数据类型[m][n];
m表示这个二维数组可以存放多少个一维数组。
n表示每一个一维数组可以存放多少个元素。

2.8.3 二维数组静态初始化

完整格式:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,...},{元素1,元素2,...},...}
简化格式:
数据类型[][] 数组名 = {{元素1,元素2,...},{元素1,元素2,...},...}

2.9 ArrayList

2.9.1 ArrayList 集合

集合和数组的区别:

相同点:都是存储数据的容器。

不同点:数组的容量是固定的,集合的容量是可变的。

2.9.2 ArrayList构造方法和常用方法

三、方法

3.1 方法的概述

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

* 注意:
  * 方法必须先创建才可以使用,该过程成为方法定义
  * 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

3.2 方法的定义和调用

3.2.1 无参方法的定义和调用

定义格式:

public static void 方法名 (   ) {
	// 方法体;
}

调用格式:

方法名();

3.2.2 带参方法的定义和调用

定义格式:

参数:由数据类型和变量名组成 - 数据类型 变量名

public static void 方法名 (参数1) {
	方法体;
}

public static void 方法名 (参数1, 参数2, 参数3...) {
	方法体;
}

调用格式:

方法名(参数);

方法名(参数1,参数2);

总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。

3.2.3 带返回值方法的定义和调用

定义格式:

public static 数据类型 方法名 ( 参数 ) { 
	return 数据 ;
}

注意:

* 方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错。

调用格式:

方法名 ( 参数 ) ;
数据类型 变量名 = 方法名 ( 参数 ) ;

3.2.4 形参和实参

形参:方法定义中的参数

等同于变量定义格式,例如:int number

实参:方法调用中的参数

等同于使用变量或常量,例如: 10 number

3.3 方法的注意事项

3.3.1 方法通用格式:

public static 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}

3.3.2 方法注意事项

方法不能嵌套定义 。

void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据 。

3.4 方法的重载

3.4.1 方法重载概念

方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

* 多个方法在同一个类中
* 多个方法具有相同的方法名
* 多个方法的参数不相同,类型不同或者数量不同

3.4.2 方法重载注意

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

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

3.5 方法的参数传递

3.5.1 方法传递基本数据类型

基本数据类型的参数,形式参数的改变,不影响实际参数。

依据:每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失。

3.5.2 方法传递引用数据类型

对于引用类型的参数,形式参数的改变,影响实际参数的值 。

依据:引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果 。

四、Debug

4.1 什么是Debug

是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

4.2 Debug介绍与操作

  • 如何加断点

    • 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

  • 如何运行加了断点的程序

    • 在代码区域右键Debug执行

  • 看哪里

    • 看Debugger窗口

    • 看Console窗口

  • 点哪里

    • 点Step Into (F7)这个箭头,也可以直接按F7

  • 如何删除断点

    • 选择要删除的断点,单击鼠标左键即可

    • 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除

  • 40
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值