Day04
1、数组
数组永远是对象
①数组能够使用位置索引来快速、随机地存取其中的元素
②数组本身绝对不会是主数据类型。不管数组带有什么,它一定是对象!
③数组中的每个元素都是变量,会是8种主数据类型变量中的1种或引用变量
Dog dog1 = new Dog();
Dog[] myDogs = new Dog[3];
myDogs[2] = dog1;
存取数组中的元素通过数组索引(位置)来操作特定对象
myDogs[0].name = "WangWang";
myDogs[0].bark();
2、方法的参数
方法会运用形参,调用的一方会传入实参
注: ①实参是传给方法的值。
②当它传入方法后就成了形参。
③参数与局部变量一样。有类型与名称,可以在方法内运用。
④若某个方法需要参数,就一定得传东西给该方法,且该东西须为合适类型的值。
void bark ( int numOfBarks ){
while ( numOfBarks > 0 ){
System.out.println("ruff");
numOfBarks = numOfBarks - 1;
}
}
Dog d = new Dog();
d.bark(3);
numOfBarks为形参,3【强调,int类型!】为实参
方法中可以有多个参数。
多个参数在声明和传入时都要用逗号隔开,并且一定要保证参数的数量、类型和顺序完全正确。
3、方法的返回值
方法可以有单一的返回值。每个方法都声明返回的类型,回传给调用方指定的类型值。若想返回多个值,可把返回类型改为数组。
若一个方法的声明有返回值,就必须要返回所声明类型的值。
4、Java值传递
Java时通过值传递的即通过拷贝传递。
引用对象的变量所携带的时远程控制,若向方法传入参数实则传入远程控制的拷贝。
void go ( int z){ }
foo.go(x);
以x为参数传入go()这个方法中,x的字节组合会被拷贝并装进z中
void go ( int z){
z = 0;
}
在方法中改变z的值,此时x的值不改变
传给z的只是一个拷贝,方法无法改变调用方所传入的参数
5、getter与setter
getter返回实例变量的值,setter是取用一个参数来设定实例变量的值。
6、封装
基本原则:将实例变量标记为私有(private),提供公有(public)的getter与setter来控制存取动作
int x = 3 + 24;
int x = 3 + one.getSize();
任何有值可以被运用到的地方都可以用调用方法的方式来取得该类型的值
7、默认值
实例变量永远都有默认值。
即使没有明确赋值或者没有调用setter方法,仍然有值。
int | 0 |
---|---|
float | 0.0 |
boolean | false |
char | 0 |
reference | null |
null代表没有操作对象的远程控制,是个引用
8、实例变量与局部变量
1.实例变量声明在类内
2.局部变量声明在方法中
3.局部变量在使用前必须初始化,因为它没有默认值
9、==与equals()
①==:两个主数据类型是否相等,两个引用变量是否引用到堆上的同一个对象,两个引用是否都指向同一对象
②equals():两个对象是否真的(意义上)相等
Foo a = new Foo();
Foo b = new Foo();
Foo c = a;
if(a == b ){ // false }
if(a == c ){ // true }
if(b == c ){ // false }