Java的内存分析:
在Java程序中,主要就是有 栈 ,堆,以及方法区,
而一个Java程序的运行,也是先由 栈到堆的一个进行过程;
# 数组
数组的定义: 就是同一个类型的数组集合,
数组一旦被创建,他的长度就是唯一的了,不能被改变,
数组中的类型可以是任意类型,但是必须是同一种类型,不可混合,
数组是属于引用类型:数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
数组的本身就是对象:Java的对象是在堆中的,所以数组无论是保存原始类型,还是其他类型,数组对象本身还是在堆中的。
数组被创建的方式:代码如下:
package com.oop; public class a { public static void main(String[] args) { // 一位数组的创建 int[] array={1,21,31,2121,12,12}; int[] array1=new int[10]; // 二维数组的创建 int[][] array2={{1,21},{1,122},{3123,213},{213,89}}; int[][] array3=new int[2][5]; } }
# 冒泡排序法:
思想:在Java程序中,排序的方法有很多种,但是里面最经典的就是冒泡排序法了,
冒泡排序法的一个思想,就是从第一二位到最后一二位,之间相互进行比较,如果前面一位比后面一位小,那么数组中的这两位数就要进行交换:且每次循环都会找到最小的那一个,或者最大的那一个:
代码如下:
package com.oop; import java.util.Arrays; public class a { public static void main(String[] args) { // 冒泡排序法: int[] array={1,34,12123,234,126,3414,452,645,3797,73534,2342,345,642}; System.out.println("冒泡排序之前的数组是:"+Arrays.toString(array)); System.out.println("------------------"); int temp; for (int i = 0; i <array.length ; i++) { for (int j = 0; j <array.length-1-i ; j++) { if(array[j+1]<array[j]){ temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } System.out.println("经过冒泡排序以后的数组是:"+Arrays.toString(array));//使用Arrays方法对数组进行直接打印 } }
# 洗漱数组
就是记录表里面的有效值,并将他们的坐标位置记录下来,代码如下:
package com.oop; import java.util.Arrays; public class a { public static void main(String[] args) { //稀疏数组 int[][] array=new int[11][11]; array[3][4]=1; array[5][7]=2; for (int[] ints : array) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("----------------------------"); // 上面的操作就是创建这个数组表,并将里面的特定位置进行赋值: int sum=0;//用来收集里面的值的个数 for (int i = 0; i <array.length ; i++) { for (int j = 0; j <array.length ; j++) { if(array[i][j]!=0){ sum++; } } } System.out.println("-----------------------------"); // 上面这步就是用来收集里面不等于0的数有多少个; int count=0; int[][] array2=new int[sum+1][3];// array2[0][0]=11; array2[0][1]=11; array2[0][2]=sum; for (int i = 1; i <array.length ; i++) { for (int j = 0; j <array.length-1 ; j++) { if(array[i][j]!=0){ count++; array2[count][0]=i; array2[count][1]=j; array2[count][2]=array[i][j]; } } } // 上面的操作就是将里面不等于0的数的位置找到,并将他们的坐标的行以及列记下来:以及将他们的记录在表中 System.out.println("----------------------"); for (int[] ints : array2) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } } }
运行得到的结果:
下面输出的值: 11,11,2 前面的两个就是表示 行以及例 ,2表示的是有两个不等于0的值:
3 ,4 ,1 表示的是:第三行,第四例里面所存放的值是 1 下面的都是一样的。
# 面向对象
面向对象以及面向过程,
在前面的基础部分阶段,我们重在的就是面向过程的代码;
简单来说:面向过程就是,一步一步的完成一件事情。也是做一些基础的代码
面向对象,就相当于是类,而面向对象就是用来处理比较复杂的问题。
属性+方法==类
面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织(封装)代码;
抽象:
三大特性:
继承
封装
多态
形参以及实参:
英语单词总结:
sort排序