Java SE 学习笔记-Day 03

for循环

  • 写代码快捷操作:
    若知道循环次数,比如100,先写100.for回车,循环模板即弹出来了。

  • 以下是一个死循环。

for(;;)
{
    
}
  • 增强型for循环

    int [] array = {20,199,23}
    for (int x :array )
    {
    	System.out.println(x);
    }
    

**值传递与引用传递 **

Java内的基础类型数据传递都是值传递,java中实例对象的传递是引用传递。

重载

类里面可以具有相同方法名,不同参数列表(参数类型、个数、顺序任一不同)的一种机制。

命令行传参

使用java命令执行一个类时,可以附带参数给main方法传参。

java com.kuang.method.Demo my name is lpf

注意:

采用了包机制时,编译时可以在源代码目录下编译,运行时,需要回退到最顶级目录src(最外层包在这个目录下)运行。上述例子即回退到了src目录,运行com/kuang/method/Demo。

可变参数

从Java1.5开始,Java支持传递同类型的可变参数给一个方法。参数数量不确定的时候,可以采用可变参数。注意Java中的可变参数不同于C++中的,实际上,这个可变参数相当于一个数组,就像通过命令行传值给args一样。可以在方法内使用length属性。

给采用了可变参数的方法传参时,可以传0到多个。

public class HelloWorld {
    public static void main(String[] args) {
        HelloWorld.my_max(2,3,45,5);
    }

    public static void my_max(double ... number){ // 注意是三个点
        if (number.length == 0)
        {
            return;
        }
        double max = number[0];
        for (int i = 1; i < number.length; i++) {
            if (number[i] > max)
                max = number[i];
        }
        System.out.println("max value is "+ max);
    }
}

Java内存模型

  • 堆:存放动态申请new出来的变量(对象、数组)。
  • 栈:存放局部变量(基本类型变量、指向对象的引用变量)。

数组初始化

Java中的数组不同与C++中的数组,C++中的数组声明后就分配了内存空间,而Java中的数组仅仅只是分配了数组引用的空间,所以Java中不能这样进行声明数组int a[2],即[]中不能有数字。同时也不能

  • 静态初始化:由程序员在初始化数组时为数组每个元素赋值,由系统决定数组的长度。故然可以在声明对象数组时,对每一个元素单独调用构造器。

    int [] a = {1,2,3,4};
    HelloWorld [] my = {new HelloWorld(1,2),new HelloWorld(3) };
    
  • 动态初始化:由程序员在初始化数组时指定数组的长度,由系统为数组元素分配初始值。所以这种方式下不能使用构造函数。

    int [] b = new int[4];
    b[0] = 1;
    b[1] = 2;
    Man a = new Man[2]{} // 错误!!!
    Man a = new Man[2]() //  错误!!!
    Man a = new Man() // 单个对象,可以!!!
    
  • 默认初始化

    数组也是引用类型,也是一个对象,只要数组空间一经分配,每个元素将会默认初始化为0。

数组的使用

当需要打印输出或遍历所有元素同时又不需要使用索引时,可以使用for-each。(在IDEA中直接输入数组名.foreach即可自动生成)

// 多维数组定义方式
int [][] arrays = {{2,3},{3,5}}; 
int [][] arrays = new int[2][3];
// 采用foreach二维数组遍历
int [][] array ={{2,3},{3,5}};
for (int [] row: array) {
    for (int ele: row) {
        System.out.print(ele+" ");
    }
    System.out.println();
}

其中数组可以使用API 中的Arrays类

  • 填充值:fill
  • 排序:sort
  • 判断数组中的元素是否相等:equals
  • 查找数组元素:binarySearch
  • 将数组转换成数组输出(静态方法) :toString

冒泡排序

 public static void sort(int [] array)
    {
        // 标记一趟排序是否存在交换,true表示无交换,已排好
        boolean flag = true;
        // 外层循环 length - 1次
        for(int i=0;i< array.length - 1;i++)
        {
            for(int j =0;j< array.length-1-i;j++)
            {
                if(array[j] > array[j+1]) {
                    int temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;
                    flag = false;
                }
            }
            if(flag == true)
                break;
        }
    }
posted @ 2021-03-09 01:27  蓬飞  阅读(42)  评论(0)    收藏  举报