一、首先基本数据类型和引用数据类型:
通过上面图片中的代码,判断测试类代码的输出结果
此时基本数据类型在传参时,把n = 8这个变量的值传给num后,num = 8;
再对num进行加1运算,num=9;
但是n的值是没有改变的。此时n的输出结果还是8。
但是引用数据类型stu在传参是 是将地址传给了student
此时stu指的是学生对象,年龄:18,student指的也是学生对象,年龄:18
student进行了加1运算,地址中的年龄值就变成了19
由于stu和student指的是同一个地址,所以stu的值为19
该程序最终的输出值为8—19
由此可知,基本数据类型,操作传递的是变量的值,改变一个变量的值,不会影响另一个变量的值。
引用数据类型(类,数组,接口),赋值就是把原对象的引用(可理解为内存地址)传递给另一个引用。
二、成员变量和局部变量的区别
1、成员变量是在类中声明的变量,在声明时可以不赋值,可以在类中和方法中进行赋值使用
2、局部变量是在方法中声明的变量,必须先声明并且赋值才能使用
3、成员变量和局部变量可以重名的
4、如果成员变量和局部变量重名,局部变量的优先级会高一些,优先使用局部变量
5、在同一个方法中,局部变量不能重名,在不同的方法中,局部变量可以重名
public class Teacher {
String name="赵四";
int age;
//定义方法的语法:public void 方法名(){方法体}
public void method1(){
age = 15;
System.out.print(name+"\t"); //abc
System.out.println(age); //abc
}
public static void main(String[]args){
Teacher ti = new Teacher();
ti.method1();
}
上述代码在类中定义了一个赋值的String变量name和一个没赋值的int变量age
这两个变量都是成员变量
在maethod1方法中对变量age进行了赋值。
最后分别输出了name和int
在main方法中调用了Teacher类中的method1方法。
最后的输出结果为赵四 15
三、方法重载的特点
1、在同一个类中
2、方法名相同
3、参数不同(参数个数不同或者参数类型不同)
4、对返回值没有要求
public class Counter {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b, double c) {
return a + b + c;
}
//在同一个类中,方法名相同,参数不同,对返回值没要求
public static void main(String[] args) {
Counter cou = new Counter();
int sum = cou.add(10, 20);
System.out.println("两个数字的和为:" + sum);
double sum2 = cou.add(15.5, 9.5, 4.5);
System.out.println("三个数字的和为:" + sum2);
}
}
为什么需要方法重载
同一个方法名,传递不同的参数,解决不同的问题。简化代码量。
四、构造方法的作用
构造方法作用就是对类进行初始化
构造方法分为无参构造方法和有参构造方法
构造方法的语法:
访问修饰符 构造方法的名字(构造方法参数列表){
方法体
}
构造方法的名字和类名一致。
构造方法定义的时候,不需要指定返回值
构造方法的个数是不定的。构造方法需要多少个参数,需要什么参数,根据你开发的时候,
创建对象的时候,想给对象的哪些属性赋值
构造方法的规则:
(1)如果一个类中没有构造方法,系统会提供一个默认的无参构造方法。
(2)如果类中有构造方法,则不会提供默认的无参构造方法。
(3)建议各位写代码的时候,类(带属性的类)中自己一定要加一个无参构造方法。
(很重要,框架创建对象的时候,调用类无参构造方法)
public class Dog {
String name;
/**小狗的名字*/
int health;
/**小狗的健康值*/
String strain;
/**小狗的品种*/
public Dog(){
System.out.println("Dog类的无参构造方法");
}
public Dog(String name, int health, String strain){
this.name = name;
this.health = health;
this.strain = strain;
}
在程序中使用了this关键字
this关键字的作用是
1、this关键字能够调用属性。(可以在构造方法中调用 也可以在实例方法中调用)
2、this关键字调用本类中的方法。 注意:别调用成死循环了
3、this关键字调用构造方法。如果在构造方法中使用this关键字调用其他的构造方法,this关键字应该放在构造方法的第一行。注意:别调用成死循环了
public class Penguin {
String name;
/** name 企鹅的名字 */
int age;
/** age 企鹅的年龄 */
String sex;
/** sex 企鹅的性别 */
public Penguin() {
System.out.println("这是Penguin类的无参构造方法");
}
public Penguin(String name, int age, String sex) {
this();
this.age = age;
this.name = name;
this.sex = sex;
}
在上面代码中,Penguin的有参构造方法中使用this关键字调用了Penguin的无参构造方法
把有参构造方法中的参数赋值给类中的各个变量。