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;
}
}

浙公网安备 33010602011771号