随便写写20220323

pArr[2]=10 ; //pArr[2]== *(pArr+2) ==*(a+2) ==a[2]

它存放的是一维数组第一个元素的地址

下标和指针的关系:如果p是个指针变量,则p[i]永远等价于*(p+i)

确定一个一维数组需要两个参数:①数组的第一个元素的地址 ②数组的长度

/* 如果p是个指针变量,并且p存放了普通变量i的地址,则p指向了普通变量i

*p就是以p的内容为地址的变量

*/

j=*p; //等价于 j=i;

printf("i=%d,j=%d\n,i,j");

附注:*的含义

1.乘法

2.定义指针变量//定义了一个名字叫p的变量,int*表示p只能存放int变量的地址

3.指针运算符

该运算符放在已经定义好的指针变量的前面,如果p是一个已经定义好的指针变量,则*p表示以p的内容为地址的变量

基本类型指针【重点】

int *p;  //p是变量的名字,int * 表示p变量存放的是int类型变量的地址

          //int *p;不表示定义了一个名字叫做*p的变量

         //int *p;应该这样理解:p是变量名,p变量的数据类型是int *类型

        //所谓int *类型 ,实际就是存放int变量地址的类型

int i=3;

int j;

p=&i;

/* 1.p保存了i的地址,因此p指向i

2.p不是i,i也不是p,更准确的说:修改p的值不影响i的值,

3.如果一个指针变量指向了某个普通变量,则 *指针变量  就完全等同于 普通变量

*/

例子:

如果p是个指针变量,并且p存放了普通变量i的地址,则p指向了普通变量i。*p就完全等同于i

或者说:在所有出现*p的地方都可以替换成i,在所有出现i的地方都可以替换成*p

Person p3=p1;//将p1变量保存的对象地址赋给p3,导致p1和p3指向了堆空间中的同一个对象实体。

在这里可以将p3当作p1的小名,两个指向的是同一个东西

p3和p1画等号了,p1的地址给了p3,相当于p1p3为一个人

p3想当于p1创建了一个快捷图标

//调用属性:“对象.方法

p1.name=“TOM”;

P1.isMale=true;

system.out.println(p1.name);

//调用方法:“对象.方法”

p1.eat();

p1.sleep();

p1.talk(“Chinese”);

方法的分类:按照是否有形参及返回值

无返回值有返回值
无形参void方法名(){}返回值的类型 方法名(){}
有形参void方法名(形参列表){}返回值的类型 方法名(形参列表){}

方法的声明:权限修饰符  返回值类型   方法名(形参列表){

方法体

}

public   class  CustomerTest {

}

如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量

如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不使用return,但是,如果使用话,只能“return”;表示结束此方法的意思。、

java4种权限修饰符:public、private、缺省、protect

这个return我刚学,但是我觉得很有必要,因为可以结束方法。

方法的重载(overlaod)loading...

1.定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

“两同一不同”:同一个类、相同方法名

                        参数列表不同:参数的个数不同,参数类型不同

2.举例:Arrays类中重载的sort() /binarySearch()

3.判断是否是重载:跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系!

public class OverLoadTest{

//如下的4个方法构成了重载
public void getSum(int i,int j){
    System.out.println(i+j);

}

public void getSum(double d1,double d2){
}

public void getSum(string s,int i){
}
public void getSum(int i,String s){
}



}

方法的形参的传递机制:值传递

1.形参:方法定义时,声明的小括号内的参数

  实参:方法调用时,实际传递给形参的数据

2.值传递机制:

递归方法的使用:

1.递归方法:一个方法体内调用它自身。

2.方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。递归一定要向已知方向递归。否则这种递归就变成了无穷递归,类似于死循环。

//提供关于属性age的get和set方法

public int getAge(){

     return age;
}
public void setAge(int a){

     age =a;
}

this可以理解为当前的对象

把.看做“”真的好理解多了  //this.age

补充:同一个包下,不能命名同名的接口、类

          不同的包下,可以命名同名的接口、类

import关键字的使用:

import:导入

1.在源文件中显示的使用import结构导入指定包下的类、接口

2.声明在包的声明和类的声明之间

3.如果需要导入多个结构,则并列写出即可

4.可以使用“xxx.*”方式表明可以调用xxx包下的所有结构 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值