day17
复习二分查找java
package com.saas; public class BinarySearch { public static void main(String[] args) { int[] nums = {12, 21, 33, 77, 89, 90}; System.out.println(binarySearch(nums, 21)); } public static int binarySearch(int[] arrs, int target){ // 刚开始让left为0, right为数组的长度减一 int left = 0, right = arrs.length - 1; // left值小于等于right值的时候,一直循环,否则循环结束, while (left <= right){ int mid = left + (right - left) / 2; // 去给定一半数据的中间数据 if(arrs[mid] == target){ // 数字中的中间元素正好是要查找的元素,则直接返回该中间元素的下标 return mid; } else if (arrs[mid] > target){ // 要查找的元素小于数组的中间元素,则在数组的左半部分查找,让right变成mid -1 right = mid - 1; }else { left = mid +1; // 要查找的元素大于数组的中间元素,则在数组的右半部分查找,让left变成mid + 1 } } return -1; // 当left小于等于right不成立时,代表数组里面的所有元素都已经比对完成,没有找到要查找的元素,当前结构还没有返回,则返回-1 } }
方法重载
public void m(int a){}
public void m(int b){}
这两个方法不是重载
public void m(int a, int b){}
public void m(int b, int a){}
这两个方法也不够成重载
重载是在同一个类中,多个方法,方法名相同,参数列表不同
参数列表不同包含以下三个点:
参数数据类型不同
参数个数不同
参数的顺序(不同类型参数的顺序)同步
与方法的返回值类型无关
与方法的访问修饰符无关
构造方法
构造方法:是类中的特殊方法,主要用于初始化对象
特点:
名称与类名完全相同,包括大小写
没有返回值类型,必须没有返回值类型,void也不行
创建对象时,触发构造方法的调用,不可以通过句点来手动调用,使用new关键字来调用
一个类中如果没有显式地定义构造方法,Java虚拟机会自动创建一个默认的无参的构造方法
对象的创建过程:
内存中开辟对象空间
为各个属性赋予初始值
执行构造方法中的代码
将对象的地址赋值给变量
package com.saas; public class Student { String name; int age; double score; boolean sex; public void Student(){ System.out.println(name); System.out.println(age); System.out.println(score); System.out.println(sex); System.out.println("this is Student constructor."); } }package com.saas; public class TestStudent { public static void main(String[] args) { Student s = new Student(); s.name = "guangong"; s.score = 99; s.sex = true; s.age = 30; System.out.println(s.name); System.out.println(s.sex ? "male" : "female"); System.out.println(s.age); System.out.println(s.score); System.out.println("=============="); s.Student(); } }构造方法必须没有返回值类型
构造方法一旦加上了返回值类型,那么该方法不再是构造方法,该方法属于实例方法
那么想要调用该实例方法,则必须通过对象.来调用
new关键字调用的构造方法是Java虚拟机默认提供的