传基本类型的值
Value的值付给了vaule1
只会影响value的值,不会改变变量
方法执行完毕之后,value1就会被销毁。
(圈内外都有小鸡,改变圈内小鸡不影响圈外小鸡)
如果不能隐式转换,那么只能进行强制转换。
局部变量必须赋值,成员变量会在创建对象时在内存中默认初始化。
属性默认值:
Int------0
String ---------null
Char ---------(空格)
Boolean---------false
传值给引用类型
调用类类型方法之后,可以改变内圈小鸡,会影响外圈小鸡,说明圈内外是同一个小鸡。
即:
此传值也对接口和数组等同使用。
如果想类类型方法执行完毕后不改变类类型对象的属性值,
public class People {
private int age;//代表整数和小数
private String name;//代表引用类型
private char score;
private boolean sex;
public void setScore(char score) {
this.score = score;
}
public char getScore() {
return score;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public boolean isSex() {
return sex;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class Test {
public static void main(String[] args) {
// 传值(调用带参方法)
// 1 传基本类型的值
// 2 传引用类型
// 根据OOP思想,会独立的逻辑写在单独的方法中,在main中调用
test();
// 1 传常量
test1(10);
// 2 传变量(类型匹配)
int value = 9;
// 传的仅仅是值,方法体内部无论怎么操作这个值,都不会影响外部的变量value。
test1(value);
System.out.println("after test1 method is called:" + value);
// 3 传变量(类型不匹配)
double value2 = 3.14;
int value3 = (int)value2;
test1(value3);
// 4 传引用类型(当然也会涉及到上面的三种情况,上面的三种情况是测试基本数据类型)
// 类,接口,数组
People zhangsanPeople = new People();
System.out.println("zhangsan的默认年龄为:"+ zhangsanPeople.getAge());
System.out.println("zhangsan的默认姓名:" + zhangsanPeople.getName());
System.out.println("zhangsan的默认成绩:" + zhangsanPeople.getScore() + "1111");
System.out.println("zhangsan的默认性别:" + zhangsanPeople.isSex());
test2(zhangsanPeople,10);
// 传引用相当于传递的是同一个对象(底层传递的是内存地址),所以在调用的方法中
// 操作这个对象,相当于操作方法外的对象,也就是操作的是同一个对象。
System.out.println("调用test2方法之后,zhangsan的年龄为:" + zhangsanPeople.getAge());
// int age;
// System.out.println(age);
}
private static void test2(People people,int age) {
// 下面这行代码会影响外部对象的属性值
// people.setAge(100);
// 下面的代码新创建了一个对象,使用的也只是外部传递过来对象的属性值,当然
// 改变这个新对象,并不会影响外部的对象。
People lisiPeople = new People();
lisiPeople.setAge(people.getAge());
lisiPeople.setAge(1000);
}
private static void test1(int value1) {
// TODO Auto-generated method stub
value1 += 10;
System.out.println("value:" + value1);
}
private static void test() {
// TODO Auto-generated method stub
System.out.println("test");
}
}