java基础之面向对象常见问题整理Word下载.docx
- 文档编号:21643529
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:32
- 大小:112.67KB
java基础之面向对象常见问题整理Word下载.docx
《java基础之面向对象常见问题整理Word下载.docx》由会员分享,可在线阅读,更多相关《java基础之面向对象常见问题整理Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
结束方法的。
*返回值:
就是功能的结果,由return带给调用者。
classDemo1_Method{
publicstaticvoidmain(String[]args){
}
/*
*C:
*
修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2...){
方法体语句;
return返回值;
}
*D:
*修饰符:
*返回值类型:
*方法名:
*参数:
*实际参数:
*形式参数;
*参数类型:
*参数名:
*方法体语句:
*return:
*返回值:
*/
}
如何写一个方法?
/*
如何写一个方法
*1,明确返回值类型(要返回什么数据?
这个功能到底要不要返回值?
)
*2,明确参数列表(需要你传入什么数据?
根据数据类型来写参数)
案例演示
*需求:
求两个数据之和的案例
方法调用图解
*/
classDemo2_Sum{
/*inta=10;
intb=20;
intsum=a+b;
System.out.println(sum);
intc=30;
intd=40;
intsum2=c+d;
System.out.println(sum2);
intsum=add(10,20);
//add(30,40);
//有返回值方法的单独调用,没有意义
System.out.println(add(30,40));
//这样调用是可以,but如果需要用这个结果不推荐这样调用
//盘子=炒菜(地沟油,苏丹红,镉大米,烂白菜);
求两个整数的和
1,整数的和结果应该还是整数
2,有两个未知内容参与运算
如何写方法
1,明确返回值类型
2,明确参数列表
publicstaticintadd(inta,intb){//inta=10,intb=20
returnsum;
//如果有返回值必须用return语句带回
盘子炒菜(油,调料,米,菜){
炒菜的动作
return一盘菜;
方法怎么调用的?
方法调用(有具体返回值)
*a:
单独调用,一般来说没有意义,所以不推荐。
*b:
输出调用,但是不够好。
因为我们可能需要针对结果进行进一步的操作。
*c:
赋值调用,推荐方案。
方法不调用不执行
方法与方法是平级关系,不能嵌套定义
方法定义的时候参数之间用逗号隔开
*d:
方法调用的时候不用在传递数据类型
*e:
如果方法有明确的返回值,一定要有return带回一个值
键盘录入两个数据,返回两个数中的较大值
键盘录入两个数据,比较两个数是否相等
importjava.util.Scanner;
classTest1_Method{
Scannersc=newScanner(System.in);
//创建键盘录入对象
System.out.println("
请输入第一个整数:
"
);
intx=sc.nextInt();
//将键盘录入的整数存储在x中
请输入第二个整数:
inty=sc.nextInt();
//将键盘录入的整数存储在y中
//intmax=getMax(x,y);
//System.out.println(max);
booleanb=isEquals(x,y);
System.out.println(b);
返回连个整数的较大值
1,明确返回值类型int
2,明确参数列表inta,intb
publicstaticintgetMax(inta,intb){
returna>
b?
a:
b;
判断两个整数是否相等
1,明确返回值类型boolean
publicstaticbooleanisEquals(inta,intb){//isEquals是否相等
returna==b;
return关键字有什么用?
作用一:
写在方法里面,直接终止方法,方法不再往下执行代码.
作用二:
如果用在返回值类型的方法上,如果方法返回类型为void,可以加可以不加,通常都不加,系统会默认给上.
核心作用:
一般用于有返回值的方法上,用于返回跟方法返回类型的值.
publicstaticbooleanisEquals(inta,intb){//isEquals是否相等
例如这个方法:
方法返回值类型是布尔类型,我们return语句跟的就是布尔类型的结果.
方法的形式参数是基本数据类型跟引用数据类型有何不同?
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
Java中到底是传值还是传址
1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))
classTest3_Array{
a:
+a+"
b:
+b);
//a=10,b=20
change(a,b);
//?
int[]arr={1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
publicstaticvoidchange(inta,intb){//a=10,b=20
a=b;
//a=20
b=a+b;
//b=40
//a=20,b=40
publicstaticvoidchange(int[]arr){//1,4,3,8,5
for(intx=0;
x<
arr.length;
x++){
if(arr[x]%2==0){
arr[x]*=2;
}
}
方法的形式参数是类名的时候如何调用?
方法的参数是类名publicvoidprint(Students){}//print(newStudent());
*如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
classDemo1_Student{
print(10);
Students=newStudent();
//创建对象,并将对象的地址值赋值给s
print(s);
publicstaticvoidprint(intx){//基本数据类型当作形式参数
System.out.println(x);
publicstaticvoidprint(Studentstu){//引用数据类型当作形式参数
stu.name="
张三"
;
stu.age=23;
stu.speak();
classStudent{
Stringname;
//姓名
intage;
//年龄
publicvoidspeak(){
System.out.println(name+"
..."
+age);
•如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
什么是方法重载?
重载:
方法名相同,参数列表不同,与返回值类型无关
重载的分类
1,参数个数不同
2,参数类型不同
顺序不同
classDemo4_Overload{//overload重载
doublesum1=add(10,20.1);
System.out.println(sum1);
intsum2=add(10,20,30);
doublesum3=add(12.3,13);
System.out.println(sum3);
1,返回值类型int
2,参数列表inta,intb
publicstaticdoubleadd(inta,doubleb){
returna+b;
求三个整数的和
2,参数列表inta,intb,intc
publicstaticintadd(inta,intb,intc){
returna+b+c;
求两个小数的和
1,返回值类型double
2,参数列表doublea,doubleb
publicstaticdoubleadd(doublea,intb){
怎么写一个方法重载?
(案例演示)
比较两个数据是否相等。
*参数类型分别为两个int类型,两个double类型,并在main方法中进行测试
classTest3_Overload{
booleanb1=isEquals(10,10);
System.out.println(b1);
booleanb2=isEquals(10.5,10.5);
System.out.println(b2);
比较两个数据是否相等
1,返回值类型boolean
2,参数列表inta,intb
publicstaticbooleanisEquals(inta,intb){
2,参数列表doublea,doubleb
publicstaticbooleanisEquals(doublea,doubleb){
什么是面向对象,什么是面向过程,区别是什么?
面向对象是基于面向过程的。
在开发过程中,要完成特定的功能就去找相应的对象,如果找不到就创建相应的对象,使用对象,维护完善对象。
面向对象和面向过程的区别
面向过程强调的是功能行为;
面向对象将功能封装成对象,强调的是具备功能的对象,面向对象有三大特征:
封装,继承,多态
面向对象的特点是什么,从哪几个角度去说面向对象?
*
是一种更符合我们思想习惯的思想
b:
可以将复杂的事情简单化
c:
将我们从执行者变成了指挥者
角色发生了转换
什么是类?
什么是成员变量?
什么是成员方法?
我们学习编程是为了什么
*为了把我们日常生活中实物用学习语言描述出来,在java里面,我们学习用类去描述一个实体
我们如何描述现实世界事物
*属性就是该事物的描述信息(事物身上的名词)
*行为就是该事物能够做什么(事物身上的动词)
Java中最基本的单位是类,Java中用class描述事物也是如此
*成员变量就是事物的属性
*成员方法就是事物的行为
定义类其实就是定义类的成员(成员变量和成员方法)
成员变量和以前定义变量是一样的,只不过位置发生了改变。
在类中,方法外。
成员方法和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
*E:
类和对象的概念
类:
是一组相关的属性和行为的集合
什么是对象?
创建对象有什么用?
*b:
对象:
是该类事物的具体体现(类是抽象的,而对象是实际的,如人类是一种类,你是一个具体的人)
举例:
*类学生类
*对象具体的某个学生就是一个对象
作用:
简单理解,创建对象出来一般用于调用类里面的成员方法,使用类里面的功能方法.
成员变量和局部变量有什么区别?
在类中的位置不同
*成员变量:
在类中方法外
*局部变量:
在方法定义中或者方法声明上
在内存中的位置不同
在堆内存(成员变量属于对象,对象进堆内存)
在栈内存(局部变量属于方法,方法进栈内存)
生命周期不同
随着对象的创建而存在,随着对象的消失而消失
随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
有默认初始化值
没有默认初始化值,必须定义,赋值,然后才能使用。
*注意事项:
*局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
*基本数据类型变量包括哪些:
byte,short,int,long,float,double,boolean,char
*引用数据类型变量包括哪些:
数组,类,接口,枚举
classDemo2_Person{
Personp=newPerson();
p.speak();
E:
使用方式不一样
对象名.成员变量来调用
直接调用。
classPerson{
//成员变量
intnum;
intnum=10;
//x和num都是局部变量
System.out.println(name);
System.out.println(num);
什么是栈内存,什么是堆内存?
什么是方法区?
栈(掌握)
*存储局部变量,在main方法里面运行的方法需要进栈内存压栈
(特点:
先进后出)
局部变量:
定义在方法声明上(方法的参数里的变量)和方法中的变量
堆(掌握)
*存储new出来的数组或对象
方法区
*类(.class字节码文件)加载和静态成员变量和静态成员方法加载的地方
本地方法区
*和系统相关
寄存器
*给CPU使用
classDemo3_Array{
int[]arr=newint[3];
//动态初始化,创建3块连续的空间
System.out.println(arr);
arr[0]=10;
arr[1]=20;
System.out.println(arr[0]);
什么是构造方法?
构造方法概述和作用
*作用:
创建对象(new对象)时候调用,给对象的数据(属性)进行初始化
构造方法格式特点
方法名与类名相同(大小也要与类名一致)
没有返回值类型,连void都没有
没有具体的返回值return;
classDemo1_Constructor{//Constructor构造
//在一创建对象的时候,系统就帮我调用了构造方法
//p.Person();
//构造方法不能用对象调用
p.show();
Personp2=newPerson();
//再次创建对象
p2.show();
*给对象的数据(属性)进行初始化
privateStringname;
privateintage;
//构造方法
publicPerson(){
//System.out.println("
HelloWorld!
//return;
//构造方法也是有return语句的,格式是return;
name="
age=23;
publicvoidshow(){
为什么自己写了有参构造方法还要再写个无参构造方法?
1,如果自己不写构造方法,系统会默认帮我们添加一个无参的构造方法(可以使用XJAD反编译工具看到)
2,如果自己写了有参构造或无参构造,系统将不会再帮我们提供无参构造方法.
3,开发中如果写了有参构造,必须养成习惯自己写无参构造,因为底层在调用我们代码时候,会调用无参构造,后面知识点会涉及到.
什么是构造方法重载?
A:
构造方法的重载(就是构造方法名称一样,参数个数或者类型不同,或者参数顺序不同)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 面向 对象 常见问题 整理