1. 理解参数传递的方式——值传递。
2. 掌握方法重载的定义。
3. 掌握构造方法的定义方式。
4. 掌握构造方法的重载。
1. 请指出下面代码中存在的错误,并说明错误原因。
01public class Sample {
02public void amethod(int i,String s) {}
03public void amethod(String s,int i) {}
04public int amethod(String s1,String s2) {}
05public void amethod(int i,String myString) {}
06public void Amethod(int i,String s) {}
07
08}
2. 分析下列代码,给出输出结果 并进行解释(最好画出内存分析图)。
Java参数传递机制分析代码
1. public class PersonT {
2.
3. public void change(Person p) {
4. p.name = "mary";
5. p.age = 20;
6. }
7.
8. public void changeInt(int i) {
9. i = 8;
10. }
11. public void change1(Person p){
12. //新建对象,name为tpm,age为22
13. p = new Person("tom",22);
14. }
15. public static void main(String[] args) {
16. PersonT t = new PersonT();
17. Person p = new Person("john", 18);
18. Person p1 = p;
19. System.out.println(p);
20. //通过方法改变对象属性值
21. t.change(p1);
22. System.out.println(p1);
23. System.out.println("传回来的值指向是否一致:" + p.equals(p1));
24. //通过方法改变整数值
25. int i = 10;
26. System.out.println("i值为:" + i);
27. t.changeInt(i);
28. System.out.println("i值为:" + i);
29. //新建一对象,改变对象值
30. t.change1(p);
31. System.out.println(p);
32. }
33. }
34. class Person
35. {
36. String name;
37. int age;
38. public Person(String name,int age)
39. {
40. this.name=name;
41. this.age=age;
42. }
43. }
3. 构造方法的定义:
编写一个类Book,代表教材:
(1)具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,
并赋予默认值200。
(2)具有方法:detail,用来在控制台输出每本教材的名称和页数。
(3)具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制。
编写测试类BookTest进行测试:初始化一个Book对象,并调用该Book对象的detail方法,看看输出是否正确。
package cn.test;
import java.util.Scanner;
public class BookTest {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("输入名称:");
String ti=sc.next();
System.out.println("输入页数:");
int num=sc.nextInt();
Book b=new Book();//调用无参构造方法
b.detail();
Book g=new Book(ti,num);
g.detail();
}
public static class Book{
private String title;
private int pageNum;
public Book(){
pageNum=200;
title=null;
}
public Book(String title,int pageNum){
this.title=title;
this.pageNum=pageNum;
}
public void detail(){
System.out.println("名称:"+title);
if(pageNum<200){
System.out.println("输入页数不合要求!");
}else{
System.out.println("页数:"+pageNum);
}
}
}
}
4. 构造方法的重载:
编写一个类Book2,代表教材:
(1)具有属性:名称(title)、页数(pageNum)、类型(type)。
(2)具有方法:detail,用来在控制台输出每本教材的名称、页数、类型。
(3)具有两个带参构造方法:
第一个构造方法中,设置教材类型为“计算机”(固定),其余属性的值由参数给定。
第二个构造方法中,所有属性的值都由参数给定。
编写测试类Book2Test进行测试:分别以两种方式完成对两个Book2对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确。
package cn.test;
import java.util.Scanner;
public class Book2Test {
public static void main(String[] args){
Book2 a=new Book2("JAVA",340);
a.detail();
Book2 b=new Book2("JavaTest",450,"软件工程");
b.detail();
}
public static class Book2{
private String title;
private int pageNum;
String type;
public Book2(String title,int pageNum){
this.pageNum=pageNum;
this.title=title;
type="计算机";
}
public Book2(String title,int pageNum,String type){
this.title=title;
this.pageNum=pageNum;
this.type=type;
}
public void detail(){
System.out.println("名称:"+title+" 类型:"+type);
if(pageNum<200){
System.out.println("输入页数不合要求!");
}else{
System.out.println("页数:"+pageNum);
}
}
}
}