方法的可变个数参数
/**
* 用数组的方式来传递可变个数的参数
* @param args
*/
public void printInfo(String[] args) {//问题,我们能够打印的信息都来源于方法的参数。方法参数的传递
//我现在可能给方法要传递的不同的参数?
for(int i=0;i<args.length;i++) {
System.out.println(args[i]);
}
}
/**
* 用Java特有的。。。的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同
* @param args
*/
public void printInfo1(String...args) {
for(int i=0;i<args.length;i++) {
System.out.println(args[i]);
}
方法的参数传递
JVM内存模型
值传递: Java里方法的参数传递方式只有一种。(将实际参数值的副本传入方法中,而参数本身不受影响
基本数据类型,就是把实参复制值
引用对象
方法的参数传递
1.如果方法的形参是基本数据类型,那么实参像形参传递参数时,就是直接传递值,就是把实参的值再复制给形参
2.如果 方法的形参是对象,那么实参(实际的对象)。向形参传递参数时,也是把值传给形参,这个值时实参在栈内存中的值,也就是引用对象在堆的地址
基本数据类型保存在栈内存,引用对象在栈内存中保存的时引用对象的地址。那么方法的参数传递是传递值(是变量在栈内存当中的值)
包(概念类似文件夹)Package
层级结构 . (文件夹套文件夹,如com包下cn下的test包com.cn.test)
import 引包,指明用哪个包里的类 .*全引用
封装和隐藏
有的变量任意赋值可能不符合常理,如年龄=-78,是不对的。这时需要封装。将数据声明为私有的(private),再提供公共的(public)方法。
四种访问权限修饰符
public>protected>default>private
package d6Test;
public class Person {
private int age;
public void printAge(){
System.out.println("年龄是:"+age);
}
public int getAge() {
return age;
}
public void setAge(int a) {
if(a<=130&&a>=0) {
age=a;
}else {
System.out.println("输入的年龄"+a+"不在范围内");
}
}
}
//
package d6Test;
public class TestPerson {
public static void main(String[] args) {
Person p=new Person();
p.setAge(23);
p.getAge();
p.printAge();
}
}
构造器
new对象的根本原理:通过类的构造方法