文章目录
- javaSE 循环嵌套,方法,数组
- 一.循环嵌套
- 二.Java中的方法
- 三.数组
- 1.数组三个注意事项:
- 2.数组的基本概念及作用
- (1)数组的创建
- 3.数组的访问与迭代
- 4.数组排序
- 5.二维数组
javaSE 循环嵌套,方法,数组
一.循环嵌套
• 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,
for ,while ,do…while均可以作为外层循环和内层循环。
• 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的
循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始
下一次的循环。
• 结束外层循环
• 如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,然
后在需要跳出的地方,用break label就行了
例
1.冒泡排序(随意给的一个数组)
二.Java中的方法
- Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,
方法包含于类或对象中. - 方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}
- **修饰符:**这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 形式参数: 在方法被调用时用于接收外界输入的数据。
- **实参:**调用方法时实际传给方法的数据。
- **返回值:**方法在执行完毕后返还给调用它的环境的数据。
- **返回值类型:**事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
- Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
- 参数的数目、数据类型和次序必须和所调用方法声明的形参列表匹配
- return 语句终止方法的运行并指定要返回的数据。
- return 语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 表达式; //将表达式的值返回
return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种
格式,此类return语句有时可省略
三.数组
1.数组三个注意事项:
- 在同一个数组中,数据类型相同
- 数组在内存中是连续的储存空间
- 创建时给定的长度不可改变
2.数组的基本概念及作用
- 数组是相同数据类型元素的集合
- 数组本身是*引用数据类型*,即对象。但是数组可以存储基本数据类型,
也可以存储引用数据类型
(1)数组的创建
- 数组的声明的两种方式:
数据类型 [] 数组名字 例如:int [] a;
数据类型 数组的名字 [] 例如: int a [];
- 注意: 在Java语言中两种声明方法没有任何区别,但是建议大家用第一种, 避免混淆a的数据类型
- 数组创建的三种方式:
- int [] ary0=new int[10];(动态创建并没有给数组元素赋初值)
- 声明数组的同时,根据指定的长度分配内存,数组中的元素一开始都默认初始化值0
- int[] ary1 = new int[]{1, 2, 3, 4, 5}
- 声明数组 并分配内存,同时将其初始化
- int[] ary2 = {1, 2, 3,4,5};
- 上一种方法相同只是更为简便
3.数组的访问与迭代
- 数组的访问
- 数组名字[索引] 例如:a[0],a[1];
注意: 数组的索引从0开始。 索引的数据类型是整型 索引最大值和数组长度始终差1
- 数组的迭代**(两种方式)**
- 第一种:for循环
• int b1=new []{1,2,3,4,5,6,7};
for(i=0;i<b1.lenght;i++){
System.out. println(b1[i]);
}
- 第二种:增强for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素的类型 临时变量名字 :数组的名字){
System.out.println(临时变量名字 );
}
- 即:
4.数组排序
• for(int x:b1){
System.out.println(x);
}
- 冒泡排序
- 冒泡排序的思想:从第一个数开始两两比较,一直朝后比若后面的比前面的小则将后面的数和那个前面比较的数交换位置
public static void main(String[] args) {
int a[]={3,5,7,8,9,1,2,6,4};
for (int i = 0; i <a.length ; i++) {
for (int j = 0; j <a.length-1-i ; j++) {
// 这里的a.lenght-1-i是最极端保险的情况就是最大排列就是完全相反也能排正回来
if(a[j]>a[j+1]){
// int temp=a[j];
// a[j]=a[j+1];
// a[j+1]=temp;
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
System.out.println(Arrays.toString(a));
for (int t:a) {
System.out.println(t);
}
}
- 选择排序
- 选择排序思想:取一个数依次与其余的数比较将这次比较中最小的数与取出的数交换,一直进行直到排序完成
- 选择排序代码
public static void main(String[] args) {
int a[] = {1, 5, 4, 6, 8, 9, 7};
//第一种写法这种写法虽然可以比较但是要比较次数太多会导致程序比较慢
// for (int i = 0; i < a.length; i++) {
// for (int j = i + 1; j < a.length; j++) {
// if (a[i] > a[j]) {
// int temp = a[i];
// a[i]=a[j];
// a[j]=temp;
// }
// }
// }
//第二种写法
/*
* 这种写法是先将内层循环过以后最小的索引值保存下来当内层循环结束以后再将索引的最小值与a[i]交换
* 与第一种方法相比大大减少了交换次数提高了程序效率
* */
for (int i = 0; i < a.length; i++) {
int MinIndex = i;
for (int j = i + 1; j < a.length; j++) {
if (a[MinIndex] > a[j]) {
MinIndex = j;
}
}
int temp = a[i];
a[i] = a[MinIndex];
a[MinIndex]=temp;
}
System.out.println(Arrays.toString(a));
}
- 插入排序
- 插入排序思想:假定前面已经排好序,用后面每一个的与前面的所有数比较大小,若遇到比它小的则交换位置,知道一直索引到(向前比较到最后一个元素a[0]),最后得到的数组肯定是从小到大依次排序
- 插入排序代码:
public class SortDemo2 {
/*
插入排序
*/
/* public static void main(String[] args) {
// 4
int [] a = {3,2,1,5,4};
for(int i=1;i<a.length;i++){//外层负责取出从第2个位置到最后一个数
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}*/
public static void main(String[] args) {
// 4
int [] a = {3,2,1,4,5};
//第一个变量记录当前要排序的那个元素
//第二个变量记录当前所比较的位置
int currentvalue=0;
for (int i = 0; i < a.length-1; i++) {
currentvalue = a[i+1];
int preIndex = i;//当前所比较的位置
while(preIndex>=0&¤tvalue<a[preIndex]){
a[preIndex+1] = a[preIndex];
preIndex--;//-1
}
a[preIndex+1] = currentvalue;//
}
System.out.println(Arrays.toString(a));
}
5.二维数组
- 二维数组的定义:数组的数组–二维数组的每一个元素是一个一维数组
- 例如:int [] []a={{1,2,2},{3,3,4},{4,5,6}};
- 二维数组的声明:
- int [] []a;
- int a[] [];
- 数组的创建:
- int [] []a=new int [] []{{1,2,3},{3,4,5},{4,5,6}};
- int [] []b={{1,2,3},{3,4,5},{4,5,6}};
- int[] []c=new int[3] [5]; //这里的3代表定义的这个二维数组有3个一维数组,每个一维数组包含5个元素
- 数组的遍历(迭代)
- 数组遍历(迭代)代码:
```
public static void main(String[] args) {
int [][] a = {{1,2,3},{4,5,6},{7,8,9}};
// 0 1 2 0 1 2 0 1 2
// 0 1 2
//遍历二维数组
for (int i=0;i<a.length;i++){//首先遍历二维数组,从二维数组中取出一个一维数组
for(int j=0;j<a[i].length;j++){//再对一维数组进行遍历
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
```