JAVA基础学习笔记04

本文深入探讨了Java中的循环结构,包括for、while和do...while循环的特点与区别,以及return、break和continue语句的功能。同时,全面解析了数组的概念、初始化方式,包括动态与静态初始化,以及数组操作中常见的越界和空指针问题。还详细介绍了二维数组的格式与注意事项,最后讨论了参数传递机制在基本与引用数据类型之间的差异。

1、循环结构for语句的注意事项

  • 判断条件语句无论简单还是复杂,结果是boolean类型。
  • 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略
  • 一般来说:有左大括号就没有分号,有分号就没有左大括号。

2、循环结构三中循环语句的区别

  • do…while循环至少执行一次循环体。
  • for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
  • for循环和while循环的区别: while循环在循环结束后,可以继续使用控制条件的那个变量,for循环则会释放那个变量。如果使用时不知道使用for还是while,就用for循环,因为变量及早地从内存中消失,可以提高内存的使用效率。

3、return、break以及continue的区别?

  • return是结束方法
  • break是跳出循环
  • continue是中值本次循环继续下次循环

4、数组概述和定义格式说明

  • 为什么要有数组?
    为了存储同种数据类型的多个值。
  • 数组概念
    A:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器
    B:数组即可以存储基本数据类型,也可以存储引用数据类型

5、数组的初始化动态初始化

  • 什么是数组的初始化?
    就是为数组开辟连续的内存空间,并为每个数组元素赋予值
  • 如何对数组进行初始化?
    A 动态初始化: 只指定长度,由系统给出初始化值。
    例:int[ ] arr = new int[5];
    B 静态初始化: 给出初始化值,由系统决定长度
  • 动态初始化的格式:
    数据类型[ ] 数组名 = new 数据类型[数组长度];
  • 静态初始化格式:
    数据类型[ ] 数组名 = new 数据类型[ ] {元素1,元素2,…};
    简化格式: 数据类型[ ] 数组名 = {元素1,元素2,…};

6、数组操作的两个常见小问题:越界和空指针

  • ArrayIndexOutOfBoundsException: 数组索引越界异常
    原因: 你访问了不存在的索引
  • NullPointerExcep: 空指针异常
    原因: 数组已经不再指向堆内存了,而你还用数组名曲访问元素。

7、二维数组的格式和注意事项

  • 二维数组格式1:
    1:数据类型 数组名[ ] [ ] = new 数据类型[m][n];
    2:数据类型[ ] 数组名[ ] = new 数据类型[m] [n];
    java中一般用:int [ ] [ ] arr = new int[3] [2];
  • 注意事项:
    int [ ] x; //声明 x一维数组
    int [ ] y[ ];//声明 y二维数组
    int [ ] x,y[ ];// 相当于 int [ ] x; int [ ] y[ ];声明x 一维数组,y 二维数组
  • 二维数组格式2:
    int [ ] [ ] arr = new int [3] [ ] ;
  • 二维数组格式3:
    int [ ] [ ] arr = {{1,2,3},{4,5},{6,7,8,9}};

8、参数传递问题

  • 基本数据类型的值传递: 不改变原值,因为调用后就会弹栈,局部变量随之消失
  • 引用数据类型的值传递: 改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
  • Java中到底是传值还是传址
    1:既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
    2:Java中只有传值,因为地址值也是值**(出去面试都说这种**,支持者是高司令(java之父))
class Test3_Array {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("a:"+a+",b:"+b);			//a = 10,b = 20
		change(a,b);
		System.out.println("a:"+a+",b:"+b);			//a = 10,b = 20

		int[] arr = {1,2,3,4,5};
		change(arr);
		System.out.println(arr[1]);
	}

	public static void change(int a,int b) {		//a = 10, b= 20
		System.out.println("a:"+a+",b:"+b);			//a = 10,b = 20
		a = b;										//a = 20
		b = a + b;									//b = 40
		System.out.println("a:"+a+",b:"+b);			//a = 20, b = 40
	}

	public static void change(int[] arr) {			//1,4,3,8,5
		for(int x=0; x<arr.length; x++) {
			if(arr[x]%2==0) {
				arr[x]*=2;
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值