黑马程序员——Java基础语法——数组和循环嵌套

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
 * 数组概念:同一种类型数据的集合,其实,数组就是一个容器.
 * 好处:可以自动给数组的元素从0开始编号,方便操作这些元素.
 * 格式1:元素类型[] 素组名 = new 元素类型[元素个数或数组长度]
 * 		int [] arr = new int[5];
 * 格式2:元素类型[] 数组名 = new 元素类型[]{元素1,元素2,元素3,....元素n};
 * 		int[] arr = new int[]{3,5,7,9,0};
 *   或者int[] arr = {1,2,3,4,5,6}
 * 内存划分:1.寄存器 2.本地方法区 3.方法区 
 * 4.栈内存 用于存储局部变量,当变量所属的作用域一旦结束,所占空间会自动释放.
 * 5.堆内存 数组和对象,通过new建立的实例都存放在堆内存中.
 * */
public class ShuZu {

	public static void main(String[] args) {
		int[] arrays = {23,34,15,64,678,342,533,234,2,9,-999};
		printArrays(arrays);
		xuanZe(arrays);
		xuanZeJiaoBiao(arrays);
		bubble(arrays);
		Arrays.sort(arrays);
		printArrays(arrays);
		arrayDemo(arrays);
		getMax(arrays);
	}
	public static void arrayDemo(int[] arr){
		//int[] arr = new int[]{1,2,3,4,5};
	//	System.out.println(arr);//[I@170a6001 
		//[I 表示int类型的数组,@后面是该素组的初始地址哈希值
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
	public static void getMax(int[] arrays){
		int max = 0;
		for (int i = 0; i < arrays.length; i++) {
			max = arrays[i] > max ? arrays[i]:max;
		}
		System.out.println(max);
	}
	//排序问题:
	//选择排序:用第一个元素依次和后面的元素做比较,确定第一位最小,然后拿第二个和后面的依次比较
	//采用选择排序--基本方法
	public static void xuanZe(int[] arr){
		for (int x = 0; x < arr.length-1; x++) {	
			for (int y = x+1;y < arr.length; y++) {
				if(arr[x]>arr[y]){
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y] = temp;				
				}
			}
		}	
	}
	//遍历方法
	public static void printArrays(int[] array){
		System.out.print("[");
		for (int i = 0; i < array.length; i++) {
			if( i < array.length-1){
			System.out.print(array[i]+",");
			} else {
				System.out.println(array[i]+"]");
			}
		}
	}
	//选择排序之角标记录法
	public static void xuanZeJiaoBiao(int[] arrays){
		for (int i = 0; i < arrays.length-1; i++) {
			int index = i;
			int min = arrays[i];
			for(int j = i+1 ; j<arrays.length;j++){
				if(arrays[j]<min){
					min = arrays[j];//获取到本循环数组最小值min
					index = j;//本循环结束后获取到整个数组最小值的索引j
				}
				if(i != index){
					replace(arrays,i,index);
				}		
			}
		}
	}
	//替换arrays[i]
	public static void replace(int[] arrays,int i,int index){
		int temp = arrays[i];
		arrays[i] = arrays[index];
		arrays[index] = temp;
	}
	//冒泡排序:第一轮:从第一个元素到倒数第二个元素依次向右比较,把最大数挪到最右边.
	//       第二轮:从第二个元素到倒数第三个元素依次向右比较,把第二大数挪到倒数第二.
	public static void bubble(int[] arr){
		for (int j = 0; j < arr.length-1; j++) {
			for (int i = 0; i < arr.length-j-1; i++) {
				if(arr[i]>arr[i+1]){
					int temp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}
	}
}

程序运行的结果为:

[23,34,15,64,678,342,533,234,2,9,-999]
[-999,2,9,15,23,34,64,234,342,533,678]
-999
2
9
15
23
34
64
234
342
533
678
678

For循环嵌套练习

public class ForForTest {
	public static void main(String[] args) {
		method_1();
		method_2();
		method_3();
		method_4();
		method_5();
		method_6();
		method_7();
		
	}
	//打印矩形
	public static void method_1(){
		for(int i = 0 ;i<5;i++){
			for(int j = 0; j<5;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	//打印倒直角三角形1
	public static void method_2(){
		for(int i = 0 ;i<5;i++){
			for(int j = 0; j<5-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	//打印倒直角三角形2
	public static void method_3(){
		for(int i = 0 ;i<5;i++){
			for(int j = i; j<5;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	//打印正直角三角形2
	public static void method_4(){
		for(int i = 0 ;i<5;i++){
			for(int j = 0; j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	//打印倒三角数字1
	public static void method_5(){
		for(int i = 0 ;i<5;i++){
			for(int j = 5; j>i;j--){
				System.out.print(j);
			}
			System.out.println();
		}
	}
	//打印倒三角数字2
	public static void method_6(){
		for(int i = 0 ;i<5;i++){
			for(int j = 0; j<=i;j++){
				System.out.print(i+1);
			}
			System.out.println();
		}
	}
	//打印等腰三角形
	public static void method_7(){
		for (int i = 0; i < 5; i++) {
			for(int k = 0; k < i; k++){
				System.out.print(" ");
			}
			for (int j = i; j < 5; j++) {
				System.out.print("* ");
			}
			System.out.println();
		}
	}
}
输出效果:

*****
*****
*****
*****
*****
*****
****
***
**
*
*****
****
***
**
*
*
**
***
****
*****
54321
5432
543
54
5
1
22
333
4444
55555
* * * * * 
 * * * * 
  * * * 
   * * 
    * 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值