4.5 方法参数
参数的两种类型:基本类型和引用类型
参数内外的区别:实参与形参
例子:基本类型方法形参修改实参值(失败)
public class Main {public static void main(String[] args){
Main solution = new Main();
int x = 5;
solution.changeX(x);
System.out.println(x);
}
private void changeX(int x){
x = 3;
}
}
例子:方法内引用类型的字段修改值(成功)
public class Main {public static void main(String[] args){
Main solution = new Main();
MyClass c = solution.new MyClass();
System.out.println(c.studentCnt);
solution.changeClass(c);
System.out.println(c.studentCnt);
}
private void changeClass(MyClass c){
c.studentCnt = 10;
}
class MyClass{
int studentCnt=5;
}
}
例子3:修改对象引用(失败)
public class Main {public static void main(String[] args){
Main solution = new Main();
MyClass c = solution.new MyClass();
System.out.println(c.studentCnt);
solution.changeClass(c);
System.out.println(c.studentCnt);
}
private void changeClass(MyClass c){
c=new MyClass();
c.studentCnt=7;
}
class MyClass{
int studentCnt=5;
}
}
总结:
1. 方法内不能修改基本类型传入参数的值
2. 方法内可以修改引用类型内的字段值
3. 方法内不能修改应用类型传入的参数引用
4.6 构建对象
4.6.1 重载
GregorianCalendar c = new GregorianCalendar();GregorianCalendar c2 = new GregorianCalendar(2099,Calendar.DECEMBER,31);
类似上述代码这样, 同名,不同参数的方法或者构造,叫做重载。
重载要求:同名、不同参数长度或者不同参数类型的构造器或者是方法,注意不能通过形参的名称进行匹配,必须是类型。
4.6.2 全局变量的默认值
全局变量和局部变量不同,类型具有默认值。整型=0,浮点型=0,布尔=false,字符=空格(ascii码为0),引用类型具有默认值null。
public class Main {byte mByte;
short mShort;
int mInt;
long mLong;
float mFloat;
double mDouble;
boolean mBoolean;
char mCharacter;
Object mObject;
public static void main(String[] args){
Main solution = new Main();
System.out.println(solution.mByte);
System.out.println(solution.mShort);
System.out.println(solution.mInt);
System.out.println(solution.mLong);
System.out.println(solution.mFloat);
System.out.println(solution.mDouble);
System.out.println(solution.mBoolean);
System.out.println(solution.mCharacter);
System.out.println(solution.mObject);
}
}
4.6.3 默认构造器
类在没构造器的情况下,系统会默认给类加一个无参构造器,有构造器的情况,则不会有默认构造器。
public class Main {public static void main(String[] args){
Main solution = new Main();
A a = solution.new A();
B b = solution.new B(3);
B b2 = solution.new B();
}
class A{}
class B{
int a;
B(int a){
this.a = a;
}
}
}
4.6.4 显示初始化全局变量
全局变量初始化三种方式:
1. 直接赋值
2. 初始化块
3. 构造器
其中执行顺序为直接赋值->初始化快->构造器
系列内容:
《Java 核心技术 卷1》 笔记:第一章 Java程序设计概述
《Java 核心技术 卷1》 笔记:第二章 Java程序设计环境
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(1)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(2)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(3)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(4)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(5)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(6)
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(7)大数处理、数组、多维数组、控制台传参
《Java 核心技术 卷1》 笔记 第四章:类与对象
《Java 核心技术 卷1》 笔记 第四章:类与对象(2) GregorianCalendar 与 类的基本组成
《Java 核心技术 卷1》 笔记 第四章:类与对象(3) 构造器全局私有方法
喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。
关注公众号,互相学习:钰娘娘知识汇总