成员方法使用细节和练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成员方法使用细节和练习相关的知识,希望对你有一定的参考价值。

1. 成员方法使用细节 208

成员方法使用细节和练习_System

//成员方法使用细节
public class Test26

public static void main(String[] args)

A a = new A();
a.print(2);
a.sayOk();
a.m1();


class A

//同一类中的方法调用:直接调用
public void print(int n)

System.out.println("你好世界");


public void sayOk()

print(10);//直接调用print方法


//跨类中的方法A类调用B类中的方法:需要通过对姓名调用
public void m1()

//创建一个B类对象,然后在调用方法即可
System.out.println("m1方法被调用");
B b = new B();
b.h1();
System.out.println("m1继续执行");



class B

public void h1()

System.out.println("中国");

2. 成员方法练习 209

2.1 编写类 AA ,有一个方法:判断一个数是奇数 odd 还是偶数, 返回 boolean

//编写类 AA ,有一个方法:判断一个数是奇数 odd 还是偶数, 返回 boolean 
public class Test26

public static void main(String[] args)

AA a = new AA();
if(a.isOdd(4))

System.out.println("是偶数");

else

System.out.println("是奇数");



class AA

//思路
//1. 方法的返回类型 boolean
//2. 方法的名字 isOdd
//3. 方法的形参 (int num)
//4. 方法体 , 判断
public boolean isOdd(int num)

// if(num%2==0)
//
// return true;//偶数
//
// else
//
// return false;//奇数
//
// //简化
// return num%2==0?true:false;
//再简化
return num%2==0;

2.2 根据行、列、字符打印 对应行数和列数的字符,比如行:4,列:4,字符#,则打印相应的效果

//根据行、列、字符打印 对应行数和列数的字符,比如
//行:4,列:4,字符#,则打印相应的效果
public class Test26

public static void main(String[] args)

AA a = new AA();
a.print(4,4,#);


class AA

//思路
//1. 方法的返回类型 void
//2. 方法的名字 print
//3. 方法的形参 (int row, int col, char c)
//4. 方法体 , 循环
public void print(int row,int col,char c)

for(int i=0;i<row;i++)//行

for(int j=0;j<col;j++)//打印列

System.out.print(c);

System.out.println();//换行


3. 成员方法传参机制 210

3.1 基本数据类型的传参机制

3.1.1 基本数据类型,传递的是值,形参的任何改变不会影响实参

3.1.2 判断输出 210

成员方法使用细节和练习_成员方法_02

public class Test26

public static void main(String[] args)

AA aa = new AA();
int a=10;
int b=20;
aa.swap(a,b);
System.out.println("a="+a+"b="+b);//10 20


class AA

public void swap(int a,int b)

System.out.println("交换前:"+a+" "+b);//10 20
//交换
int tmp =a;
a=b;
b=tmp;
System.out.println("交换后:"+a+" "+b);//20 10

3.2 引用数据类型的传参机制 211

3.2.1 引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!

3.2.2 看案例

B 类中编写一个方法 test1,可以接收一个数组,在方法中修改该数组,看看原来的数组是否变化?会变化

public class Test26

public static void main(String[] args)

int arr[] = 1,2,3;
B b = new B();
b.test1(arr);//调用方法

System.out.println("\\nmain的 arr 数组");
for(int i=0;i<arr.length;i++)

System.out.print(arr[i]+" ");//200 2 3

System.out.println();


class B

public void test1(int arr[])

arr[0]=200;
System.out.println("test1的 arr 数组");
for(int i=0;i<arr.length;i++)

System.out.print(arr[i]+" ");//200 2 3


B 类中编写一个方法 test2,可以接收一个 Person(age,sal)对象,在方法中修改该对象属性,看看原来的对象是否变 化?会变化.

public class Test26

public static void main(String[] args)

B b = new B();
Person p = new Person();
p.name = "jack";
p.age = 10;

b.test2(p);//调用方法
System.out.println("main中的p="+p.age);//10000


class Person

String name;
int age;

class B

public void test2(Person p)

p.age=10000;

4. 成员传参机制练习 212

4.1 将p=null,判断输出

public class Test27

public static void main(String[] args)

B b = new B();
Person p = new Person();
p.name = "jack";
p.age = 10;

b.test2(p);//调用方法
//如果test2执行p=null,那么结果是10
System.out.println("main中的p="+p.age);//10


class Person

String name;
int age;

class B

public void test2(Person p)

p=null;////注意是p置空是断掉了test2中的p与Person对象的联系,并不会影响main中的p与Person对象的联系

4.2 编写类 MyTools 类,编写一个方法可以打印二维数组的数据。

public class Test27

public static void main(String[] args)

int arr[][]=1,2,3,4,5,6,7,8,9;
Tool t = new Tool();
t.print(arr);


class Tool

public void print(int arr[][])

for(int i=0;i<arr.length;i++)

for(int j=0;j<arr[i].length;j++)

System.out.print(arr[i][j]+" ");

System.out.println();


4.3 编写一个方法 copyPerson,可以复制一个 Person 对象,返回复制的对象。克隆对象, 注意要求得到新对象和原来的 对象是两个独立的对象,只是他们的属性相同 213

public class Test27

public static void main(String[] args)

Person p = new Person();
p.name = "米兰";
p.age = 100;
//创建tools
MyTools tools = new MyTools();
Person p2 = tools.copyPerson(p);
//到此 p 和 p2 是 Person 对象,但是是两个独立的对象,属性相同
System.out.println("p的属性 age="+p.age+" 名字="+p.name);
System.out.println("p2的属性 age="+p2.age+" 名字="+p2.name);

//这里提示: 可以同 对象比较看看是否为同一个对象
System.out.println(p==p2);//false


class Person

String name;
int age;

class MyTools

//编写方法的思路
//1. 方法的返回类型 Person
//2. 方法的名字 copyPerson
//3. 方法的形参 (Person p)
//4. 方法体, 创建一个新对象,并复制属性,返回即可
public Person copyPerson(Person p)

Person p2 = new Person();//创建一个新对象
p2.name = p.name;//把原来对象的名字赋给 p2.name
p2.age = p.age;//把原来对象的年龄赋给 p2.age
return p2;

5. 方法递归调用 215

简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变 得简洁

5.1 例1 判断输出

成员方法使用细节和练习_方法传参_03

public class Test27

public static void main(String[] args)

T t1 = new T();
t1.test(4);


class T

public void test(int n)

if(n>2)

test(n-1);

System.out.println("n="+n);

5.2 例2 阶乘

成员方法使用细节和练习_数组_04

public class Test27

public static void main(String[] args)

T t1 = new T();
int res = t1.factorial(5);
System.out.println("res="+res);


class T

public int factorial(int n)

if(n==1)

return 1;

else

return factorial(n-1)*n;//factorial阶乘的意思


以上是关于成员方法使用细节和练习的主要内容,如果未能解决你的问题,请参考以下文章

codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数

抽象和虚方法细节

[Java基础]反射获取成员方法并使用练习

java 继承练习题3

类的继承相关练习问题

php面向对象成员方法(函数)练习