狂神说Java
Java数组03:三种初始化及内存分析
package array;
public class ArrayDemo02 {
public static void main(String[] args) {
//静态初始化: 创建 + 赋值
int[] a = {1,2,3,4,5,6,7,8};
System.out.println(a[0]);
//Man[] mans = {new Man(),new Man()};
//动态初始化: 包含默认初始化
int[] b = new int[10];
b[0] = 10;
System.out.println(b[0]);
System.out.println(b[1]);
}
}
Java数组04:下标越界及小结
- 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型。
- 数组的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组本身就是对象,数组对象本身是在堆中。
ArrayIndexOutOfBoundsException: 数组越界
小结:
- 数组是相同数据类型的有序集合
- 数组也是对象。数组元素相当于对象的成员变量。
- 数组长度是确定的,不可变的。如果越界,则报:ArrayIndexOutOfBoundsException
Java数组05:数组的使用
package array;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//打印全部的数组元素
for(int i = 0; i < arrays.length; i++)
{
System.out.println(arrays[i]);
}
System.out.println("================");
//计算所有元素的和
int sum = 0;
for (int i = 0; i < arrays.length; i++)
{
sum += arrays[i];
}
System.out.println("sum="+sum);
//查找最大元素
int max = arrays[0];
for(int i = 1; i < arrays.length; i++)
{
if(arrays[i] > max)
{
max = arrays[i];
}
}
System.out.println("max="+max);
}
}
package array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//JDK1.5,没有下标
// for (int array : arrays)
// {
// System.out.println(array);
// }
printArray(arrays);
}
//打印数组元素
public static void printArray(int[] arrays)
{
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
}
package array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//JDK1.5,没有下标
// for (int array : arrays)
// {
// System.out.println(array);
// }
// printArray(arrays);
//
int[] reverse = reverse(arrays);
printArray(reverse);
}
//打印数组元素
public static void printArray(int[] arrays)
{
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
//反转的 *** 作
for (int i = 0,j = result.length-1; i < arrays.length ; i++,j--) {
result[j] = arrays[i];
}
return result;
}
}
Java数组06:二维数组
package array;
public class ArrayDemo05 {
public static void main(String[] args) {
//[4][2]
/*
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
printArray(array[0]);
System.out.println(array[0][0]);
}
public static void printArray(int[] arrays)
{
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
}
package array;
public class ArrayDemo05 {
public static void main(String[] args) {
//[4][2]
/*
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
// printArray(array[0]);
// System.out.println(array[0][0]);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
public static void printArray(int[] arrays)
{
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
}
Java数组07:Arrays类讲解
Arrays类
package array;
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
int[] a = {1,2,3,4,9090,31231,543,21,3,23};
System.out.println(a); //[I@1b6d3586
//打印数组元素Arrays.toString
// System.out.println(Arrays.toString(a));
// printArray(a);
Arrays.sort(a);//数组进行排序:升序
System.out.println(Arrays.toString(a));
Arrays.fill(a,2,4,0);//数组填充
System.out.println(Arrays.toString(a));
}
public static void printArray(int[] a)
{
for (int i = 0; i < a.length; i++) {
if(i == 0)
{
System.out.print("[");
}
if(i == a.length-1)
{
System.out.print(a[i]+"]");
}
else
{
System.out.print(a[i]+", ");
}
}
}
}
Java数组08:冒泡排序
package array;
import java.util.Arrays;
public class ArrayDemo07 {
public static void main(String[] args) {
int[] a = {1,4,5,6,72,2,2,2,25,6,7};
int[] b = sort(a); //调用完我们自己写的排序方法以后,返回一个排序后的数组
System.out.println( Arrays.toString(b));
}
//冒泡排序
//1.比较数组中,两个相邻的元素,如果第一个元素比第二个数大,我们就交换他们的位置
//2.每一次比较,都会产生出一个最大、或者最小的数字
//3.下一轮可以少一次排序
//4.依次循环,直到结束!
public static int[] sort(int[] array)
{
//临时变量
int temp = 0;
//外层循环,判断我们这个要走多少次
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;
}
}
}
return array;
}
}
优化
package array;
import java.util.Arrays;
public class ArrayDemo07 {
public static void main(String[] args) {
int[] a = {1,4,5,6,72,2,2,2,25,6,7};
int[] b = sort(a); //调用完我们自己写的排序方法以后,返回一个排序后的数组
System.out.println( Arrays.toString(b));
}
//冒泡排序
//1.比较数组中,两个相邻的元素,如果第一个元素比第二个数大,我们就交换他们的位置
//2.每一次比较,都会产生出一个最大、或者最小的数字
//3.下一轮可以少一次排序
//4.依次循环,直到结束!
public static int[] sort(int[] array)
{
//临时变量
int temp = 0;
//外层循环,判断我们这个要走多少次
for (int i = 0; i < array.length; i++) {
boolean flag = false; //通过flag标识位减少没有意义的比较
//内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置
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;
flag = true;
}
}
if(flag==false)
{
break;
}
}
return array;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)