首页 > 代码库 > HeadFirstJava学习心得——方法
HeadFirstJava学习心得——方法
如果方法中传入的参数是对象而不是基本数据类型应该怎么办?
在java中传递的所有的东西都是值,但此值是变量所携带的值。引用对象的变量所携带的是远程控制而不是对象本身。如果对方法传入参数,实际上传入的是远程控制的拷贝。
方法可以声明为多个返回值吗?
方法只能声明单一的返回值。如果需要返回3个int值,就把返回值的类型声明为int数组,把值装进数组中返回。如果有混合的不同类型的值需要返回的时候,可以使用ArrayList。
setter和getter方法
setter和getter方法本质上是一种封装,防止外界用原点运算符直接操作,造成不当的后果。要设置属性的值必须统一通过setter方法,可以在setter方法中增加检验传入数据的值,从而使属性中的值不被随意修改。
class Student { private String name = "Tom"; private int age = 18; public String getName() { return name; } public void setName(String name) { if (name != null && !name.equals("")) { this.name = name; // 姓名不能为空 } } public int getAge() { return age; } public void setAge(int age) { if (age > 0) { this.age = age; // 年龄非负 } } } public class StudentDriver { public static void main(String[] args) { Student stu = new Student(); stu.setAge(-6); stu.setName(""); System.out.println("姓名:" + stu.getName() + " 年龄:" + stu.getAge()); } }
运行结果:
姓名:Tom 年龄:18
main()方法中的两个set操作并没有成功给stu完成属性的设置,stu的属性还是其默认值。在以上代码中利用setter()中的方法进行不良属性的过滤,从而避免了人为恶意地修改类中的属性。
实例变量与局部变量的区别:
- 实例变量声明在类中而不是方法中;
class Student {
private String name = "Tom";
private int age = 18;
//其他代码
}<span style="white-space:pre"></span>
- 局部变量声明在方法中;
class AddThing {
int a, b = 12; //实例变量
public int add() {
int total = a + b; //局部变量
return total;
}
}
- 局部变量在使用前必须进行初始化
class Foo{
public void go(){
int x;
int z = x + 3; //无法通过编译,因为在使用之前没有值
}
}
class Student { private String name = "Tom"; private int age = 18; //其他代码 }<span style="white-space:pre"></span>
class AddThing { int a, b = 12; //实例变量 public int add() { int total = a + b; //局部变量 return total; } }
class Foo{ public void go(){ int x; int z = x + 3; //无法通过编译,因为在使用之前没有值 } }
java中的相等
对于基本数据类型,使用“==”比较的是其中的字节序列,如:
<span style="white-space:pre"> </span>int a = 3; byte b = 3; String str = a==b?"相等":"不等"; System.out.println(str);
以上程序将会打印“相等”。
HeadFirstJava学习心得——方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。