按值传递与按引用传递
按值传递:传入的方法参数是原始数据类型,那么在方法内对该参数做任何处理都不会影响外部参数
按引用传递:传入方法的参数是引用数据类型,那么在方法内对该参数修改后外面的也一样受影响
public int a;
//按值传递,传入方法的参数是原始数据类型
//方法内对该参数做任何处理都不会影响外部参数
public void jisuan(int i) {
i=i+5;
System.out.println("在方法内"+i);//15
}
//按引用传递:传入的方法参数是引用数据类型
//方法内对该参数修改后外面的也一样受影响
// public void yingyong() {
// a = a+5;
// System.out.println("在方法内"+a);
// }
public void yingyong(demo2 js) {
js.a=js.a+5;
System.out.println("在方法内"+a);
}
public static void main(String[] args) {
demo2 js = new demo2();
int i= 10;
System.out.println("前"+i);//10
js.jisuan(i);//15 方法内不会影响外部的参数
System.out.println("后"+i);//10
System.out.println("------------------");
js.a=12;
System.out.println("前"+js.a);//12
js.yingyong(js);//17
System.out.println("后"+js.a);//17
}
传递.png
封装
封装的含义:
1:属性私有化
2:提供公开的get
和set
分别用于获取和设置
封装的好处
1:良好的封装能够减少耦合
2:类内部的结构可以自由修改
3:封装增加数据访问限制,提高安全性
老师类
public class Teacher {
public String name;//公共
private int age;//private int age 私有的只有本类可以访问
//属性私有化,提供公开方法
public void setAge(int myAge) {//给年龄设置参数
if(myAge<22) {
System.out.println("年龄错误");
}else {
age=myAge;
}
}
public int getAge() {
return age;
}
public void show() {
System.out.println("name:"+name+"age"+age);
}
测试类
public static void main(String[] args) {
Teacher t1 = new Teacher();
Scanner input = new Scanner(System.in);
System.out.println("请输入老师姓名");
t1.name=input.next();
System.out.println("请输入老师年龄");
两种写法
t1.setAge(input.nextInt());
/*
* int myAge=input.nextInt();
* t1.setAge(myAge)
*/
}
封装.png