JAVA学习笔记 第二周

13变量

13.1局部变量

概念:声明在方法内部的变量,必须先赋值再使用

  	描述                                      

定义位置 必须定义在方法中
作用范围 离当前变量最近的大括号以内
关于重名 在作用范围内不能重名
存储位置 基本数据类型,全部存放在栈(stack)中。
引用数据类型,名字放在栈(stack)中,值放在堆(heap)中
生命周期 随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡

14.循环结构

14.1 while

先判断条件再执行

循环必须的四个条件:

1,计数器初始化

2,判断条件

3,循环体

4,计数器变化

while ( 循环条件 ) {

	循环操作

}

14.2 do-while

先执行再判断条件

do {

	循环操作

} while( 循环条件 ) ;

初始情况不满足循环条件时

while循环一次都不会执行

do-while循环不管任何情况都至少执行一次

14.3 for

for(计数器初始化; 判断条件 ; 计数器变化){

 循环体;

}

循环必须的四个条件:

1,计数器初始化

2,判断条件

3,循环体

4,计数器变化

14.4 循环对比

区别:

1,语法不同

2,执行顺序

while循环:先判断,再执行

do-while循环:先执行,再判断

for循环:先判断,再执行

3,使用情况

循环次数确定的情况,通常选用for循环

循环次数不确定的情况,通常选用while或do-while循环

14.5 break

跳出该循环结构

break可以用于switch中,表示跳出switch结构

也可以用于循环中,表示跳出当前循环,没有执行完的次数 不再执行

break关键字在循环中 通常结合分支结构来使用

break关键字之后 不能写代码

14.6 continue

作用:表示跳出本次循环,继续执行下一次循环

适用场景不同,break可以用于switch和循环中,continue只能用在循环中

14.7双重循环

外层变量变化一次 内层循环变量变化一轮

外层循环控制行数

内层循环控制列数

第一行元素的个数决定了计数器的初始值,

元素越来越多,就++,当计数器++的时候,我们必须设置一个上限,也就是我们的条件必须小于或者小于等于某个值,

否则就死循环

元素越来越少,就–,当计数器–的时候,我们必须设置一个下限,也就是我们的条件必须大于或者大于等于某个值,

否则就死循环

15 方法

15.1 static静态方法

15.1.1 方法的概念

用来解决特定问题(特定功能)的一定代码,可以反复使用

15.1.2 静态定义语法

public static void 方法名称( ){

		//方法主体

}

15.1.3 调用

在需要调用方法的位置,直接书写方法名();即可实现调用

代码执行到调用方法的位置,会先执行方法内部的代码,再接着执行后续的代码

15.2参数

15.2.1 形参

形式参数,指方法定义的时候书写的参数,形参相当于局部变量的声明

形参规定了参数的个数、类型、顺序,指实参必须遵守这个规定

15.2.2 实参

实际参数,指用户调用方法的时候传入的参数,实参相当于局部变量的赋值

15.3返回值return

无返回值 void 也可以 return;

有返回值return 返回值;

使用方法:

方法1:直接返回 return a+b;

方法2:使用分支结构if,保证每一种情况都有正常的返回值

方法3:使用在void中表示终止方法 return;

15.4 方法多级调用

在方法中可以调用其他方法

16数组

16.1 数组概念

一组连续的存储空间,存储多个数据类型相同的值,空间连续,长度固定

16.2 数组声明赋值方式

16.2.1 先声明再分配空间

数据类型 [] 数组名;

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

int [] a;
a=new int[10];

16.2.2 声明并分配空间

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

int [] a=new int[10];

16.2.3 声明并赋值(繁)

数据类型 [] 数组名=new 数据类型[] {value1,value2,…};

int[] a-new int[]{1,2,3,4};

16.2.4 声明并赋值(简)

数据类型 [] 数组名={value1,value2,…};

int [] a={1,2,3,4};

16.3 数组下标和访问

从0开始

访问方式:数组名【下标】

16.4 数组遍历

int [] a={1,2,3,4};
for(int i=0;i<a.length;i++){
    System.out.println(a[i]);
}

16.5 数组的默认值

数组中的元素都有默认值,定义数组但是没有赋值时都默认为默认值。

整数:0

小数:0.0

布尔:false

字符:\u0000 unicode字符

其他引用类型:null

16.6 数组的存储

数组作为引用数据类型

引用(名称)存储在栈中,值存储在堆中

数组引用中保存的是hash值,所以直接打印输出hash值

16.7 复制数组

16.7.1 法1

创建大于原数组的新数组,并循环赋值

16.7.2 法2

System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度)

16.7.3 法3

import java.util.Arrays;
新数组=Arrays.copyOf(原数组,长度);

16.8 数组面试题

值传递和引用传递的区别?

值传递:传递的是值的副本,在方法中对值的操作不会影响原来的变量

引用传递:传递的是地址,根据这个地址对数据操作,会影响原来的值

String类型是特殊的引用数据类型,作为参数传递不会影响原来的变量

17 排序

17.1 冒泡排序

	for (int i = 0; i < arr.length - 1; i++) {	//外循环只需要比较arr.length-1次就可以了,n个数比n-1轮
			for (int j = 0; j < arr.length - 1 - i; j++) {//-1为了防止索引越界,-i为了提高效率,每一轮都有一个最大的冒出来
				if(arr[j] > arr[j+1]) { //大于就往上跑,冒泡
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j+1] = temp;
				}
			}
		}

17.2选择排序

for (int i = 0; i < a.length; i++) {
			int index=i;
			for (int j = i+1; j <a.length; j++) {
				if(a[index]>a[j]) {
					index=j;
				}
			}
			if(index!=i) {
				int temp=a[i];
				a[i]=a[index];
				a[index]=temp;
			}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值