今天了解了一下冒泡排序和二维数组 ,着重学习了java中类与方法的初步构建。
从底部找到两个相邻的元素,比较,找到较小的,往上放 经过一次交换,最小的就在最上面
示例:
public class BubbleSort {
public static void main(String[] args) {
int[] nums = { 1, 5, 8, 3, 4, 5, 10 };
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - i - 1; j++) {
if (nums[j] > nums[j + 1]) {
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
for (int num : nums) {
System.out.print(num + " ");
}
}
}
二维数组本质上是以数组作为数组元素的数组。
二维数组的元素是一维数组。
两种初始化形式
格式1:
数据类型 数组名 [ ][ ] = new 数据类型[m][n]
数据类型 [ ][ ] 数组名 = new 数据类型[m][n]:
举例:
int [ ][ ] arr=new int [5][3]; //也可以理解为“5行3例”
格式2:
数据类型 [ ][ ] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};
举例:
int [ ][ ] arr={{22,15,32,20,18},{12,21,25,19,33},{14,58,34,24,66},};
格式3:
数据类型 [ ][ ] 数组名 = new 数据类型[m][ ]:
举例:
int[][] nums3 = new int[4][];//二维数组中定义四个一维数组,每个一维数组长度没有指定
nums3[0] = new int[] { 1, 2, 3, 4, 5, 6 };//必须要new
nums3[1] = new int[] { 2, 3, 4 };
.......
遍历:两个for循环
外循环可以使用索引,内循环使用foreach较为方便
类是具有相同特点(属性和行为)的抽象模板,通过模板可以创建若干的对象
Java中,程序以类为单位。
先有类—》对象
创建对象的语法之一:
声明:声明一个对象,包括对象名称和对象类型
实例化:使用关键字new来创建一个对象
初始化:使用new创建对象时,会调用构造方法初始化对象
如:
Student stu=new Student();
new关键字用于创建对象,分配内存空间
Student():构造方法
类的组成:属性与方法
如:
public class Student {
String name;
int age;
}
通过成员变量定义name 和age就是属性
在主函数中可以被调用:
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();//实例化
Student s2 = new Student();
s1.name = "张三";
s1.age = 12;
s2.name = "李四";
s2.age = 13;
System.out.println(s1.name + s1.age);
System.out.println(s2.name + s2.age);
}
}
注意:
在静态方法中,不能直接访问非静态成员(包括方法和变量)。因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。例如一个类 Student 表示学生,它有一个变量String name。如果这个类没有被实例化,则它的 name 变量也就不存在。而非静态方法需要访问非静态变量,所以对非静态方法的访问也是针对某一个具体的对象的方法进行的。对它的访问一般通过 objectName.methodName(args……) 的方式进行。而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。因此,在静态方法内部是不可以直接访问非静态成员的。
方法也放在对应的类中
声明语法:
返回值类型 方法名(参数列表){
方法体
}
形式1:无参无返回值
无返回值的情况下 返回值类型是void
形式2:有参无返回值
参数数量任意,多个参数以逗号分隔,声明时与变量声明类似;该参数也称为形式参数(形参)
形式3:无参有返回值
返回值类型不是void 应该是与方法体中return返回的数据保持兼容
形式4:有参有返回值
有参时参数一定要对应着传入,这种参数称为实际参数(实参)
Java语言与其他编程语言不同,它有严格的异常处理机制,如果需要抛出异常的代码块中没有捕获异常,程序将不会成功编译,换言之:未使用异常捕获、异常捕获方式不正确等,都将导致代码不能被jvm编译。
所以,在方法中就要对传入参数的各种情况进行考虑比如null。
根据场景可以返回合理的值或抛出异常。