1.万事万物皆对象
没啥好说的
说一下匿名对象:
new Phone().call();//只能调用一次
mall.show(p);//有名儿
mall.show(new Phone());//匿名--赋值给形参了,可以用多次
2.整理一下Array。熟悉oop
public class ArrayMethod {
//Pro01--package02拿来吧你
//求数组最大值
public int getMax(int arr[]) {
int maxValue = arr[0];
for(int i = 0;i<arr.length;i++) {
if(maxValue < arr[i]) {
maxValue = arr[i];
}
}
return maxValue;
}
//求数组最小值
public int getMin(int arr[]) {
int minValue = arr[0];
for(int i = 0;i<arr.length;i++) {
if(minValue > arr[i]) {
minValue = arr[i];
}
}
return minValue;
}
//求数组平均值
public int getAvg(int arr[]) {
return getSum(arr)/arr.length;
}
//求数组总和
public int getSum(int arr[]) {
int sum = 0;
for(int i = 0;i<arr.length;i++) {
sum+=arr[i];
}
return sum;
}
//遍历
public void print(int arr[]) {
for(int i = 0;i<arr.length;i++) {
System.out.print(arr[i]+"\t");
}
}
//复制
public int[] copy(int arr[]) {
int[] array = new int[arr.length];
for(int i = 0;i<array.length;i++) {
array[i] = arr[i] ;
}
return array;
}
//反转
public void reverse(int arr[]) {
for(int i = 0;i<arr.length / 2;i++) {
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
//排序
public void sort(int arr[]) {
for(int i = 0;i<arr.length - 1;i++) {
for(int j = 0;j<arr.length - 1 - i;j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//查找指定元素
public int getIndex(int arr[],int dest) {
for(int i = 0;i<arr.length;i++) {
if(dest == (arr[i])) {//equals和==的区别!!!
return i;
}
}
return -1;
}
}
public class ArrayMethodTest {
public static void main(String[] args) {
ArrayMethod m = new ArrayMethod();
int arr[] = new int[] {2,-56,77,92,16,-20,-44,100};
int max=m.getMax(arr);
System.out.println("最大值为:"+max);
System.out.println("遍历:");
m.print(arr);
System.out.println();
System.out.println("排序:");
//m.sort(arr);
m.print(arr);
System.out.println();
int sum = m.getSum(arr);
System.out.println("总和为:"+sum);
System.out.println();
int index = m.getIndex(arr, 100);
if(index>0) {
System.out.println("找到了,索引为:"+index);
}else {
System.out.println("没找到~!");
}
}
}
3.方法重载overload
两同一不同:同类同方法名,不同参数列表(个数、类型)
可变个数形参的方法
public void show(int i){}
public void show(String s){}
public void show(String...strs){}//几个参数都能识别
//和数组功能一样。多个参数,选一个就行。
public void show(String[] strs){}//3 4 冲突,不构成重载
public void show(int i,String...strs){}//可变参数定义时放在最后且只有一个
4.方法参数的值传递机制
4.1基本数据类型:赋值的是数据值
public static void main(String[] args) {
int m = 10;
int n = 20;
System.out.println("m:"+m+",n:"+n);//10,20
ValueTransfer v = new ValueTransfer();
v.swap(m,n);
//System.out.println("m:"+m+",n:"+n);////10,20
}
public void swap(int m ,int n){
int temp = m;
m = n;
n = temp;
System.out.println("m:"+m+",n:"+n);//20,10
}
4.2引用数据类型:赋值的是保存数据值的地址
public class ValueTransfer1 {
public static void main(String[] args) {
Data data = new Data();
data.m = 10;
data.n = 20;
System.out.println("m:"+data.m+",n:"+data.n);//10,20
ValueTransfer1 v = new ValueTransfer1();
v.swap(data);
System.out.println("m:"+data.m+",n:"+data.n);//20,10
}
public void swap(Data data){
int temp = data.m;
data.m = data.n;
data.n = temp;
}
}
class Data{
int m;
int n;
}
4.3练习
(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
(2)定义一个类PassObject,类中定义一个方法printAreas(),该方法的定义如下:
public void printAreas(Circle c, int time)
在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。
例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。
public class PassObject {
public void printAreas(Circle1 c, int time) {
System.out.println("Radius\t\tArea");
for(int i = 1;i<=time;i++) {
c.radius = i;
double area = c.findArea();
System.out.println(i+"\t\t"+area);
}
c.radius=time+1;
}
public static void main(String[] args) {
PassObject p = new PassObject();
Circle1 c = new Circle1();
p.printAreas(c,5);
System.out.println("Now radius is:"+c.radius);
}
}
class Circle1{
double radius;
//方式一:
public double findArea() {
double area = Math.PI*radius*radius;
return area;
}
}
5.递归
没啥好写的
举个例子:没得例子。